前言
完成前期的准備工作后,在部署階段需要配置服務器或對象存儲服務。
對象存儲和服務器對比
對象存儲平台
國內有阿里雲OSS、騰訊COS、又拍雲、七牛雲等。國外有Github Pages、Netlify、Azure、Google等,其中Github Pages免費,但是有個說法:Github屏蔽百度爬蟲,使用Github Pages的網站百度搜不到。
對象存儲平台也可以做為Markdown圖床,配合CDN,加快圖片加載速度。
筆者的服務器是阿里家的,所以對象存儲也用了阿里雲OSS。
阿里雲OSS部署參考
對象存儲的配置非常簡單,哈嘍沃德先生的這篇文章已經很詳細了,按照這篇文章可以完成上傳操作。文章最后的“閱讀全文”可以繞過,方法是在Chrome控制台的Network中找到readmore.js
,右鍵Block request URL
。
需要注意的是,上傳的Bucket要設置為公共讀權限,同時限制Refer,做好防盜鏈。
服務器
平時有使用VPS需求,可選擇使用VPS。
對比
- 對象存儲:
優點:便宜,不需要搭建環境。
缺點:流量費用,要考慮圖床的防盜鏈。 - 服務器:
優點各種踩坑😔,可以提升技能。 - 費用:
對象存儲平台不考慮流量費:7.2元/年。
阿里雲服務器,學生黨及年齡小於等於24歲:10元/月;不滿足以上條件的個人:121元/月。 - 結論
對象存儲上手簡單,成本低。
服務器環境
不使用服務器部署的讀者,可跳過這部分。
操作系統Ubuntu
更新安裝源
apt update
修改hostname
hostnamectl --static set-hostname localhost
重啟
安裝軟件
apt install git
apt install nginx
apt install rz
apt install unzip
SSH安全配置
- 安全組限制IP通過SSH遠程登陸。如果使用Github Action安全組無法限制,Github Action的服務器部署在Azure上,官方文檔中包含幾萬行IP段,不適合做限制。
- 修改22端口。由於第一個原因,只能修改端口。否則Massscan3分鍾全網段掃描,觸發SSH口令暴力破解,幾乎每天都有告警。注意!修改之后,確定其他端口可以登陸再關閉22端口。
- 配置SSH key避免執行*git*命令時用戶密碼驗證。
Nginx配置
root權限啟動。避免前端訪問403的問題。/etc/nginx/nginx.conf
中啟動配置的用戶與實際啟動nginx的用戶需要保持一致,可修改為低權限用戶啟動。
如果Nginx版本存在漏洞,以root權限啟動,存在被拿到root權限的風險。
配置 /etc/nginx/nginx.conf
...
include /etc/nginx/conf.d/*.conf;
# 注釋下面這行。如果sites-enabled/路徑下存在默認配置文件,可能覆蓋/etc/nginx/conf.d/default.conf配置
# include /etc/nginx/sites-enabled/*;
...
配置 /etc/nginx/conf.d/default.conf
配置
server {
listen 80;
server_name www.xiaodejiyi.com xiaodejiyi.com; # 注意www和沒有www都要配置
index index.html index.htm;
root /var/www/html/public;
location / {
root /var/www/html/public;
index index.html;
}
error_page 404 /404.html;
}
上傳
將blog的public
目錄壓縮為zip格式,使用rz
命令上傳到服務器上,unzip
命令解壓到Nginx配置的網站根目錄中。
正常情況下,域名解析到CDN,CDN設置源站IP。到這一部可以訪問域名,查看部署結果。如果blog配置未完成,可以先上傳一張圖片做測試。