:clap: 本系列持續更新中,歡迎關注:https://github.com/wi1dcard/laravel-deploy...。
由於課程上下文關聯比較緊密,在開始前請先閱讀 本文。
你的支援是我寫作的動力;關注我的客官們,請在右上角點個贊,將會讓文章在首頁展示,幫助更多人。
感謝 :clap: !
在先前的小節中,我們已經成功地完成了手動部署中所需要的「安裝執行環境」、「部署應用程式碼」,還差最後臨門一腳「配置執行環境」。
Nginx 站點配置
根據 Laravel 5.8 部署文件 的說明,我們可直接拿到一份現成的 Nginx 配置檔案,稍作調整即可:
server {
listen 80;
server_name laravel-deployment.wi1dcard.cn; # 此為必修改項,請替換為伺服器公網 IP 或域名
root /var/www/deployment/public; # 此為必修改項,請注意指向站點根目錄的 public 子目錄
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # 請注意核對 PHP 版本
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
提示:關於以上 Nginx 配置項的解析,可參見 這篇部落格。
通常我們僅需修改 server_name
、root
和 fastcgi_pass
;請注意閱讀 #
後的註釋。
我們將以上內容儲存到本地檔案(例如 deployment.conf
)內,使用 SCP 即可上傳至伺服器:
$ scp ~/deployment.conf root@laravel-deployment.wi1dcard.cn:/etc/nginx/sites-enabled/
提示:如果你熟悉
vi
等文字編輯器,也可以直接在伺服器上操作,此處不再展開。
其中:
~/deployment.conf
請替換為配置檔案的實際儲存路徑,該路徑位於本地。/etc/nginx/sites-enabled/
為存放 Nginx 站點配置的目錄,該目錄位於伺服器。
過載 Nginx
配置完成後,請務必重啟(Restart)或過載(Reload)Nginx。
什麼是 過載?實際上,直接重啟 Nginx 是不安全的。原因有二:
- 在 Nginx 程式結束再重新執行的過程中,將造成極短時間的閃斷。雖然這一時間通常很短(一般來說在秒級別),但倘若面對大量併發,還是極易造成一部分請求無法訪問,即服務中斷。
- 在重啟的過程中,若此時 Nginx 恰好正在處理請求,與客戶端的 TCP 連線將會斷開,客戶端無法收到正確響應,造成前後端資訊不一致。
在之前的小節中,已經提到重啟 Nginx 的方法;
$ service nginx restart
同樣地,亦可使用 service
命令過載 Nginx:
$ service nginx reload
另一種等效的方法是:
$ nginx -s reload
最終效果
在瀏覽器內輸入伺服器公網 IP 或域名並訪問,你將會看到 Laravel 應用的預設主頁:
恭喜你,部署成功。
本作品採用《CC 協議》,轉載必須註明作者和本文連結