给Nginx脚本制作一个service启动服务

NGINX IT敢客 3周前 (08-01) 118次浏览 已收录 0个评论 扫描二维码

        许多时候,我们手动安装的 nginx 都是不能用 service 等方式启动的,虽然也可以加入脚本到/etc/rc.local(redhat7 以后的版本需要 chmod +x /etc/rc.local)中让其执行!比如

[root@example ~]# echo “/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf” >> /etc/rc.local 

但是还是有许多执拗的人喜欢用 service 命令来启动!这里就提供一个脚本可以将 nginx 服务加入到 service 方式启动。新建一个 nginx 文件

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
test "$NETWORKING" = "no" && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
test -f /etc/sysconfig/nginx && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
test -x $nginx || exit 5
test -f $NGINX_CONF_FILE || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
test $retval -eq 0 && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
test $retval -eq 0 && rm -f $lockfile
return $retval
killall -9 nginx
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status > /dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|
configtest}"
exit 2
esac

      然后赋予执行权限并添加开启启动等等

[root@example ~]# cp nginx /etc/init.d/
[root@example ~]# chmod 755 /etc/init.d/nginx
[root@example ~]# chkconfig --add nginx

当我们对 Nginx 的配置文件做过一些更改后,希望在不中断当前服务的情况下,进行
一个平滑的重启,可以使用如下命令。

[root@example ~]# service nginx reload

脚本中的 reload 函数会首先对配置文件做一个语法格式的检查,使用的是如下的命令

[root@example init.d]# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

当语法格式检查通过后,会对 Nginx 发出一个标记为1或者说是 HUP 的信号源,Nginx 收到后会关闭旧进程,打开新进程,如果有进程正在为一个用户提供服务,则会等待
这次服务结束。
当然我们也可以使用

service nginx restart 

的方式去重启服务。它会先尝试以比较温柔
的方式去结束进程,如果有进程没有被结束掉,那么 killall -9 nginx 。
关于停止 Nginx ,直接

service nginx stop

即可,或者 kill 死所有的 Nginx 进程。


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:给 Nginx 脚本制作一个 service 启动服务
喜欢 (0)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址