新聞中心

我們提供的服務有:網(wǎng)站設計制作、成都網(wǎng)站設計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、霞浦ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的霞浦網(wǎng)站制作公司
源碼包服務的啟動管理
源碼包服務中所有的文件都會安裝到指定目錄當中,并且沒有任何垃圾文件產(chǎn)生(linux 的特性),所以服務的管理腳本程序也會安裝到指定目錄中。源碼包服務的啟動管理方式就是在服務的安裝目錄中找到管理腳本,然后執(zhí)行這個腳本。
問題來了,每個服務的啟動腳本都是不一樣的,我們怎么確定每個服務的啟動腳本呢?還記得在安裝源碼包服務時,我們強調需要査看每個服務的說明文檔嗎(一般是 INSTALL 或 READEM)?在這個說明文檔中會明確地告訴大家服務的啟動腳本是哪個文件。
我們用 apache 服務來舉例。一般 apache 服務的安裝位置是 /usr/local/apache2/ 目錄,那么 apache 服務的啟動腳本就是 /usr/local/apache2/bin/apachectl 文件(查詢 apache 說明文檔得知)。啟動命令如下:
[root@localhost ~]# /usr/local/apache2/bin/apachectl start|stop|restart|...
#源碼包服務的啟動管理
例如:
[root@localhost ~]# /usr/local/apache2/bin/apachectl start
#會啟動源碼包安裝的apache服務
注意,不管是源碼包安裝的 apache,還是 RPM 包默認安裝的 apache,雖然在一臺服務器中都可以安裝,但是只能啟動一因為它們都會占用 80 端口。
源碼包服務的啟動方法就這一種,比 RPM 包默認安裝的服務要簡單一些。
源碼包服務的自啟動管理
源碼包服務的白啟動管理也不能依靠系統(tǒng)的服務管理命令,而只能把標準啟動命令寫入 /etc/rc.d/rc.local 文件中。系統(tǒng)在啟動過程中讀取 /etc/rc.d/rc.local 文件時,就會調用源碼包服務的啟動腳本,從而讓該服務開機自啟動。命令如下:
[root@localhost ~]# vi /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 don11
#want to do the full Sys V style init stuff.
touch /var/lock/subsys/local /usr/local/apache2/bin/apachectl start
#加入源碼包服務的標準啟動命令,保存退出,源碼包安裝的apache服務就被設為自啟動了
讓源碼包服務被服務管理命令識別
在默認情況下,源碼包服務是不能被系統(tǒng)的服務管理命令所識別和管理的,但是如果我們做一些設定,則也是可以讓源碼包服務被系統(tǒng)的服務管理命令所識別和管理的。不過筆者并不推薦大家這樣做,因為這會讓本來區(qū)別很明確的源碼包服務和 RPM 包服務變得容易混淆,不利于系統(tǒng)維護和管理。
我們做一個實驗,看看如何把源碼包安裝的 apache 服務變?yōu)楹?RPM 包默認安裝的 apache 服務一樣,可以被 service、chkconfig、ntsysv 命令所識別。實驗如下:
1) 卸載RPM包默認安裝的apache服務
[root@localhost ~]# yum -y remove httpd
#卸載RPM包默認安裝的apache服務,避免對實驗產(chǎn)生影響(在生產(chǎn)服務器上慎用yum卸載,因為這有可能造成服務器崩潰)
[root@localhost ~]# service httpd start httpd:未被識別的服務
#因為服務被卸載,所以service命令不能識別httpd服務
2) 安裝源碼包的apache服務,并啟動
#安裝源碼包的apache服務
[root@localhost ~]# /usr/local/apache2/bin/apachect1 start
[root@localhost ~]# netstat -tlun | grep 80
tcp 0 0 :::80 :::* LISTEN
#啟動源碼包安裝的apache服務,查看端口確定已經(jīng)啟動
3) 讓源碼包安裝的apache服務能被service命令管理啟動
[root@localhost ~]# ln -s /usr/local/apache2/bin/apachectl /etc/±nit.d/apache
#service命令其實只是在/etc/init.d/目錄中查找是否有服務的啟動腳本,所以我們只需要做一個軟鏈接,把源碼包的啟動腳本鏈接到/etc/init.d/目錄中,就能被service命令所管理了。為了照顧大家的習慣,我把軟鏈接文件命名為apache,注意這不是RPM包默認安裝的apache服務
[root@localhost ~]# service apache restart
#雖然RPM包默認安裝的apache服務被卸載了,但是service命令也能夠生效
4) 讓源碼包安裝的apache服務能被chkconfig命令管理自啟動
[root@localhost ~]# vi /etc/init.d/apache
#修改源碼包安裝的apache服務的啟動腳本(注意此文件是軟鏈接,所以修改的還是源碼包啟動腳本)
#!/bin/sh
#
#chkconfig: 35 86 76
#指定httpd腳本可以被chkconfig命令所管理
#格式是:chkconfig:運行級別 啟動順序 關閉順序
#這里我們讓apache服務在3和5級別中能被chkconfig命令所管理,啟動順序是S86,關閉順序是K76
#(自定順序,不要和系統(tǒng)中已有的啟動順序沖突)
#description: source package apache
#說明,內容隨意
#以上兩句話必須加入,才能被chkconfig命令所識別 ...省略部分輸出...
[root@localhost ~]# chkconfig --add apache
#讓chkconfig命令能夠管理源碼包安裝的apache服務
[root01ocalhost ~]# chkconfig --list | grep apache
apache 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
#很神奇吧,雖然RPM包默認安裝的apache服務被刪除了,但是chkconfig命令可以管理源碼包安裝的tapache服務
5) 讓ntsysv命令可以管理源碼包安裝的apache服務
#ntsysv 命令其實和 chkconfig 命令使用同樣的管理機制,也就是說,ntsysv 已經(jīng)可以進行源碼包安裝 apache 服務的自啟動管理了,如圖 1 所示
圖 1 ntsysv 命令識別 apache
總結一下,如果想讓源碼包服務被service命令所識別和管理,則只需做一個軟鏈接把啟動腳本鏈接到 /etc/init.d/ 目錄中即可。要想讓源碼包服務被 chkconfig 命令所是被,除了需要把服務的啟動腳本鏈接到 /etc/init.d/ 目錄中,還要修改這個啟動腳本,在啟動腳本的開頭加入如下內容:
#chkconfig:運行級別 啟動順序 關閉
#description:說明
然后需要使用"chkconfig--add 服務名"的方式把服務加入 chkconfig 命令的管理中。命令格式如下:
[root@localhost ~]# chkconfig [選項][服務名]
選項:
- -add:把服務加入 chkconfig 命令的管理中;
- -del:把服務從 chkconfig 命令的管理中刪除;
例如:
[root@localhost ~]# chkconfig -del httpd
#把apache服務從chkconfig命令的管理中刪除
標題名稱:Linux源碼包服務管理(啟動與自啟動)
本文地址:http://fisionsoft.com.cn/article/djhepop.html


咨詢
建站咨詢
