在安装完nginx后,重新启动需要“kill -HUP nginx进程编号”来进行重新加载,显然十分不方便。如果能像apache一样,直接通过脚本进行管理就方便多了。
nginx官方早就想好了,也提供了这个脚本,地址:http://wiki.nginx.org/RedHatNginxInitScript。这里将管理脚本收录在这里:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/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