[每周討論專題]--第一期--Apache是這樣啟動的

火星人 @ 2014-03-04 , reply:0


[每周討論專題]--第一期--Apache是這樣啟動的

每周討論專題【第一期】.......................................................點這裡查看其他討論專題

  Apache是這樣啟動的                                             

本期討論主旨為,Apache在不同操作系統下面的開機啟動、啟動過程中的問題等等


Apache是怎樣啟動的
如果配置文件中Listen的定義為默認的80埠(或其他1024以下的埠),那麼啟動Apache將需要root許可權以將它綁定在這個特權埠上。一旦伺服器開始啟動並完成了一些諸如打開日誌文件之類的操作,它將創建很多子進程來完成一些諸如偵聽和回應客戶端請求的工作。httpd主進程仍然以root用戶的許可權運行,而它的子進程將以一個較低許可權的用戶運行。這將由你選擇的多道處理模塊進行控制。

啟動httpd執行文件的推薦方法是使用apachectl控制腳本。 此腳本設置了在某些操作系統中正常運行httpd所必需的環境變數。 apachectl會傳遞命令行的所有參數, 因此所有httpd的選項多半也可以用於apachectl。 你可以直接修改apachectl腳本, 改變頭部的HTTPD變數使之指向httpd文件的正確位置, 也可以設置任意命令行參數,使之總是有效。

httpd被調用后第一個要做的事情是找到並讀取配置文件httpd.conf。此文件的位置是在編譯時設定的,但也可以象下面這樣在運行時用 -f 命令行可選項來指定:

/usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.conf

如果啟動時一切都很正常,伺服器將與終端分離並幾乎同時出現平時的命令行提示符。這代表著伺服器已經啟動並開始運行。然後你就可以用你的瀏覽器去連接你的伺服器來查看DocumentRoot目錄下的測試文檔及其頁面鏈接里的其它文檔的本地拷貝。


啟動時發生的錯誤
如果Apache在啟動過程中產生了致命錯誤,它將在退出前把描述這個錯誤的信息顯示在終端上或者寫入到ErrorLog中。一個最常產生的錯誤信息是「Unable to bind to Port ...」。這個信息主要由以下原因造成:

想由一個特權埠啟動服務但沒有以root用戶登錄,或
啟動服務時已經有另外的Apache實例在運行或其他的web伺服器已經綁定了同樣的埠。
更多問題的解決辦法,請參見Apache的FAQ。


隨系統啟動
如果你希望你的伺服器在系統重啟后仍保持運行狀態, 你應該把httpd或者apachectl的調用加入到你的系統啟動文件中 (典型文件為rc.local或rc.N目錄下的某一文件)。 這將會以root許可權啟動Apache。當然,在此之前, 你必須保證你的伺服器已經完成了安全和訪問許可權的設定。

apachectl腳本被設計為可以用作SysV初始化腳本, 它接受start, restart, 和stop參數, 並把它們轉譯為httpd的對應信號, 所以通常都可以連接apachectl到適當的初始目錄, 但是需要檢查你的系統對此的精確要求。



  我使用伺服器多半是FreeBSD系統,所以在FreeBSD之中,要開機啟動Apache,一般是在/usr/local/etc/rc.d/裡面建立apache.sh腳本,內容如下:

#!/bin/sh
###FileName=Apache.sh
###Author=HonestQiao

PREFIX=/usr/local/apache2

case "$1" in
start)
        [ "ssl" = "ssl" -a -f "$PREFIX/etc/apache2/ssl.crt/server.crt" ] && SSL=ssl
        [ -x ${PREFIX}/sbin/apachectl ] && ${PREFIX}/sbin/apachectl start${SSL} >; /dev/null && echo -n ' apache2'
        ;;
stop)
        [ -r /var/run/httpd.pid ] && ${PREFIX}/sbin/apachectl stop >; /dev/null && echo -n ' apache2'
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >;&2
        ;;
esac

exit 0


當然,你也可以在rc.local裡面設置Apache 的啟動,在rc.local裡面添加

###Apache
/usr/local/apache2/bin/apachectl start
《解決方案》

[每周討論專題]--第一期--Apache是這樣啟動的

如果是在OpenBSD之中,可以在
/etc/rc.local裡面添加啟動腳本

/usr/local/apache/bin/apachectl start
《解決方案》

[每周討論專題]--第一期--Apache是這樣啟動的

如果是在瘟到死系列操作系統之中,可以按照如下方法開機啟動:

1、瘟到死95/98/Me:在開始=程序=啟動,添加一個Apache運行文件的快捷方式
2、瘟到死2000/NT/XP/2003:運行CMD,然後運行

cd 到你的apache運行文件的目錄裡面
apache -k install       //把Apache安裝為系統的服務
apache -k uninstall  //把Apache服務去掉
net start apache    //Apache服務啟動
net stop apache    //Apache服務停止
net start apache2    //Apache2服務啟動
net stop  apache2   //Apache2服務停止


當然,也可以在啟動菜單之中添加。
《解決方案》

[每周討論專題]--第一期--Apache是這樣啟動的

我喜歡第一種的腳本,但我現在是加在 rc.local 裡面。
《解決方案》

[每周討論專題]--第一期--Apache是這樣啟動的

我暈,看到標題以為講啟動過程的原理呢
《解決方案》

[每周討論專題]--第一期--Apache是這樣啟動的

並沒有局限於說什麼,與啟動相關的都可以討論。
而且並不是我一個人唱獨角戲,而是大家都來討論,仁者見仁,智者見智
《解決方案》

