nginx 加入contos服务启动 service

本文介绍了一个用于管理Nginx服务的Shell脚本,包括启动、停止、重启及状态检查等功能,并详细展示了如何配置Nginx作为系统服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载于

把下面的代码保存为nginx 没有后缀名的文件

放在/etc/init.d/nginx 文件里面

3.设置权限并启动nginx :
chmod 755 /etc/init.d/nginx
/etc/init.d/nginx start
//添加为系统服务
chkconfig –add nginx
//查看服务拉几个模式开启了次服务
  chkconfig –list nginx
//下面是开启345模式启动php-fpm 就是系统自动启动的时候自动开启此服务
 chkconfig –level 345 nginx on
最后,给出nginx 以服务的方式启动、停止和重启:
service nginx start
service nginx stop
service nginx reload

#!/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.
[ "$NETWORKING" = "no" ] && exit 0

#nginx="/usr/sbin/nginx"
#四哥:设定nginx程序路径
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

#NGINX_CONF_FILE="/etc/nginx/nginx.conf"
#四哥:设定nginx配置文件路径
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

#lockfile=/var/lock/subsys/nginx
#四哥:设定nginx锁文件
lockfile=/var/lock/nginx.lock

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest_q || configtest || return 6
    stop
    start
}

reload() {
    configtest_q || configtest || return 6
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    echo
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

configtest_q() {
    configtest >/dev/null 2>&1
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

# Upgrade the binary with no downtime.
upgrade() {
    #local pidfile="/var/run/${prog}.pid"
    #四哥:设定pid文件路径
    local pidfile="/var/run/nginx/nginx.pid"
    local oldbin_pidfile="${pidfile}.oldbin"

    configtest_q || configtest || return 6
    echo -n $"Staring new master $prog: "
    killproc $nginx -USR2
    retval=$?
    echo 
    sleep 1
    if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]];  then
        echo -n $"Graceful shutdown of old $prog: "
        killproc -p ${oldbin_pidfile} -QUIT
        retval=$?
        echo 
        return 0
    else
        echo $"Something bad happened, manual intervention required, maybe restart?"
        return 1
    fi
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    force-reload|upgrade) 
        rh_status_q || exit 7
        upgrade
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    status|status_q)
        rh_$1
        ;;
    condrestart|try-restart)
        rh_status_q || exit 7
        restart
       ;;
    *)
        echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart}"
        exit 2
