添加nginx作为系统服务
前言
創(chuàng)建一個(gè)腳本,該腳本將改變nginx守護(hù)進(jìn)程,讓nginx以系統(tǒng)服務(wù)的形式啟動(dòng),守護(hù)進(jìn)程以后將由標(biāo)準(zhǔn)的命令控制且在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)。
System V腳本
大多數(shù)基于linux的操作系統(tǒng),使用的是System-V風(fēng)格的init守護(hù)進(jìn)程,啟動(dòng)進(jìn)程由init進(jìn)程管理。
守護(hù)進(jìn)程遵循運(yùn)行級(jí)別的原則(run level),系統(tǒng)運(yùn)行級(jí)別表示當(dāng)前計(jì)算機(jī)狀態(tài)。
| 0 | 系統(tǒng)停止 |
| 1 | 單用戶模式(援救模式) |
| 2 | 多用戶模式(不支持NFS) |
| 3 | 完整的多用戶模式 |
| 4 | 沒有使用 |
| 5 | 圖形界面按模式 |
| 6 | 重啟系統(tǒng) |
關(guān)閉系統(tǒng):
| [root@localhost ~]# telinit 0 |
重啟系統(tǒng):
| [root@localhost ~]# telinit 6 |
對(duì)于每一個(gè)運(yùn)行級(jí)別的轉(zhuǎn)換都會(huì)有一組服務(wù)被執(zhí)行,系統(tǒng)停止時(shí)它的運(yùn)行級(jí)別為0,一旦開啟將轉(zhuǎn)換到默認(rèn)啟動(dòng)級(jí)別,系統(tǒng)默認(rèn)啟動(dòng)級(jí)別是在etc/inittab文件下配置的。
如何將一個(gè)服務(wù)安排到指定運(yùn)行級(jí)別?
對(duì)于每一個(gè)運(yùn)行級(jí)別,在/etc/rc.d目錄都包含要執(zhí)行的腳本:
rco.d-rc6.d并不是真實(shí)的文件,他們的符號(hào)鏈接會(huì)指向/etc/init目錄下的腳本名,服務(wù)的啟動(dòng)腳本存儲(chǔ)在/etc/init目錄下。
init腳本
init腳本是作為系統(tǒng)啟動(dòng)服務(wù)的腳本,腳本必須接收兩個(gè)命令:start和stop,在系統(tǒng)啟動(dòng)時(shí),如果該服務(wù)的啟動(dòng)計(jì)劃級(jí)別正是系統(tǒng)運(yùn)行級(jí)別,那么init守護(hù)進(jìn)程將運(yùn)行該腳本。
手動(dòng)執(zhí)行腳本:
| [root@localhost rc.d]# service nginx start |
或系統(tǒng)未提供service命令:
| [root@localhost rc.d]# /etc/init.d/nginx start |
為nginx建立init腳本
目錄/etc/init.d實(shí)際上是/etc/rc.d/init.d的符號(hào)鏈接,因此在/etc/init.d目錄下新建文件nginx(需要root權(quán)限):
| [root@localhost rc.d]# vi /etc/init.d/nginx |
腳本內(nèi)容如下:
#!/bin/bash # # chkconfig: - 85 15 # description: Nginx is a World Wide Web server. # processname: nginxnginx=/usr/local/nginx/sbin/nginx conf=/usr/local/nginx/conf/nginx.conf case $1 in start) echo -n "Starting Nginx" $nginx -c $conf echo " done" ;; stop) echo -n "Stopping Nginx" killall -9 nginx echo " done" ;; test) $nginx -t -c $conf ;; reload) echo -n "Reloading Nginx" ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP echo " done" ;; restart) $0 stop $0 start ;; show) ps -aux|grep nginx ;; *) echo -n "Usage: $0 {start|restart|reload|stop|test|show}" ;; esac安裝nginx的init腳本
授予該腳本可執(zhí)行權(quán)限:
| [root@localhost rc.d]# chmod +x /etc/init.d/nginx |
然后就可以開啟nginx:
| [root@localhost init.d]# service nginx start |
或:
| [root@localhost init.d]# /etc/init.d/nginx start |
最后一步是設(shè)置該腳本在適當(dāng)?shù)倪\(yùn)行級(jí)別開機(jī)自啟,這依賴于操作系統(tǒng),主要針對(duì)廣泛使用的兩種操作系統(tǒng)家族:基于Debain的Debain/Ubuntu/other家族和基于Red hat的Red hat/Fedora/Centos/other家族。
基于Debian的發(fā)布
一條命令即可完成系統(tǒng)級(jí)別初始化腳本:
| # update-rc.d -f nginx defaults |
該命令將在默認(rèn)系統(tǒng)運(yùn)行級(jí)別上建立鏈接,默認(rèn)級(jí)別是指重啟(reboot)和關(guān)閉(shutdown)級(jí)別,對(duì)于這兩種級(jí)別,該腳本會(huì)執(zhí)行stop參數(shù),對(duì)于其他級(jí)別,則傳遞start參數(shù)而運(yùn)行。
基于Red Hat的發(fā)布
添加服務(wù):
| # chkconfig –add nginx |
檢驗(yàn)該服務(wù)的運(yùn)行級(jí)別:
| # chkconfig –list nginx |
使用ntsysv管理系統(tǒng)服務(wù)
ntsysv列出了所有能夠計(jì)劃在系統(tǒng)啟動(dòng)時(shí)執(zhí)行的服務(wù),可以開啟它們,也可以禁用它們。
| # yum install ntsysv -y |
使用ntsysv:
| # ntsysv |
總結(jié)
以上是生活随笔為你收集整理的添加nginx作为系统服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度站点属性怎么设置?PC移动站/独立移
- 下一篇: 系统服务