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中断便可