1. 程式人生 > 其它 >|NO.Z.00008|——————————|ManageMent|——|Linux&服務管理.V04|

|NO.Z.00008|——————————|ManageMent|——|Linux&服務管理.V04|



[LinuxSystemEnd:Linux&服務管理.V04]                                                          [Applications.LinuxSystemEnd] [|Linux|系統管理|服務管理|獨立的服務|基於xinetd服務|httpd啟動指令碼分析|原始碼包服務管理|服務優化建議|]








一、原始碼包安裝的服務管理
### --- 原始碼包服務的啟動管理

[root@server21 ~]# /usr/local/apache2/bin/apachectl start|stop|restart|…

### --- 原始碼包服務的自啟動管理

[root@server21 ~]# vim /etc/rc.d/rc.local
~~~     修改自啟動檔案
# !/bin/sh
 
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/usr/local/apache2/bin/apachectl start

二、讓原始碼包服務被服務管理命令識別

### --- 讓原始碼包服務被服務管理命令識別
~~~     那麼我們就做個試驗,看看如何把原始碼包安裝的 apche 變為和 RPM 包安裝的 apache 一樣,
~~~     可以被 service、chkconfig、ntsysv 命令識別吧。試驗如下:
~~~     解除安裝 RPM 包的 apache,避免對試驗產生影響(生產伺服器上慎用 yum 解除安裝,
~~~     有可能造成伺服器崩潰)。

### --- 解除安裝 RPM 包的 apache 服務
[root@server21 ~]# yum -y remove httpd

~~~     httpd: 未被識別的服務
~~~     因為服務被解除安裝,所以 service 命令不能識別 httpd 命令
 
[root@server21 ~]# service httpd start

### --- 安裝原始碼包的 apache 服務,並啟動
~~~     安裝原始碼包的 apache 服務,具體安裝方法參考軟體安裝章節。
~~~     啟動原始碼包的 apache,檢視埠確定已經啟動

[root@server21 ~]# /usr/local/apache2/bin/apachectl start
[root@server21 ~]# netstat -tlun | grep 80
tcp     0       0 :::80     :::*        LISTEN

### --- 讓原始碼包的 apache 服務能被 service 命令管理啟動
~~~     service 命令其實只是在/etc /init.d/目錄中查詢是否有服務的啟動指令碼,
~~~     所以我們只需要做個軟連結把原始碼包的啟動指令碼連結到/etc/init.d/目錄中,
~~~     就能被 service命令管理了。為了大家的習慣,我把軟連結檔案起名為 apache,
~~~     不過注意這不是 RPM 包的 apache 哦!
~~~     雖然 RPM 包的 apache 被解除安裝,但是 service 命令也能夠生效。

[root@server21 ~]# ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
[root@server21 ~]# service apache restart

### --- 讓原始碼包的 apache 服務能被 chkconfig 命令管理自啟動
~~~     修改原始碼包 apache 的啟動指令碼(注意此檔案是軟連結,所以修改的還是原始碼包啟動指令碼)

[root@server21 ~]# vi /etc/init.d/apache
# !/bin/sh
#  
# chkconfig: 35 86 76
# 指定 httpd 指令碼可以被 chkconfig 命令管理
# 格式是: chkconfig: 執行級別 啟動順序 關閉順序
# 這裡我們讓 apache 在 3 和 5 級別能被 chkconfig 命令管理,啟動順序是 S86,關閉順序是 K76
# (自定順序,不要和系統中已有的啟動程式順序衝突)
# description: source package apache
# 說明,內容隨意
# 以上兩句話必須加入,才能被 chkconfig 命令識別
# …省略部分輸出…
~~~     讓 chkconfig 命令能夠管理原始碼包安裝的 apache。
[root@server21 ~]# chkconfig --add apache
 
~~~     很神奇吧,雖然 RPM 包的 apche 被刪除了,
~~~     但是 chkconfig 命令可以管理原始碼包 apache了
[root@server21 ~]# chkconfig --list | grep apache
apache      0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
### --- 讓 ntsysv 命令可以管理原始碼包 apache

~~~     ntsysv 命令其實是和 chkconfig 命令使用同樣的管理機制,
~~~     也就是說 ntsysv 已經可以進行原始碼包 apache 的自啟動管理了。
~~~     如圖 14-3 所示:圖 14-3 ntsysv 識別 apache
### --- 總結下,如果想讓原始碼包服務被 service 命令識別並管理,
~~~     只要做個軟連結把啟動指令碼連結到/etc/init.d/目錄中即可。
~~~     要想讓原始碼包服務被 chkconfig 命令識別,除了需要把服務的啟動指令碼鏈
~~~     接到/etc/init.d/目錄中,還要修改這個啟動指令碼,在啟動指令碼的開頭加入:

~~~     chkconfig: 執行級別 啟動順序 關閉
~~~     description: 說明
### --- 然後需要使用“chkconfig --add 服務名”的方式把服務加入 chkconfig 命令管理中。
~~~     命令格式如下:
### --- 選項:
~~~     --add: 把服務加入 chkconfig 命令的管理
~~~     --del: 把服務從 chkconfig 命令的管理中刪除

[root@server21 ~]# chkconfig [選項] [服務名]
### --- 例:把 apache 服務從 chkconfig 命令的管理中刪除
 
[root@server21 ~]# chkconfig –del httpd









===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)