本文介紹如何安裝Apache以支持MySQL、PHP4、FrontPage2000伺服器擴展和虛擬主機功能,本文的安裝步驟在Redhat 7.0和Mandrake 7.2上測試通過,所以應該適用於任何Linux發行,它也適用於任何形式的*nix系統,只要下載不同的軟體包。 一. 需求 1、一個基於Intel並安裝了TCP/IP和libc6的Linux系統。如果Apache或MySQL已經安裝好了,建議用軟體包管理程序或手工刪除它們。 2、需要安裝的軟體包,它包括:Apache 1.3.19、MySQL伺服器、PHP4和FrontPage 2000擴展、Apache支持FrontPage 2000擴展的補丁、最新的gcc編譯器及其相關庫。 二. 準備安裝 1、下載軟體包 下載下列軟體包到/download目錄下。 Apache 1.3.19 MySQL Server PHP4 FrontPage 2000 Extensions 2、解壓縮源代碼 將所有/download目錄下的源代碼包(除了frontpage要解壓縮到/use/local目錄下)解壓縮: tar zxfv apache_1.3.19.tar.gz tar zxfv fp40.linux.tar.gz -C /usr/local tar mysql-3.23.32.tar.gz tar zxfv php-4.0.4pl1.tar.gz 三. 安裝MySQL 第一步先要安裝MySQL,因為要安裝支持MySQL的PHP,然後安裝支持PHP的Apache,下面是具體步驟。 1、設置用戶和組 首先,系統增加名為mysql的擁護和組。 groupadd mysql useradd -g mysql mysql 2、配置並構建MySQL 進入目錄/download/mysql-3.23.32並運行configure和make程序。如果想把資料庫存在非預設目錄/usr/local/mysql/var/,則為configure指定選項localstatedir=/your_path。 cd mysql-3.23.32 ./configure --prefix=/usr/local/mysql make make install MySQL現在已經安裝到/usr/local/mysql目錄下。目前還沒有一個數據目錄,現在要運行MySQL自帶的腳本創建目錄並安裝測試資料庫。 scripts/mysql_install_db 在啟動守護程序前,改變文件的屬權,否則守護程序不能運行。 chown -R mysql.mysql /usr/local/mysql 3、啟動MySQL守護程序 現在準備啟動守護程序。safe_mysqld等價於tcpwrapper for MySQL,tcpwrapper常用於包裝inet的服務以增加安裝性。 /usr/local/mysql/bin/safe_mysqld --user=mysql & 4、設置root用戶口令並在引導時啟動MySQL。 現在MySQL正在運行,可以用mysqladmin設置root用戶口令。 /usr/local/mysql/bin/mysqladmin -u root -p password 'yourpass' 最後一步是需要確保MySQL能在系統重起時啟動。編輯/etc/rc/d/rc.local文件,並在末尾加入/usr/local/mysql/bin/safe_mysqld --user=mysql & 。或者可以編寫一個啟動/停止的腳本並符號鏈接到適當的運行級別。 四. 為Apache打補丁 在繼續下列步驟前,我們必須給Apache打上FrontPage補丁,將FrontPage補丁複製到Apache源代碼目錄下並做一個到FrontPage的currentversion的符號鏈接。 cd /usr/local/frontpage/ ln -s version4.0 currentversion cd currentversion/apache-fp cp fp-patch-apache_1.3.12 /downloads/apache_1.3.19 1、打補丁 現在在Apache源代碼目錄下打上FrontPage補丁。這將需要將二進位補丁放在你的目錄下。 patch -p0 < fp-patch-apache_1.3.12 這將在apache源代碼目錄下生成一個mod_frontpage.c文件,它需要複製到extras模塊上。 cp fp-patch-apache_1.3.12 src/modules/extra/ 2、運行一個簡單的apache配置 現在運行一個簡單的配置,等一下再運行更高級的配置。 /downloads/apache_1.3.19/configure 五. 安裝PHP4 PHP4是一種伺服器端、跨平台、HTML嵌入式腳本語言,它賦予我們開發動態網站的能力,並能很容易地與MySQL伺服器介面。 1、配置PHP4以支持MySQL和Apache 你將安裝支持位於/usr/local/mysql目錄下的MySQL的PHP4。 cd /downloads/php-4.0.4pl1 ./configure --with-mysql=/usr/local/mysql --with-apache=/downloads/apache_1.3.19 --enable- track-vars 2、配置apache支持MySQL和Apache 現在運行make和make install來編譯Apache所需的文件。 make make install 六. 安裝Apache伺服器 Apache是本文的核心,所以請仔細安裝下列步驟進行。現在PHP已經構建好,你將在Apache源代碼目錄下找到一個新目錄../apache_1.3.19/src/modules/php4。現在我們再次配置apache,但這時對PHP和FrontPage的支持已經靜態地構建好了。 1、創建符號鏈接和目錄結構 創建符號鏈接/usr/local/httpd指向/usr/local/apache-1.3.x,這樣你可以構建一個新版本apache,然後在必要時重新鏈接。用下列命令: mkdir /usr/local/apache-1.3.19 ln -s /usr/local/apache-1.3.19 /usr/local/httpd 2、配置Apache支持ForntPage和PHP4 現在,我們可以用--prefix=/usr/local/httpd配置apache,它是指向apache-1.3.19的符號鏈接。要知道,src/modules/php4/libphp4.a毫不存在,但將要生成。要注意用--add-module加入FrontPage,--activate-module加入PHP。現在運行make和make install以構建並安裝Apache。其它無關緊要的是httpd.conf放在哪裡,有些人喜歡放在/etc目錄下。如果像這樣做,加上--localstatedir=/etc即可。 cd /downloads/apache_1.3.19 ./configure --prefix=/usr/local/httpd --activate-module=src/modules/php4/libphp4.a --add-module=src/modules/extra/mod_frontpage.c 3、構建Apache 運行make將創建httpd二進位代碼。如果你覆蓋一個老版本的伺服器,你要做的就是make,然後將httpd二進位代碼從bin目錄夫知道現有的httpd產品目錄即可。這裡建議你有一個全新的安裝,因為這樣非常容易地從原先的安裝遷移www數據和conf文件。 make make install 七. 修改httpd.conf 很好,你已經安裝好了Apache,並支持FrontPage、PHP和MySQL。現在整理一下其他事情以便能工作得更好。首先修改一些httpd.conf配置。 1、增加PHP標記 為了讓Apache處理PHP擴展名,必須加入該類型。確保你把配置文件中的下列兩行去掉註釋。如果這兩行不存在,必須手工添加。 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 2、改變Directory Index 改變Directory Index支持以增加index.php和index.shtml。這完全作為參考,但如果你的網站嚴格地用SSI或PHP編寫,那麼有這些額外的Directory Index文件將避免參照index文件的全路徑,相反,你可以簡單地鍵入http://www.virtual.com而不是http://www.virtual.com/index.php。 DirectoryIndex index.php index.shtml index.html index.htm 3、修改目錄許可權 對配置文件幾個重要的修改是DocumentRoot和Directory的許可權。修改DocumentRoot指向你的預設網頁文件,如 DocumentRoot /www/httpd 現在對它修改目錄許可權是的FrontPage能夠用其.htaccess文件覆蓋它們。AllowOverride從None改為All。 <Directory "/www/httpd"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> 八. 運用FrontPage Extensions到根網站 我們已經完成了支持PHP和MySQL的Apache,剩下的事情就是FrontPage伺服器擴展了,你可能用或不用於你的網站。但你有多人需要編輯網站並且不是每個人都熟悉FTP和HTML時,它就有用了。 1、運行fpsrvadm.exe 我們把FrontPage擴展用於網站根目錄(/www/httpd)。 cd /usr/local/frontpage/currentversion/bin/ 並運行fpsrvadm.exe安裝擴展到根目錄。 ./fpsrvadm.exe -o install : 0 for apache (do not choose apache-fp) : /usr/local/httpd/conf/httpd.conf (patch to server config file) : ENTER (Just hit enter for a blank multi-hosting) : apache (user owner of DocumentRoot (i.e. /www/httpd)) : web (group owner of DocumentRoot (i.e. /www/httpd)) : myuser (frontpage login) : mypass (frontpage password) 注意,這裡使用用戶"apache"和"web"組。對於虛擬域,對每個虛擬域分開用戶,但組總是"web"。 2、創建其他FrontPage用戶 現在簡單地為FrontPage提供一個管理員賬號及該賬號口令,它將是訪問FrontPage的登陸名和口令。如果你保持這些與ftp登陸同步,可能更好些。你總能回來並運行./fpsrvadm.exe並用Option 7增加一個用戶並輸入正確的信息。或者你可以修改包含用戶和加密口令的/_vti_pvt/service.pwd文件,如果需要生成一個加密口令,使用: htpasswd temp.pass.file Enter Password : ********** pico temp.pass.file <my-new-user>:3923kw#$sdfk32$ 然後複製用戶和加密口令到service.pwd並且該用戶即可登陸,你也必須包用戶組成一組,這樣對網站的修改可以進行了,這通過編輯/_vti_pvt/service.grp完成。 pico _vti_pvt/service.grp administrators : administrator <my-new-user> authors : 增加新用戶到適當的修改網站的組中。現在嘗試通過FrontPage登陸,用戶再增加"author"或"administrator"后應該有權編輯了。 九. 用FrontPage支持創建虛擬網站 這個過程與把它們加入根網站相同,唯一的差別是當運行fpsrvadm.exe時要提供一個muulti-hosting名而不是指打回車。多宿主名將是定義在<VirtualHost>中的ServerName。 首先,編輯htppd.conf並去掉NameVirtualHost行的註釋。如果你在這台機器上只有一個IP地址,那麼表中第一個虛擬主機將是你的根網站。如果有兩個IP地址,那麼你的根網站可能在192.168.0.1並且虛擬網站可能在192.168.0.2,這可以保持根網站的完整。 if you have 1 ip address NameVirtualHost * if you have a separate ip address just for your virtual webs NameVirtualHost 192.168.0.2 確保如果你有多個IP地址,告訴Apache監聽哪個IP地址,或用Listen *讓Apache監聽列在ifconfig中的所有介面。 # to make apache listen on all ip addresses assigned to the box Listen * # Listen for root web Listen 192.168.0.1 # Listen for virtual webs Listen 192.168.0.2 現在你已經知道該信息,假如一個虛擬網站。 <VirtualHost *> ServerAdmin root@virtual.com ServerName virtual.com DocumentRoot /www/virtual.com/public_html CustomLog logs/virtual.com/access_log combined ScriptAlias /cgi-bin /www/virtual.com/public_html/cgi-bin/ <DIRECTORY /www/virtual.com> AllowOverride All Options Indexes FollowSymLinks Includes ExecCGI MultiViews Options All order allow,deny allow from all </DIRECTORY> <DIRECTORY /www/virtual.com/public_html/cgi-bin> AllowOverride None Options ExecCGI FollowSymLinks INcludes </DIRECTORY> LogFormat Combined ServerAlias virtual.com *.virtual.com </VirtualHost> 首先,在這個虛擬域定義中有幾點說明。<VirtualHost *〉可以改為下列任何一個。 # To make this virtual web listen on all interfaces and all ports <VirtualHost *> # If you have a separate IP # for virtual hosting <VirtualHost 192.168.0.2> # To listen only on port 80 on 192.168.0.2 <VirtualHost 192.168.0.2:80> # To listen only on port 80 on all interfaces <VirtualHost *:80> 這裡只使用<VirtualHost *>,因為在機器上只有一個IP地址。記住,這的確破壞了你的根網站(/www/httpd)並使得第一個<VirtualHost>定義稱為你的根網站。 在有人到達你的IP地址時,他們首先被第一個虛擬網站服務,而不是根網站。這是為什麼機器要有兩個IP地址並將根網站置於各自獨立的IP地址的原因。或者你有整個C類地址,或一個子網,那麼你可以將每一個網站賦予其自己的IP地址,這樣會好些。 在虛擬主機中的<Directory>定義允許FrontPage用.htaccess文件改寫許可權。 好了,現在你已經把一個虛擬主機加到了httpd.conf中,名為"virtual.com",保存httpd.conf並運用FrontPage擴展。 cd /usr/local/frontpage/currentversion/bin ./fpsrvadm.exe -o install : 0 for apache (do not choose apache-fp) : /usr/local/httpd/conf/httpd.conf (patch to server config file. : www.virtual.com (the name of ServerName in <VirtualHost>) : apache (user owner of DocumentRoot (i.e. /www/httpd)) : web (group owner of DocumentRoot (i.e. /www/httpd)) : myuser (frontpage login) : mypass (frontpage password) 注意,對虛擬網站,為每一個網站在機器上創建一個用戶。 本例中用戶和組為: : virtual (virtual.com的用戶) : web (所有網站的用戶組) 用戶和組必須在運行./fpsrvadm.exe安裝FrontPage擴展前在/etc/passwd和/etc/group中是有效的。現在FrontPage擴展已經被複制到了你的新虛擬網站的DocumentRoot(如/www/virtual/public_html)。 你可以改變該目錄並檢驗再次有一個_vti_文件夾。 現在嘗試通過FrontPage連接新虛擬網站,Open Web -> http://www.virtual.com。 它應該詢問登陸名和口令,如果沒問題,你可以增加更多的虛擬主機到httpd.conf中,然後以同樣的方式實現FrontPage擴展。 十. 測試文件 最後的步驟是測試PHP、CGI和SSI。你可以用下列文件或創建自己的。通過FTP上傳文件到網站上,然後點擊瀏覽器測試它們。 一、PHP測試文件:test.php ---------------------------------------- <html> <head> <title>PHP Test</title> </head> <body> <?php echo "Hello World<P>"; ?> </body></html> 二、CGI測試文件:test.cgi(確保至少chmod 755) ---------------------------------------- #!/usr/bin/perl print "Content-type: text/html\n\n"; print " <html> <head> <title>Perl Test</title> </head> <body> HEllo World </body></html> "; exit (0); ---------------------------------------- 三、SSI測試文件:test.shtml ---------------------------------------- <html> <head> <title>SSI Test</title> </head> <body> <!--#include virtual="test.txt"> </body></html> ---------------------------------------- File : test.txt (used in SSI parsing in test.shtml file above) ---------------------------------------- Hello World ----------------------------------------