esac
<think>我们正在讨论在CentOS系统上配置Nginx开机自启动的方法。根据引用内容,CentOS7和CentOS8在设置开机自启动时有一些不同的步骤,但都推荐使用systemd(CentOS7及以后版本)来管理服务。以下将分步骤说明如何设置。###步骤1:确保Nginx已正确安装首先,确保Nginx已经正确安装在你的CentOS系统上。可以通过以下命令检查:```bashnginx-v```如果未安装,请先安装Nginx。###步骤2:创建Nginx的systemd服务文件(如果不存在)在CentOS7及以上版本中,通常使用systemd来管理服务Nginx安装后,一般会自带一个服务文件`nginx.service`,位于`/usr/lib/systemd/system/`目录下。如果没有,我们可以手动创建。使用文本编辑器创建或编辑服务文件:```bashsudovi/usr/lib/systemd/system/nginx.service```将以下内容复制到文件中(如果文件不存在则新建,存在则检查内容是否类似):```ini[Unit]Description=ThenginxHTTPandreverseproxyserverAfter=network.targetremote-fs.targetnss-lookup.target[Service]Type=forkingPIDFile=/run/nginx.pid#注意:下面的路径需要根据实际安装路径调整ExecStartPre=/usr/sbin/nginx-tExecStart=/usr/sbin/nginxExecReload=/bin/kill-sHUP$MAINPIDExecStop=/bin/kill-sQUIT$MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.target```注意:-`PIDFile`:这个路径通常是`/run/nginx.pid`,但有时也可能是`/var/run/nginx.pid`,请根据实际Nginx配置确认。-`ExecStartPre`:在启动前测试配置文件是否正确。-`ExecStart`:启动Nginx的命令。-确保路径正确(可以通过`whichnginx`查看nginx命令的路径)。###步骤3:重新加载systemd配置创建或修改服务文件后,需要重新加载systemd配置:```bashsudosystemctldaemon-reload```###步骤4:设置开机自启动使用以下命令使Nginx在开机时自动启动:```bashsudosystemctlenablenginx```###步骤5:启动Nginx服务并检查状态现在可以启动Nginx服务(如果尚未启动):```bashsudosystemctlstartnginx```检查服务状态:```bashsudosystemctlstatusnginx```如果状态显示为`active(running)`,则表示服务已成功启动。###步骤6:验证开机自启动为了验证开机自启动是否设置成功,可以重启系统:```bashsudoreboot```重启后,检查Nginx是否已经自动运行:```bashsystemctlstatusnginx```###注意事项1.对于CentOS8,步骤与CentOS7相同,因为两者都使用systemd。2.如果之前使用的是其他方法(如将启动命令添加到`/etc/rc.local`),建议改用systemd,因为systemd是CentOS7及以后版本的标准服务管理工具。3.如果遇到问题,请检查服务文件中的路径是否正确,以及Nginx配置文件是否有错误(可以通过`nginx-t`测试配置)。###相关命令总结-启动Nginx:`sudosystemctlstartnginx`-停止Nginx:`sudosystemctlstopnginx`-重启Nginx:`sudosystemctlrestartnginx`-重新加载配置(不重启服务):`sudosystemctlreloadnginx`-查看状态:`sudosystemctlstatusnginx`-设置开机自启动:`sudosystemctlenablenginx`-关闭开机自启动:`sudosystemctldisablenginx`###引用说明以上步骤参考了CentOS系统下设置Nginx开机自启动的通用方法[^3][^4][^5]。§§相关问题§§1.如何解决Nginx开机自启动失败的问题?2.除了systemd,还有哪些方法可以设置服务开机自启动?3.如何查看系统启动服务的日志以排查自启动问题?</think>### 在CentOS上设置Nginx开机自启动 #### 方法1:使用systemctl(推荐,适用于CentOS7/8) 1. **创建systemd服务文件** 新建配置文件(如果不存在): ```bash sudo vi /usr/lib/systemd/system/nginx.service ``` 写入以下内容(注意PID路径需匹配实际位置): ```ini [Unit] Description=The nginx HTTP server After=network.target [Service] Type=forking PIDFile=/run/nginx.pid # 查看实际PID路径:grep "pid" /etc/nginx/nginx.conf ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID [Install] WantedBy=multi-user.target ``` 2. **重载systemd并启用服务** ```bash sudo systemctl daemon-reload # 重载配置 sudo systemctl enable nginx # 设置开机自启动 sudo systemctl start nginx # 立即启动服务 sudo systemctl status nginx # 验证状态 ``` #### 方法2:通过init.d脚本(兼容旧版) ```bash # 创建启动脚本 sudo vi /etc/init.d/nginx ``` 粘贴以下内容: ```bash #!/bin/sh # chkconfig: 2345 90 10 nginx="/usr/sbin/nginx" # 使用 which nginx 确认路径 case "$1" in start) $nginx ;; stop) $nginx -s stop ;; restart) $nginx -s reload ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac ``` ```bash # 设置权限并添加自启 sudo chmod +x /etc/init.d/nginx sudo chkconfig --add nginx # 加入服务列表 sudo chkconfig nginx on # 启用自启动 ``` #### 验证自启动 ```bash # 重启测试 sudo reboot # 重启后检查状态 systemctl status nginx # 方法1验证 ps aux | grep nginx # 方法2验证 ``` ### 关键命令说明 | 命令 | 作用 | |------|------| | `systemctl enable nginx` | 设置开机自启动 | | `systemctl disable nginx` | 取消开机自启动 | | `systemctl status nginx` | 查看服务状态 | | `journalctl -u nginx` | 查看启动日志 | | `chkconfig nginx on` | (旧版)设置自启动 | > **注意**: > - PID路径必须正确(通过 `grep pid /etc/nginx/nginx.conf` 确认)[^3] > - 若使用非默认安装路径,需修改脚本中的nginx二进制路径 > - CentOS8建议优先使用systemd方法[^2][^5] ### 常见问题解决 1. **启动失败**: ```bash sudo nginx -t # 检查配置语法 journalctl -xe # 查看详细错误日志 ``` 2. **端口冲突**: ```bash sudo ss -tulnp | grep :80 # 检查端口占用 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值