1.1 實現目標
- 在學習或者進行nginx測試的時候,耗費在 nginx -s reload/stop 上的命令時間不少,修改任意內容都須要從新啓動或者中止啓動,基本上狀態就是在下面5個狀態間來回切換
- vim nginx.conf
- 修改nginx.conf
- 保存nginx.conf
- 重啓nginx
- 刷新瀏覽器...
- 重啓的這個時間其實咱們能夠用來作更多事情,好比更專一於內容而不是中止、重啓,通常程序員不喜歡重複的東西
- 咱們能夠簡化重啓這一步驟,實現nginx.conf有任何修改就自動重啓nginx,實現自動加載
- 下面咱們就手摸手來實現nginx配置文件修改自動加載
- 【注意】:如下全部操做均基於Linux(centos7)版本,不適用於windows
1.2 技術難度
- 技術難度:★★
- 原理難度:★
2、技術實現
2.1 所需技術
- Linux基本命令知識
- Linux Shell編程知識
2.2 技術原理
- 配置文件有修改,那麼配置文件的修改時間必定會改變
- 那麼咱們能夠記錄修改時間,若是當前文件的修改時間和上次記錄的修改時間不一致,絕壁是修改了配置文件,這個時候咱們就能夠執行nginx的重啓命令,而後把當前時間做爲最後一次修改時間
- 循環以上操做,就能夠實現nginx配置文件有修改後自動加載最新配置文件
- 上面原理僅供參考,還有不少方式也能夠實現,這種比較簡單粗暴
2.3 腳本演示
- 啓動腳本(參考腳本使用先寫好shell腳本),將會進入等待
2. 修改nginx.conf文件而後保存,而後能夠看到配置文件從新加載 3. 而後刷新瀏覽器看看,能夠看到已經刷新,動態效果演示 5. 歡迎各位朋友評論區留言html
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 複製代碼
3、腳本使用
- 新建shell腳本,例如
vim reload.sh
複製代碼
- 把腳本拷貝進去
- 修改對應nginx路徑而後保存腳本
- 修改權限
chmod 744 reload.sh
複製代碼
- 啓動腳本
./reload.sh
複製代碼
- 啓動以後當前窗口會進入等待狀態,配置文件修改以後會自動加載,退出ctrl+c中斷便可
創做不易,若是對你們有所幫助,但願你們點贊支持,有什麼問題也能夠在評論區裏討論😄~nginx
來自 「開源獨尊 」 ,連接:
https://ym.baisou.ltd/post/805.html