一、实现目标
1.1 实现目标
在学习或者进行nginx测试的时候,耗费在 nginx -s reload/stop 上的命令时间很多,修改任意内容都需要重新启动或者停止启动,基本上状态就是在下面5个状态间来回切换 a. vim nginx.conf b. 修改nginx.conf c. 保存nginx.conf d. 重启nginx e. 刷新浏览器… 重启的这个时间其实我们可以用来做更多事情,比如更专注于内容而不是停止、重启,一般程序员不喜欢重复的东西 我们可以简化重启这一步骤,实现nginx.conf有任何修改就自动重启nginx,实现自动加载 下面我们就手摸手来实现nginx配置文件修改自动加载 【注意】:以下所有操作均基于Linux(centos7)版本,不适用于windows
1.2 技术难度
技术难度:★★ 原理难度:★
二、技术实现
2.1 所需技术
Linux基本命令知识 Linux Shell编程知识
2.2 技术原理
配置文件有修改,那么配置文件的修改时间一定会改变 那么我们可以记录修改时间,如果当前文件的修改时间和上次记录的修改时间不一致,绝壁是修改了配置文件,这个时候我们就可以执行nginx的重启命令,然后把当前时间作为最后一次修改时间 循环以上操作,就可以实现nginx配置文件有修改后自动加载最新配置文件 上面原理仅供参考,还有很多方式也可以实现,这种比较简单粗暴
2.3 脚本演示
启动脚本(参考脚本使用先写好shell脚本),将会进入等待 修改nginx.conf文件然后保存,然后可以看到配置文件重新加载 然后刷新浏览器看看,可以看到已经刷新,动态效果演示 欢迎各位朋友评论区留言
2.4 shell脚本
只需要修改下面的nginx安装路径即可
#!/bin/bash
BASE_PATH= "/opt/Nginx/nginx-1.8-1"
CONFIG_FILE= "$BASE_PATH /conf/nginx.conf"
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
cd $NGINX_PATH
./nginx -s reload
echo "------------------------------------------------------"
fi
done
三、脚本使用
新建shell脚本,例如
vim reload.sh
把脚本拷贝进去 修改对应nginx路径然后保存脚本 修改权限
chmod 744 reload.sh
启动脚本
./reload.sh
启动之后当前窗口会进入等待状态,配置文件修改之后会自动加载,退出ctrl+c中断即可