1. 程式人生 > >lamp(四)——apache與php結合、虛擬主機配置

lamp(四)——apache與php結合、虛擬主機配置

11.14/11.15 Apache和PHP結合 11.16/11.17 Apache預設虛擬主機

lamp安裝完成後就是三個軟體的配置和維護。配置主要設計apache和php,作為web服務的主要提供者,apache配置是首先要掌握的。

apache與php結合

httpd主配置檔案是/usr/local/apache2.4/conf/httpd.conf。直接編輯配置檔案vim /usr/local/apache2.4/conf/httpd.conf,修改以下4個地方:

  1. 去掉ServerName那一行最前的註釋
  2. “Require all denied” 中denied改為granted,如果不改有時會拒絕訪問(返回403)
  3. 在AddType開頭的那幾行下面新增一行:“AddType application/x-httpd-php .php”
  4. 在“DirectoryIndex index.html”後面新增“ index.php”

如果除錯過程中無法訪問apache,配置無問題的話檢視linux防火牆是否遮蔽了訪問。修改完apache配置檔案,一定要先測試語法,然後再重新載入配置檔案。相關命令如下:

/usr/local/apache2.4/bin/apachectl -t //測試語法
/usr/local/apache2.4/bin/apachectl graceful //載入配置
/usr/local/apache2.4/bin/apachectl start //啟動服務

檢視apache服務,本機上可以使用netstat -lntp,其他機器上可以使用ping檢視伺服器能不能ping通,此外還要用telnet檢視80埠是否開啟。

測試apache提供的web服務,可以用curl localhost。預設有一個“it works”的頁面,還可以自己寫網頁,下面編寫一個簡單的網頁。 vim /usr/local/apache2.4/htodcs/test.php ,增加如下內容:

<?php
echo 123;
?>

然後curl localhost/test.php,就可以檢視到這個網頁。其中apache提供web服務,php作為一個模組解析php語法。

Apache預設虛擬主機

apache提供web服務,一臺伺服器可以配置多個域名網站,每個網站就是一個虛擬主機提供服務。要更好的理解web伺服器還需要了解幾個概念:域名(主機名)、DNS、解析域名、hosts。遠端計算機要訪問web伺服器,必須知道伺服器的ip地址。但是人類很難記住複雜的ip,於是就在本地計算機hosts檔案上寫好ip、域名對照表,人們只要記住域名就好。web網站越來越多,本地hosts檔案很難維護,於是出現了dns服務,即專門解析域名、ip的遠端服務。當然,本地hosts檔案還是存在的,優先順序高於dns服務。

一臺伺服器提供多個web主機服務,就是多個虛擬主機。任何一個域名解析到這臺機器,都可以訪問的虛擬主機就是預設虛擬主機。訪問web服務主機其實就是訪問其開放的目錄、檔案。

開啟虛擬主機:vim /usr/local/apache2/conf/httpd.conf,搜尋httpd-vhost,去掉#。開啟虛擬主機後httpd.conf中主機的配置會失效,生效的是extra目錄中的httpd-vhosts.conf:vim /usr/local/apache2/conf/extra/httpd-vhosts.conf,改為如下

<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot "/data/wwwroot/aaa.com"
   ServerName aaa.com
   ServerAlias www.bbb.com
   ErrorLog "logs/aaa.com-error_log"
   CustomLog "logs/aaa.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
   DocumentRoot "/data/wwwroot/123.com"
   ServerName www.123.com
</VirtualHost>

/usr/local/apache2/bin/apachectl –t 測試配置檔案語法是否正確。/usr/local/apache2/bin/apachectl graceful 語法無誤後重新載入配置檔案。為了順利測試訪問web服務,還需要生成一些目錄和檔案:

mkdir -p /data/wwwroot/aming.com  /data/wwwroot/123.com
echo "aaa.com" > /data/wwwroot/aaa.com/index.html //網站預設的主頁就是index.html   
echo "123.com" > /data/wwwroot/123.com/index.html