编写Nginx服务控制脚本

./configure
--user=www
--group=www
--prefix=/application/nginx
--sbin-path=/application/nginx/sbin
--conf-path=/application/nginx/conf/nginx.conf
--error-log-path=/application/nginx/logs/error.log
--http-log-path=/application/nginx/logs/access.log
--pid-path=/var/run/nginx.pid
--lock-path=/var/lock/subsys/nginx
--with-openssl=/app/openssl-1.0.2p
--with-http_stub_status_module
--with-http_ssl_module
--with-http_gzip_static_module
--with-pcre

所以nginx的管理命令为

启动: /application/nginx/sbin/nginx

停止:/application/nginx/sbin/nginx -s stop

重新加载:/application/nginx/sbin/nginx -s reload

**注意 reload只有Nginx启动时才能平稳加载

[[email protected] sbin]# ./nginx -s reload
nginx: [error] open() "/application/nginx/logs/nginx.pid" failed (2: No such file or directory)

判断Nginx服务是否正在运行的方法:

当Nginx服务正在运行,会有nginx.pid这个文件:

[[email protected] sbin]# cat /application/nginx/logs/nginx.pid
1664

当Nginx服务停止,就找不到该文件

[[email protected] sbin]# ./nginx -s stop
[[email protected] sbin]# cat /application/nginx/logs/nginx.pid
cat: /application/nginx/logs/nginx.pid: No such file or directory

[[email protected] tmp]# cat nginx.sh
#!/bin/bash
[ -e /etc/init.d/functions ]&& . /etc/init.d/functions
pidfile=/application/nginx/logs/nginx.pid
Start_Nginx (){
        if [ -f $pidfile ];
then
        echo "Nginx is Running"
else
        /application/nginx/sbin/nginx > /dev/null 2>&1
        action  "Nginx is Started" /bin/true
        fi
}

Stop_Nginx (){
        if [ -f $pidfile ];
then
        /application/nginx/sbin/nginx -s stop > /dev/null 2>&1
        action "Nginx is Stopped" /bin/true
else
        action "Nginx is Stopped" /bin/false
        fi
}

Reload_Nginx (){
        if [ -f $pidfile ];
then
        /application/nginx/sbin/nginx -s reload > /dev/null 2>&1
        action "Nginx is Reloaded" /bin/true
else
        echo "Can‘t Open $pidfile ,no such file or directory"
fi
}
case $1 in
start)
        Start_Nginx
        RETVAL=$?
        ;;
stop)
        Stop_Nginx
        RETVAL=$?
        ;;
restart)
        Stop_Nginx
        sleep 3
        Start_Nginx
        RETVAL=$?
        ;;
reload)
        Reload_Nginx
        RETVAL=$?
        ;;
*)
        echo "USAGE:$0 {start|stop|restart|reload}"
        exit 1
esac
exit $RETVAL

给予该脚本执行权限

然后给/etc/rc.d/rc.local执行权限

在rc.local文件最后加上

/tmp/nginx.sh start

这样开机就可以自动启动nginx了

原文地址:https://www.cnblogs.com/hzdwwzz/p/10006585.html

时间: 2024-10-03 22:39:03

编写Nginx服务控制脚本的相关文章

利用BashShell编写Nginx服务控制脚本

使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的服务控制脚本. 可以使用的选项有: start  启动 stop  停止 reload 重载 restart  重启 status   状态 test 检查配置文件 1.创建脚本文件并添加执行权限 # touch /etc/init.d/nginx # chmod +x /etc/init.d/nginx 2

运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

运维经验分享(七)-- Linux Shell之ChatterServer服务控制脚本第三次优化

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

运维经验分享(五)-- 改进的java进程管理的服务控制脚本

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

Linux Shell之ChatterServer服务控制脚本二次优化

最近开发人员提出新的需求,想将ChatterServer服务控制脚本放到ChatterServer根目录下的bin目录下,并向一次性可以部署多个实例,因此这一个需求引发了多个改变: 1.不再使用service进行控制,仍然保留status.start.stop和restart功能 2.BASEDIR不再使用绝对路径而要使用相对路径,例如BASEDIR=.. 3.SERVICEPORT要从ChatterServer根目录下的conf目录中的文件中读取 4.日志目录logs将不再手动创建,控制脚本需

Linux Shell之ChatterServer服务控制脚本

本脚本是ChatterServer的服务控制脚本,即能通过service命令来控制ChatterServer的启动.停止.重新启动以及状态查看,就像mysql有/etc/init.d/mysql或/etc/init.d/mysqld一样,只是这个ChatterServer的服务控制脚本写起来更加困难,有些信息的捕获和判断更加复杂,原因还是主要与ChatterServer的运行方式和启动过程中发生的一些事情有关,这个在脚本的注释中已经充分的标注清楚了. 由于ChatterServer运行在Ubun

为程序编写Service服务管理脚本

SaltStack通过Service方式管理服务,对于通用的服务,如mysql.apache.php等,自带service服务管理脚本,SaltStack可以方便管理.但是对于一些公司自有的服务,可能这些服务在开发之初,并没有考虑日后会采用Service脚本进行服务管理,为了统一Salt对服务的管理,我采用的方式是为每一个程序编写Service脚本. 这里主要注意以下两个问题: 1.这里有部分机器的优化,放在/etc/profile和/root/.bashrc中,而这两个文件在用户登陆的时候,会

为编译安装的nginx提供init服务控制脚本

生产环境中nginx多为编译安装,但源码包不提供init脚本 从这里下载相应系统的脚本:http://wiki.nginx.org/InitScripts,并作简单修改 修改后内容如下 1 #!/bin/bash 2 # 3 # nginx - this script starts and stops the nginx daemon 4 # 5 # chkconfig: - 85 15 6 # description: Nginx is an HTTP(S) server, HTTP(S) r

keepalived+nginx配置文件及检查nginx服务的脚本

原地址:http://www.cnblogs.com/fansik/p/6248684.html 脚本一启动的速度要快一些哦,因为脚本二要判断两次以后才启动哎 这两个一般配合keepalived使用 脚本一: #!/bin/bash #author:fansik #description:check nginx service run=`ps -C nginx --no-header | wc -l` if [ $run -eq 0 ] then /etc/rc.d/init.d/nginx s