banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

CentOS6.x/7.x配置Nginx系统服务

使用源代码编译方式安装 Nginx 的时候,肯定不如用用 yum 方式安装来得便捷,CentOS 的系统服务需要自行配置。 自行配置 Nginx 为 CentOS 的系统服务时,出于进程管理考虑需要首先配置 pid,出于安全考虑建议修改 nginx 的运行用户。

创建 nginx.pid 文件用于 nginx 主进程

touch /usr/local/nginx/logs/nginx.pid

修改 conf/nginx.conf, 设置 pid 和 user

user nobody;
pid logs/nginx.pid;

CentOS6.x 配置 nginx 系统服务 创建一个 /etc/init.d/nginx 文件

touch /etc/init.d/nginx
chmod 755 /etc/init.d/nginx

/etc/init.d/nginx 文件中写入以下内容, 源文件取自 yum 方式安装后的文件,不过需要自己修改一下 nginx 的指向位置 nginx="/usr/local/nginx/sbin/nginx” NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf”

#!/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 binary

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

config file

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

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

lockfile=/var/lock/subsys/nginx

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 -QUIT
retval=$?
echo
[ $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

使用 Service 管理 nginx 服务

开启 nginx 服务
/etc/init.d/nginx start
service nginx start

配置开机启动

chkconfig nginx on

CentOS7.x 配置 nginx 系统服务 创建一个 /lib/systemd/system/nginx.service 文件

touch /lib/systemd/system/nginx.service
chmod 755 /lib/systemd/system/nginx.service

在 nginx.service 中写入以下内容

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
#PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/sbin/nginx -s reload
ExecStop=/usr/local/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

如果使用 systemctl 来守护 nginx 的主进程的话,可以设置 PIDFile #PIDFile=/usr/local/nginx/logs/nginx.pid

最后 systemctl daemon-reload 一下即可

# 刷新 Service 配置
systemctl daemon-reload

使用 systemctl 管理 nginx.service

开启 nginx 服务
systemctl start nginx.service

配置开机启动

systemctl enable nginx.service

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.