- 在學習或者進行nginx測試的時候,耗費在 nginx -s reload/stop 上的命令時間很多,修改任意内容都需要重新啟動或者停止啟動,基本上狀态就是在下面5個狀态間來回切換vim nginx.conf修改nginx.conf保存nginx.conf重啟nginx刷新浏覽器...
- 重啟的這個時間其實我們可以用來做更多事情,比如更專注于内容而不是停止、重啟,一般程序員不喜歡重複的東西
- 我們可以簡化重啟這一步驟,實現nginx.conf有任何修改就自動重啟nginx,實現自動加載
- 下面我們就手摸手來實現nginx配置文件修改自動加載
- 【注意】:以下所有操作均基于Linux(centos7)版本,不适用于windows
- 技術難度:★★
- 原理難度:★
2.1 所需技術
- Linux基本命令知識
- Linux Shell編程知識
2.2 技術原理
- 配置文件有修改,那麼配置文件的修改時間一定會改變
- 那麼我們可以記錄修改時間,如果當前文件的修改時間和上次記錄的修改時間不一緻,絕壁是修改了配置文件,這個時候我們就可以執行nginx的重啟命令,然後把當前時間作為最後一次修改時間
- 循環以上操作,就可以實現nginx配置文件有修改後自動加載最新配置文件
- 上面原理僅供參考,還有很多方式也可以實現,這種比較簡單粗暴
2.3 腳本演示
- 啟動腳本(參考腳本使用先寫好shell腳本),将會進入等待
2. 修改nginx.conf文件然後保存,然後可以看到配置文件重新加載
3. 然後刷新浏覽器看看,可以看到已經刷新。
2.4 shell腳本
- 隻需要修改下面的nginx安裝路徑即可
#!/bin/bash
# nginx安裝目錄,結尾沒有/
BASE_PATH="/opt/Nginx/nginx-1.8-1"
# 配置文件位置
CONFIG_FILE="$BASE_PATH/conf/nginx.conf"
# NGINX啟動文件所在目錄,結尾沒有/
NGINX_PATH="$BASE_PATH/sbin"
# 獲取初始修改時間
last_time=`stat $CONFIG_FILE | grep "Modify"`
stop=0
# 當前修改時間
current_time="";
# 死循環,可以根據需要更改
while [ $stop -le 1 ]; do
# 獲取當前修改時間
current_time=`stat $CONFIG_FILE | grep "Modify"`
# 當前時間和上次修改時間是否一緻,不一緻則修改
if [ "$last_time" != "$current_time" ]; then
echo "------------------ Config File Change ----------------"
echo "Last_time $last_time"
echo "Curr_time $current_time"
# 記錄上次修改時間為當前時間
last_time=$current_time
# 進入nginx二進制文件目錄
cd $NGINX_PATH
# 重新加載,加載的配置文件為上級的conf下的配置文件,根據自己修改
./nginx -s reload
# 關閉後再重啟,自定義配置文件目錄,使用配置的文件路徑
# ./nginx -s stop
# ./nginx -c $CONFIG_FILE
# 更多自定義操作...
echo "------------------------------------------------------"
fi
done
- 新建shell腳本,例如
vim reload.sh
- 把腳本拷貝進去
- 修改對應nginx路徑然後保存腳本
- 修改權限
chmod 744 reload.sh
- 啟動腳本
./reload.sh
- 啟動之後當前窗口會進入等待狀态,配置文件修改之後會自動加載,退出ctrl c中斷即可