(20060408 中国龙加入)
gentoo的emerge安装:目前apache-2.2.0是被mask的,要先对它时行unmask)
1)编辑/etc/portage/package.unmask:加入下列几行
>=dev-php/mod_php-5.0
>=net-www/apache-2.2.0
>=dev-libs/apr-util-1.2.2
>=dev-libs/apr-1.2.2
2)USE= "mysql apache2 -qt -qtmt -pdflib" emerge apache
/etc/init.d/apache2 start #启动apache2
rc-update add apache2 default #加入到开机自启动
源码编译约2小时。
3)装好后需要改一下配置:
/etc/apache/httpd.conf:
ServerName www.yourlocalName.com:80 #加入该行,其它不变
/etc/apache/vhost.d/00_default_vhost.conf
DocumentRoot "/usr/local/WebRoot"
#对根目录进行保护,任何用户都不许访问
<Directory />
Options FollowSymLinks
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
#对虚拟网站的站点,给用户权限
<Directory "/usr/local/WebRoot">
Options Indexes FollowSymLinks
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>
注:
a.如果不加ServerName,会在apache启动时提示ServerName找不到,自动使用127.0.0.1
b.需要对根目录进行保护增强安全性。
c.必须先安装apache2再装PHP,如果有以前的版本,建议先将以前的版本备份清除,包括以前的配置文件
失败的案例:
原先装的是php4.4+apache2.0.55,当时还需要再编一个mod_php放到apache的modules中。
然后升级到php5.1.2,此时会提示mod_php不能用,删除掉。
然后再升级到apache2.2.0,没有删除配置文件,导致/etc/apache2下面的http.conf没有重写,Load模块都是错的,又不知道怎么弄,就再编了一次apache2.2.0。这样HTTP服务器就好用了。
但加上PHP5的配置(PHP5安装时会自动“聪明地”把/etc/conf.d/apache2修改,并加上/etc/apache2/modules.d/70_mod_php5.conf)后,出现了“libphp5.so无效,请检查它是不是apache2的DSO”的提示,搞不懂什么原因。想想可能是PHP5用到了apache2.0.55的什么东西了。
最后再重新编一次PHP5.1.2,再把vhost弄好,就可以用了。
走了弯路,一开始就编apache2.2.0,再编php5.1.2就没事了。
------------------------------------------------------
[转]Web伺服器Apache
田逸(sery@163.com) 《網管員世界》2006年第2期
相信使用過電腦的人,都應該有過訪問web伺服器的經歷。在網站瀏覽新聞、登錄郵件伺服器收發郵件、通過網路購物、以瀏覽器方式配置防火牆等等,無一例外都有一個web伺服器在為訪問者提供服務。儘管有別的方式來實現對設備或服務的訪問(如配置衛星數據機),但以web方式提供訪問的策略依然是最受歡迎的,因為它更直觀,也更方便。也是因為這樣,是的web伺服器得以更廣泛的流行。
Apache是linux主流的伺服器,為linux的迅速繁榮立下汗馬功勞。根據資料顯示,截至2005年12月,在internet上,Apache伺服器以70.98%的絕對優勢雄居web伺服器之首。在這節內容中,我們就話花些時間來討論linux下大名鼎鼎的web伺服器Apache。請初學者注意,不要花費心思去搜尋名字為apache這樣的套裝軟體,它現在的名字是httpd。
Apache 伺服器的安裝
有兩種安裝apache伺服器的機會:安裝linux作業系統的時候選擇安裝web伺服器和安裝完系統後安裝apache伺服器。如果是在安裝linux作業系統期間沒有安裝apache,這就需要使用包文件來安裝。一個運行著的系統,你怎麼知道它裝沒裝apache伺服器?用下面這個命令來檢查 # rpm –qa | grep httpd ,如果沒有輸出,則表明沒有安裝。下圖是某個安裝了Apache伺服器輸出的一個輸出範例。
提示:如果是以源碼安裝的apache伺服器,則此種方法無效,需要用find工具搜尋httpd文件是否存在。
1、RPM包的安裝。Linux的安裝光碟和互聯網上,都可以得到apache的RPM安裝包,然後把安裝包複製到硬盤,並切換到安裝包文件所在的目錄。本案以httpd-2.0.52-9.ent.rpm為例,執行命令 # rpm –ivh httpd-2.0.52-9.ent.rpm ,然後再執行 # rpm –ivh httpd-manual-2.0.52-9.ent.rpm 把手冊也安裝上去。
2、源碼安裝。到網站www.apache.org下載欲安裝的版本,筆者喜歡嘗試最新的版本,當前的最新有效版本為httpd-2.2.0.tar.gz 。在httpd-2.2.0.tar.gz 文件所在的當前目錄解壓文件 # tar zxvf httpd-2.2.0.tar.gz ,然後切換目錄到 httpd-2.2.0 ,進行配置 # cd httpd-2.2.0.tar.gz ; ./configure --prefix=/usr/local/apache ,順利完成這步後,接著進行編譯安裝 # make;make install 。其中,配置這一過程,使用了選項“--prefix=/usr/local/apache”來指定apache的安裝目錄,使apache伺服器所需的大部分文件都被複製在這個目錄裏。實際上,配置是一個很靈活的選擇,根據需要可以添加更多的選項,來支援更多的功能。由於這裡打算先講述基本功能,其他選項將在後面的應用中逐步增加。
配置文件
Apache的配置文件是httpd.conf,一般在/etc/apache2/http.conf或者/etc/http/conf或/usr/local/apache/conf目錄,以rpm包形式安裝的apache的配置文件的位置是/etc/httpd/conf/httpd.conf。對 apache伺服器進行得最多的操作恐怕就是在不時更改這個文件的內容。當然,如果只是運行簡單的靜態網頁,也可以不用對它做任何更改。
打開配置文件httpd.conf,可以獲悉根文檔的目錄位置。前面安裝的apache的根文檔位置是/usr/local/apache/htdocs(rpm包安裝的apache的根文檔位置是/var/www/html),欲運行自己的網站,需要把做好的網頁文件和目錄複製到apache的根文檔才可以。當初,我在配置apache伺服器的時候,在這一步費了不少周折。
上傳網頁文件及目錄
上傳網頁文件及目錄的最佳方式是啟用ftp服務。關於怎樣安裝、配置、啟用ftp服務在這裡不再介紹。創建一系統用戶,使該用戶對目錄/usr/local/apache/htdocs具有讀寫許可權或者該用戶的主目錄為/user/local/apache/htdocs。在這裡我們創建一用戶,使其主目錄為apache的根文檔目錄。# useradd –d /usr/local/apache/htdocs webuser //添加的用戶為webuser,
# passwd webuser //再給該用戶設置一個訪問口令。這樣就可以很方便的修改或上傳網頁文件和目錄了。有的人認為,用ssh客戶端工具也可以實現文件的上傳,但這是不方便的,因為ssh客戶端工具只可以傳送文件而不能上傳目錄。
啟用/關閉apache服務
上面的步驟都準備好以後,就可以啟用這個網站伺服器了。啟用方法如下:
# /usr/local/apache/bin/apachctl start //源碼安裝的啟動方式
#/usr/local/apache/bin/apachectl stop
# service httpd start //rpm包安裝的啟動方式
# service httpd stop
如果不出意外,apache伺服器將如我們所期待的那樣運行起來,我們只要在某臺能訪問apache伺服器的電腦瀏覽器裏輸入apache伺服器的IP地址或者預先解析好的域名,網站的主頁就會出現在瀏覽器裏。在apache伺服器端,通過輸入命令 # ps -aux | grep httpd 檢查apache伺服器是否正在運行。到此,一個具備基本功能的apache伺服器誕生了。
虛擬主機
有時候,我們可能需要用一個apache伺服器來做多個web伺服器,比如運行幾個不同的網站,這樣就可以大大地節省開支。
使用虛擬主機大致有以下幾個步驟:
1、 確定使用虛擬主機的方式。虛擬主機有基於域名、IP、端口等幾種形式,應該根據自己的實際情況來決定。
2、 修改配置文件/etc/httpd/conf/httpd.conf或 / usr/local/apache/conf/httpd.conf.在這個文件裏,已經給出了如何更改的範例,它是以註釋方式出現的。只要按照範例的格式添加需要的內容即可。然後保存退出配置文件。
3、 域名解析(基於域名的虛擬主機)。這一步需要在域名伺服器上進行。
4、 啟用/關閉虛擬主機。啟用/關閉apache守護進程即可,但這將關閉所有的web服務。能否單獨關閉某個虛擬主機,我本人沒這方面的經驗。
接下來,我就給出以個虛擬主機的實例。先描述一下需求:一台伺服器,要求運行一個以PHP為腳本的網站,另外還要用它來做網路流量監控(需要web服務)。在這裡,我們採用二進位源碼包的方式來安裝配置apache虛擬伺服器,以便於對apache伺服器有更深刻的理解。
(一)安裝apache伺服器。從www.apache.org下載包httpd-2.2.0.tar.gz到目錄/root,然後執行操作
# tar zxvf httpd-2.2.0.tar.gz //包解壓
# cd # tar zxvf httpd-2.2.0.
#./configure --prefix=/usr/local/apache --enable-module=most --enable-shared=max
# make
# make install
到這兒,apache就算安裝好了,先測試一下,運行命令 # /usr/local/apache/bin/apachectl start ,然後在與之聯網的電腦的瀏覽器裏輸入運行apache服務的電腦的IP地址,出現測試頁面表明配置一切正常。
(二)安裝PHP。下載包php-4.3.11.tar.gz到目錄/root,然後執行下面的操作
# tar –zxvf php-4.3.11.tar.gz //解壓文件
#./configure -–prefix=/usr/local/php -–with-apxs2=/usr/local/apache/bin/apxs //正常//完成後會在/usr/local/apache/modules 裏生成文件 libphp4.so,並且會在//apache的配置文件httpd.conf里加上一行 LoadModule php4_module //modules/libphp4.so
# make
# make install
#cp php.ini-dist /usr/local/lib/php.ini //拷貝文件
完成後看是否真在目錄/usr/local/apache/modules生成文件libphp4.so,再打開配置文件httpd.conf中看 LoadModule php4_module modules/libphp4.so是否被自動追加。
(三)修改apache配置文件/usr/local/apache/conf/httpd.conf。加入行
TypeAdd application /x-httpd-php .php4 到307行的位置,當然其他位置也是可以的。請特別注意:.php4前面有一個空格。我第一次配置php整合apache的時候就犯了這個錯誤,用了好幾天的時間才弄明白的。Php前面那個“.”(小黑點)一定不要寫漏了,會有什麼後果,請讀者自己去嘗試一下。
(四)啟動一下apache伺服器。找幾個php腳本的網頁文件,把它複製到apache指定的根文檔目錄/usr/local/apache/htdocs,然後在與之聯網的電腦的瀏覽器中輸入apache所在機器的URL(形如 http://192.168.100.10/test.php),來檢驗一下配置是否成功。
(五)創建虛擬伺服器。Apache/2.2.0與以前的版本有些差異,它是以包含文件的方式來載入用戶定義的虛擬主機配置,前面的版本定義虛擬主機就在httpd.conf文件中。我們還是先在主配置文件中把虛擬主機的配置文件 /usr/local/apache/conf/extra/httpd-vhosts.conf 包含進來;具體的操作就是把行 #Include conf/extra/httpd-vhosts.conf 的註釋去掉,使之成為Include conf/extra/httpd-vhosts.conf,這一行在httpd.conf的行號是394。然後保存後退出。接著我們打開文件/usr/local/apache/conf/extra/httpd-vhosts.conf,其默認狀態如下:
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
等我們先安裝配置mrtg,然後再回過頭來修改文件/usr/local/apache/conf/extra/httpd-vhosts.conf。
(六)啟用交換機的snmp功能。要監控連接在交換機每個端口的伺服器的網路流量,必須啟用交換機的snmp,這樣就不必更改被監控的伺服器的任何設置。關於怎樣啟用交換機的snmp,請參照相關文檔。
(七)安裝和配置mrtg。把套裝軟體下載到硬盤,解壓後直接安裝就是。配置mrtg有點複雜,在這裡僅僅給出方法,具體意思就不做說明,請大家自己去查手冊。
#./cfgmaker --global "WorkDir: /usr/local/mrtg/html"
--global "icondir: /mrtg" --global "language: chinese"
--global "Options[_]: growright,bits" --show-op-down
--ifref=nr --ifdesc=descr --output=/etc/mrtg/mrtg.cfg
public@192.168.100.250>/dev/null //是一個整行,交換機的snmp的
//community的值是public
#./ indexmaker -t "title" -o /usr/local/mrtg/html/index.html
/etc/mrtg/mrtg.cfg
(八)修改虛擬主機配置文件。需要指定根文檔目錄、伺服器名稱這幾項。
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@sery.com //假定域名為sery.com
DocumentRoot /usr/local/mrtg/html
ServerName mrtg.sery.com
ErrorLog /usr/local/apache/logs/error_log
CustomLog /usr/local/apache/logs/access_log combined
DirectoryIndex index.html index.php
</VirtualHost>
保存後退出。如果要對虛擬主機的訪問進行用戶驗證,還需要在apache的主配置文件對虛擬機的根文檔目錄進行相關的處理。把下面的行插入到apache的主配置文件httpd.conf中。
<Directory "/usr/local/mrtg/html">
AuthName "mrtg
AuthType Basic
AuthUserFile /usr/local/apache/.mrtg //帶點是為了使文件的屬性為隱藏
require valid-user
</Directory>
保存後退出。然後運行命令 # /usr/local/apache/bin/htpasswd –c /usr/local/apache/.mrtg sery
按照提示設定用戶sery的訪問口令。
(九)做域名解析。在域名伺服器上解析主機mrtg.sery.com.
(十)啟用apache服務。用指令 # ps –aux | grep httpd 檢查apache是否正常運行,然後在另外的電腦的瀏覽器裏輸入apache伺服器的URL,如輸入www.sery.com則應該訪問到主配置文件設定的網頁,如果輸入mrtg.sery.com則訪問上面設定的虛擬機頁面,並且需要輸入正確的用戶名和口令才能訪問。
總結
通過上面的實踐,我們可以得出這樣一個結論:apache伺服器功能設定的主要操作就是修改配置文件—主配置文件httpd.con及包含配置文件。當然,apache的配置不僅僅是上文所描述的那些,可以說是非常豐富,也是非常靈活的,限於篇幅,不再詳敘。至於要讓apache隨系統啟動,可以把守護進程/usr/local/apache/bin/httpd&加在文件/etc/rc.local裏。
偏方:為了在同一環境下使用更多的apache服務,可以安裝多個apache到不同的目錄,安裝目錄在安裝過程中的配置操作 ./configure – prefix=<安裝目錄> 制定,所有apache的配置原則都是一致的。所有配置完成後,把他們全部啟動起來。關於配置多個虛擬主機與安裝多個apache服務,究竟有多大的差別,望各位讀者自己去做評判。
2005-12-30 於白石橋