Nginx實戰-監控nginx.conf配置文件,配置文件修改自動重啓nginx

1.1 實現目標

  1. 在學習或者進行nginx測試的時候,耗費在 nginx -s reload/stop 上的命令時間不少,修改任意內容都須要從新啓動或者中止啓動,基本上狀態就是在下面5個狀態間來回切換
    • vim nginx.conf
    • 修改nginx.conf
    • 保存nginx.conf
    • 重啓nginx
    • 刷新瀏覽器...
  2. 重啓的這個時間其實咱們能夠用來作更多事情,好比更專一於內容而不是中止、重啓,通常程序員不喜歡重複的東西
  3. 咱們能夠簡化重啓這一步驟,實現nginx.conf有任何修改就自動重啓nginx,實現自動加載
  4. 下面咱們就手摸手來實現nginx配置文件修改自動加載
  5. 【注意】:如下全部操做均基於Linux(centos7)版本,不適用於windows

1.2 技術難度

  1. 技術難度:★★
  2. 原理難度:★

2、技術實現

2.1 所需技術

  1. Linux基本命令知識
  2. Linux Shell編程知識

2.2 技術原理

  1. 配置文件有修改,那麼配置文件的修改時間必定會改變
  2. 那麼咱們能夠記錄修改時間,若是當前文件的修改時間和上次記錄的修改時間不一致,絕壁是修改了配置文件,這個時候咱們就能夠執行nginx的重啓命令,而後把當前時間做爲最後一次修改時間
  3. 循環以上操做,就能夠實現nginx配置文件有修改後自動加載最新配置文件
  4. 上面原理僅供參考,還有不少方式也能夠實現,這種比較簡單粗暴

2.3 腳本演示

  1. 啓動腳本(參考腳本使用先寫好shell腳本),將會進入等待

在這裏插入圖片描述 2. 修改nginx.conf文件而後保存,而後能夠看到配置文件從新加載 在這裏插入圖片描述 3. 而後刷新瀏覽器看看,能夠看到已經刷新,動態效果演示 在這裏插入圖片描述 5. 歡迎各位朋友評論區留言nginx

2.4 shell腳本

  1. 只須要修改下面的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、腳本使用

  1. 新建shell腳本,例如
vim reload.sh
複製代碼
  1. 把腳本拷貝進去
  2. 修改對應nginx路徑而後保存腳本
  3. 修改權限
chmod 744 reload.sh
複製代碼
  1. 啓動腳本
./reload.sh
複製代碼
  1. 啓動以後當前窗口會進入等待狀態,配置文件修改以後會自動加載,退出ctrl+c中斷便可
相關文章
相關標籤/搜索