[每周討論專題]--第一期--Apache是這樣啟動的

覺得啟動真的沒什麼好說的

httpd --help

就都知道了,

win :    $apache_home/bin/apache -k [ start | stop ]
             or   net [ start | stop ] $apache_service_name

Linux: $apache_home/bin/apachectl start

RH: service httpd start


執行命令后看 netstat -an |grep 80 或者lynx http://localhost/檢查是否運作

如果沒有去看日誌 $apache_home/logs/error_log

有問題上google搜
《解決方案》

[每周討論專題]--第一期--Apache是這樣啟動的

me too
《解決方案》

[每周討論專題]--第一期--Apache是這樣啟動的

但是搜索一下子可以看到:

啟動APACHE2。0 FOR WIN98出現如下錯誤:
如何利用Apache來啟動機器里的某個程序?
啟動apache失敗 :
我的apache為什麼不啟動???
apache+mod_ssl如何自啟動?----急
怎樣啟動apache服務呢?
啟動問題!
我啟動apache時提示下面的錯誤信息,怎麼回事
啟動apache的問題!!
啟動IE很慢,怎麼辦??
apache啟動不了,用configtest測試,報告是沒有錯誤
apache,啟動時出這樣的錯誤,在線等。。。。
請求幫助:aix 上啟動了oralce帶的apache但jsp不能執行?
apache啟動出錯
請教關於apache的啟動錯誤
apache 啟動時wrong ELF data format: ELFDATA2MSB
apache在2000下啟動的問題
Help Tom 無法啟動
apache2 無法啟動
在SOLARIES下面啟動APACHE錯誤提示:
solaris 8 下apache無法開機啟動?
關於apache-1.3.26的啟動問題!!!
啟動apache 時,在httpd.conf中報PerlModule語法錯誤,why
apache 啟動錯誤, 有截圖
apache 啟動問題??
如何設置Apache的默認啟動文件為default.cgi?
tomcat啟動狂銼!找了很久不知道為什麼!!!只好求救!!!
在<virtualhost>;內加user后apache不能啟動
怎樣不啟動sco unix自帶的web服務??
在sol9上編譯的apache 2.0.45不能啟動?
請問在SCO中如何讓Apache隨系統一起啟動?
編譯resin之後,apache啟動不起來,什麼原因?
WebSphere中Default Server進程自動重新啟動!
apache 啟動后的問題
在線等: 我的apache不能啟動啊
請問如何在SUSE linux pro8.2下啟動Apache?
help!httpd 無法啟動~~
我的apache啟動不起來?怎樣啟動?
apache啟動出錯!!!!!!!!!!
請教SCO5.0.7的APACHE配置文件到底是哪個?怎麼啟動服務?
hp-ux下apache 啟動問題!
大蝦救命! Apache 無法啟動!!!!
請教,裝apache+tomcat 啟動APACHE時報錯。
請教:apache啟動后不能正常瀏覽
請問怎樣使一個cgi程序有root的許可權?(apache以非root啟動)
xinetd啟動apache的錯誤?
如何實現apache每次跟隨機器的啟動而啟動?
怎樣啟動webserver呀?????
apache 啟動時沒有任何反應???怪!!
啟動apache失敗
可以用一般用戶啟動apache服務么?
請教一個關於apache啟動的問題。
我在啟動APACHE的時候,碰到這麼一個錯誤。。。
噢,我的 APACHE 2 ,不知為什麼不能自己啟動了
apache ssl啟動無任何問題,可是卻無法訪問,請問是什麼問題
apache2.0.48啟動問題,請高手指點
安裝apache后啟動的時候出現的錯誤
websphere administrative console啟動不了
服務不能自動啟動,需手動開啟
jboss 啟動報錯,有難度的問題!
jboss+tomcat的啟動問題。
linux字元界面下啟動jboss的麻煩。
APACHE+PHP4編譯好后,啟動APACHE提示找不到LIBPHP4.SO
配完虛擬主機,啟動apache時怎麼老是出現這樣的錯誤???
為什麼兩個tomcat 不能同時啟動!
linux下,如何啟動apache?
請問怎樣啟動was里的Remote Agent Controller服務?
安裝QMAIL后啟動不了APACHE…………
啟動apache的問題.
Apache啟動不起來,大俠們幫幫我啊。
為何無法啟動apche
為何無法啟動apche
怎樣讓apache隨系統一起啟動?
求教,apache不能啟動的問題!謝謝各位大哥
無法啟動apache,是什麼原因
高手幫幫我啊!Apache2(不能啟動)
高手幫幫我啊!Apache2(不能啟動)
機子重起后,apache不能啟動,為什麼?
redhat下開機無法啟動httpd
急救! Apache不能啟動?
急!!!怎麼樣修改apach的默認啟動用戶
求助--apache啟動時報錯
solaris下啟動tomcat失敗
《解決方案》

[每周討論專題]--第一期--Apache是這樣啟動的

我是說根據log裡面的出錯信息來查google,尤其是出錯代碼!

而且不要局限於查中文的文章。

PHP Warning:  Unknown(): Unable to load dynamic library
這一個一看就知道文件找不到!

還有這個
proxy: No protocol handler was valid for the URL /XXXXXXXXXXXX/index.jsp. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

啟動不了的主要原因一般是錯誤的修改了httpd.conf



[火星人 via ] [每周討論專題]--第一期--Apache是這樣啟動的已經有105次圍觀

http://www.coctec.com/docs/service/show-post-37134.html