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個地方:
- 去掉ServerName那一行最前的註釋
- “Require all denied” 中denied改為granted,如果不改有時會拒絕訪問(返回403)
- 在AddType開頭的那幾行下面新增一行:“AddType application/x-httpd-php .php”
- 在“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