centos系统中nginx启动脚本和chkconfig管理

在安装完nginx后,重新启动需要“kill -HUP nginx进程编号”来进行重新加载,显然十分不方便。如果能像apache一样,直接通过脚本进行管理就方便多了。

nginx官方早就想好了,也提供了这个脚本,地址:http://wiki.nginx.org/RedHatNginxInitScript。这里将管理脚本收录在这里:

 代码如下 复制代码

#!/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"
prog=$(basename $nginx)
 
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
 
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
 
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -z "`grep $user /etc/passwd`" ]; then
   useradd -M -s /bin/nologin $user
   fi
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
   if [ `echo $opt | grep '.*-temp-path'` ]; then
   value=`echo $opt | cut -d "=" -f 2`
   if [ ! -d "$value" ]; then
   # echo "creating" $value
   mkdir -p $value && chown -R $user $value
   fi
   fi
   done
}
 
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
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
}
 
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

将以上脚本保存到/etc/init.d/nginx文件,并修改两个地方:

nginx=”/usr/sbin/nginx” 修改成nginx执行程序的路径。
NGINX_CONF_FILE=”/etc/nginx/nginx.conf” 修改成配置文件的路径。
保存后,就可以通过该脚本对nginx服务进行管理了:

 代码如下 复制代码
$ /etc/init.d/nginx start
$ /etc/init.d/nginx stop
$ /etc/init.d/nginx reload

...
使用chkconfig进行管理

上面的方法完成了用脚本管理nginx服务的功能,但是还是不太方便,比如要设置nginx开机启动等。这时可以使用chkconfig来设置。

先将nginx服务加入chkconfig管理列表:

 代码如下 复制代码
chkconfig --add /etc/init.d/nginx

加完这个之后,就可以使用service对nginx进行启动,重启等操作了。

 代码如下 复制代码
$ service nginx start
$ service nginx stop
$ service nginx reload

...
设置终端模式开机启动:

 代码如下 复制代码

$ chkconfig --level 3 nginx on

时间: 2024-09-29 00:38:55

centos系统中nginx启动脚本和chkconfig管理的相关文章

ubuntu系统中nginx启动脚本_nginx

复制代码 代码如下: #! /bin/sh### BEGIN INIT INFO# Provides:          nginx# Required-Start:    $remote_fs $syslog# Required-Stop:     $remote_fs $syslog# Default-Start:     2 3 4 5# Default-Stop:      0 1 6# Short-Description: nginx init.d dash script for Ub

CENTOS系统中IFTOP安装脚本详解

iftop是一个linux很好用的带宽流量监控工具. 会显示每个与本机连接的IP,以及实时的流量. 使用方法: iftop -i eth0 帮助: iftop --help iftop 流量监控工具 安装脚本: #!/bin/sh cd /tmp yum install make gcc autoconf flex byacc  libpcap ncurses ncurses-devel libpcap-devel -y wget http://www.ex-parrot.com/pdw/ift

ubuntu系统中Nginx环境配置安装步骤

安装nginx sudo apt-get install nginx Ubuntu安装之后的文件结构大致为:     所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下     程序文件在/usr/sbin/nginx     日志放在了/var/log/nginx中     并已经在/etc/init.d/下创建了启动脚本nginx     默认的虚拟主机的目录设置在了/var/www/nginx-default (有的

httpd系统自带启动脚本详解

市面上有很多关于脚本的书籍和教程,好是好,可写的越来越像编程书.其中不仅有算法的介绍,比如递归,冒泡法,高效,冗余.还伴有非常高深的案例,看的是云里雾里,头昏脑胀.看完以后感觉如下,书是好书,例子是好例子,算法更是好算法,可多少有些脱离实际,提高的可以,干活的不成.对于没有任何程序开发基础的同志来说更是如此. 可那些书就不看了吗?答案是否定的,这些书上所撰写的内容虽然晦涩可都是好东西.但攘外必先安内,在看这些书之前,我认为,更重要的应该先要搞清楚系统本身的脚本.作为发行版系统中使用的脚本,肯定都

centos系统中VPS忘记密码该如何解决?

  centos系统中VPS忘记密码该如何解决?          下面我就随便拿一个VPS来测试,本文以CentOS5.*系统为例,分别在2台KVM架构VPS上测试,他们是:XSVPS.COM(堪萨斯)和VPSPLAZA.COM(新加坡) 假设我们忘记了root密码,首先,登陆到SolusVM管理面板,我们先执行重启,然后VNC连接上去. 可以直接在面板中点击VNC按钮,也可以记录VNC信息后使用工具,我这里直接后台执行. 注意上面这一步,重启了就立马去VNC,动作稍快点,因为这个启动菜单很快

PowerShell因为在此系统中禁止执行脚本的解决方法_PowerShell

在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". 所在位置 行:1 字符: 17 + E:\Test\test.ps1 <<<< + CategoryInfo : NotSpecified: (:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException p

CentOS系统中怎么修改默认SSH端口?

  CentOS系统中怎么修改默认SSH端口?          默认的centOS默认端口是22,时间久了你会找到很多日志文件,这是扫描攻击留下的错误日志.那么今天我们要做的就是改成只有自己知道的数字,这样降低了被扫描到的几率,也就等于提高了安全性. 1.登陆SSH修改配置文件,输入如下命令 vi /etc/ssh/sshd_config 会出现如下提示,大家能够看到#port 22,代表默认端口22.按下键盘的a,vi命令中a是编辑,你按下a之后进入编辑状态,这时候可以用键盘的上下键移动绿色

在CentOS系统中安装RPMforge的方法

  RPMforge 是 Dag.Dries 和其它软件包的组合.它们为 CentOS 提供了超过 4000 个软件包,包括 mplayer.xmms-MP3和其它流行的媒体播放工具.RPMforge 不是红帽子 Linux 产品或 CentOS 的组成部分,但它是为这些 Linux 套件而设计的. 注释:因为这个安装源不是 CentOS 本身的组成部分,所以有关技术支持的问题应当向 RPMforge 的维护者发送. RPMforge 软件包以 rpm 格式提供,并且一般都是可用的.必需注意,有

win7-WIN7系统中无法启动telnet的问题?

问题描述 WIN7系统中无法启动telnet的问题? WIN7系统,已经在控制面板-程序-打开或关闭WINDOWS功能-中选中了TELNET服务器和客户端,然后在services.msc中选中telnet,并最终选择 启动 时,无法启动,错误提示附图,在CMD中使用NET START TELNET也是不行,怎么回事? 解决方案 给你个地址 解决方案二: 解决方案三: 参考地址 解决方案四: 查看系统日志,出错的信息是什么