# 前言

nginx 安装成功后,可用使用 安装路径 /sbin/nginx -s start|reopen|reopen 等命令
也可以加入 service 或 systemctl 方便管理

# service 配置流程

编辑编辑
vi /etc/init.d/nginx
软链接 /etc/init.d/ 指向 /etc/rc.d/init.d/
只要把下面的路径 改成自己的安装路径 /usr/local/webserver
NGINX_BIN='/usr/local/webserver/nginx/sbin/nginx'
CONFIG='/usr/local/webserver/nginx/conf/nginx.conf'
保存后修改权限
chmod 755 nginx
设置开启启动
/sbin/chkconfig nginx on
service nginx status 查看是否配置完成

#! /bin/sh
# chkconfig: 2345 55 25
# Description: Startup script for nginx webserver on Debian. Place in /etc/init.d and
# run 'update-rc.d -f nginx defaults', or use the appropriate command on your
# distro. For CentOS/Redhat run: 'chkconfig --add nginx'
### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO
# Author:   licess
# website:  https://lnmp.org
NGINX_BIN='/usr/local/webserver/nginx/sbin/nginx'
CONFIG='/usr/local/webserver/nginx/conf/nginx.conf'
case "$1" in
    start)
        echo -n "Starting nginx... "
        PID=$(ps -ef | grep "$NGINX_BIN" | grep -v grep | awk '{print $2}')
        if [ "$PID" != "" ]; then
            echo "nginx (pid $PID) already running."
            exit 1
        fi
        $NGINX_BIN -c $CONFIG
        if [ "$?" != 0 ]; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
        ;;
    stop)
        echo -n "Stoping nginx... "
        PID=$(ps -ef | grep "$NGINX_BIN" | grep -v grep | awk '{print $2}')
        if [ "$PID" = "" ]; then
            echo "nginx is not running."
            exit 1
        fi
        $NGINX_BIN -s stop
        if [ "$?" != 0 ] ; then
            echo " failed. Use force-quit"
            $0 force-quit
        else
            echo " done"
        fi
        ;;
    status)
        PID=$(ps -ef | grep "$NGINX_BIN" | grep -v grep | awk '{print $2}')
        if [ "$PID" != "" ]; then
            echo "nginx (pid $PID) is running..."
        else
            echo "nginx is stopped."
            exit 0
        fi
        ;;
    force-quit|kill)
        echo -n "Terminating nginx... "
        PID=$(ps -ef | grep "$NGINX_BIN" | grep -v grep | awk '{print $2}')
        if [ "$PID" = "" ]; then
            echo "nginx is is stopped."
            exit 1
        fi
        kill $PID
        if [ "$?" != 0 ]; then
            echo " failed"
            exit 1
        else
            echo " done"
        fi
        ;;
    restart)
        $0 stop
        sleep 1
        $0 start
        ;;
    reload)
        echo -n "Reload nginx... "
        PID=$(ps -ef | grep "$NGINX_BIN" | grep -v grep | awk '{print $2}')
        if [ "$PID" != "" ]; then
            $NGINX_BIN -s reload
            echo " done"
        else
            echo "nginx is not running, can't reload."
            exit 1
        fi
        ;;
    configtest)
        echo -n "Test nginx configure files... "
        $NGINX_BIN -t
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|reload|status|configtest|force-quit|kill}"
        exit 1
        ;;
esac

# systemctl 配置流程

systemctl 兼容 service
即 systemctl 可用读取 /etc/init.d/ 下的程序
完成前面的步骤 可用直接执行 systemctl daemon-reload
systemctl status nginx 查看
另外
Centos7 的服务 systemctl 脚本存放在:/usr/lib/systemd/ 目录下,有系统(system)和用户(user)之分,一般需要开机不登录就能运行的程序,就存放在 /usr/lib/systemd/system/ 目录下
/etc/systemd/system/ 软链接 指向 /usr/lib/systemd/system/
vi /etc/systemd/system/nginx.service
/usr/local/webserver 换成自己的安装路径
systemctl daemon-reload 重载 systemctl 配置
systemctl status nginx 查看状态
systemctl enable nginx 相当于 /sbin/chkconfig nginx on 设置开启启动

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/webserver/nginx/nginx.pid
ExecStart=/usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf
ExecReload=/usr/local/webserver/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false
[Install]
WantedBy=multi-user.target