Nginx 是一个很强大的高性能Web和反向代理服务器。虽然使用命令行可以对Nginx进行各种操作,比如启动等,但是还是根据不太方便。下面介绍在Linux下安装后,如何设置开机自启动。
首先,在linux系统的/etc/init.d/目录下创建Nginx文件,使用如下命令:
- vim/etc/init.d/Nginx
在脚本中添加如下命令:
- #!/bin/sh
- #
- #Nginx-thisscriptstartsandstopstheNginxdaemon
- #
- #chkconfig:-8515
- #description:NginxisanHTTP(S)server,HTTP(S)reverse\
- #proxyandIMAP/POP3proxyserver
- #processname:Nginx
- #config:/etc/Nginx/Nginx.conf
- #config:/etc/sysconfig/Nginx
- #pidfile:/var/run/Nginx.pid
- #Sourcefunctionlibrary.
- ./etc/rc.d/init.d/functions
- #Sourcenetworkingconfiguration.
- ./etc/sysconfig/network
- #Checkthatnetworkingisup.
- ["$NETWORKING"="no"]&&exit0
- 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(){
- #makerequireddirectories
- user=`$Nginx-V2>&1|grep"configurearguments:"|sed's/[^*]*--user=\([^]*\).*/\1/g'-`
- if[-z"`grep$user/etc/passwd`"];then
- useradd-M-s/bin/nologin$user
- fi
- options=`$Nginx-V2>&1|grep'configurearguments:'`
- foroptin$options;do
- if[`echo$opt|grep'.*-temp-path'`];then
- value=`echo$opt|cut-d"="-f2`
- if[!-d"$value"];then
- #echo"creating"$value
- mkdir-p$value&&chown-R$user$value
- fi
- fi
- done
- }
- start(){
- [-x$Nginx]||exit5
- [-f$Nginx_CONF_FILE]||exit6
- make_dirs
- echo-n$"Starting$prog:"
- daemon$Nginx-c$Nginx_CONF_FILE
- retval=$?
- echo
- [$retval-eq0]&&touch$lockfile
- return$retval
- }
- stop(){
- echo-n$"Stopping$prog:"
- killproc$prog-QUIT
- retval=$?
- echo
- [$retval-eq0]&&rm-f$lockfile
- return$retval
- }
- restart(){
- configtest||return$?
- stop
- sleep1
- 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/null2>&1
- }
- case"$1"in
- start)
- rh_status_q&&exit0
- $1
- ;;
- stop)
- rh_status_q||exit0
- $1
- ;;
- restart|configtest)
- $1
- ;;
- reload)
- rh_status_q||exit7
- $1
- ;;
- force-reload)
- force_reload
- ;;
- status)
- rh_status
- ;;
- condrestart|try-restart)
- rh_status_q||exit0
- ;;
- *)
- echo$"Usage:$0{start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
- exit2
- esac
这个脚本其实也不是我写的,谁写的呢,Nginx官方写的,脚本地址:http://wiki.nginx.org/RedHatNginxInitScript,不过要注意,如果你是自定义编译安装的Nginx,需要根据您的安装路径修改下面这两项配置:
Nginx=”/usr/sbin/Nginx” 修改成Nginx执行程序的路径。
Nginx_CONF_FILE=”/etc/Nginx/Nginx.conf” 修改成配置文件的路径。
- chmoda+x/etc/init.d/Nginx
然后,就可以通过该脚本对Nginx服务进行管理了:
使用chkconfig进行管理
上面的方法完成了用脚本管理Nginx服务的功能,但是还是不太方便,比如要设置Nginx开机启动等。这时可以使用chkconfig来设置。
先将Nginx服务加入chkconfig管理列表:
- chkconfig--add/etc/init.d/Nginx
加完这个之后,就可以使用service对Nginx进行启动,重启等操作了。
设置终端模式开机启动:
- chkconfigNginxon
另外这里还有一个网友分享的脚本(脚本地址:http://blog.163.com/qsc0624@126/blog/static/140324073201312734548701/):
- #!/bin/bash
- #NginxStartupscriptfortheNginxHTTPServer
- #itisv.0.0.2version.
- #chkconfig:-8515
- #description:Nginxisahigh-performancewebandproxyserver.
- #Ithasalotoffeatures,butit'snotforeveryone.
- #processname:Nginx
- #pidfile:/var/run/Nginx.pid
- #config:/usr/local/Nginx/conf/Nginx.conf
- Nginxd=/usr/local/Nginx/sbin/Nginx
- Nginx_config=/usr/local/Nginx/conf/Nginx.conf
- Nginx_pid=/var/run/Nginx.pid
- RETVAL=0
- prog="Nginx"
- #Sourcefunctionlibrary.
- ./etc/rc.d/init.d/functions
- #Sourcenetworkingconfiguration.
- ./etc/sysconfig/network
- #Checkthatnetworkingisup.
- [${NETWORKING}="no"]&&exit0
- [-x$Nginxd]||exit0
- #StartNginxdaemonsfunctions.
- start(){
- if[-e$Nginx_pid];then
- echo"Nginxalreadyrunning...."
- exit1
- fi
- echo-n$"Starting$prog:"
- daemon$Nginxd-c${Nginx_config}
- RETVAL=$?
- echo
- [$RETVAL=0]&&touch/var/lock/subsys/Nginx
- return$RETVAL
- }
- #StopNginxdaemonsfunctions.
- stop(){
- echo-n$"Stopping$prog:"
- killproc$Nginxd
- RETVAL=$?
- echo
- [$RETVAL=0]&&rm-f/var/lock/subsys/Nginx/var/run/Nginx.pid
- }
- #reloadNginxservicefunctions.
- reload(){
- echo-n$"Reloading$prog:"
- #kill-HUP`cat${Nginx_pid}`
- killproc$Nginxd-HUP
- RETVAL=$?
- echo
- }
- #Seehowwewerecalled.
- case"$1"in
- start)
- start
- ;;
- stop)
- stop
- ;;
- reload)
- reload
- ;;
- restart)
- stop
- start
- ;;
- status)
- status$prog
- RETVAL=$?
- ;;
- *)
- echo$"Usage:$prog{start|stop|restart|reload|status|help}"
- exit1
- esac
- exit$RETVAL
使用此脚本的时候,也同样需要将配置路径修改成自己的