Linux中Apache與php結合以及Apache的虛擬主機配置文件

Apache默認虛擬主機

一臺服務器可以訪問多個網站,每個網站都是一個虛擬主機

任何一個域名解析到這臺機器,都可以訪問的虛擬主機就是默認虛擬主機

#vim /usr/local/apache2.4/conf/httpd.conf/ //搜索httpd-vhost ,去掉#

1.每個VirtualHost *:80 代表一個主機,一個主機就是一個網站,虛擬主機配置文件可以定義多個VirtualHost。

2.在虛擬主機裏有一個默認虛擬主機(第一段VirtualHost ),就是無論任何域名解析到這個IP上都會訪問這個虛擬主機。當搜索所有配置段,你發現訪問的域名沒有在配置裏面出現,那它就會默認走虛擬主機的配置。

#vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf/ //編輯虛擬主機配置文件

原虛擬主機配置文件:

<VirtualHost *:80>br/>[email protected]
DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com"
ServerNamedummy-host.example.com
ServerAliaswww.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>br/>[email protected]
DocumentRoot "/usr/local/apache2.4/docs/dummy-host2.example.com"
ServerNamedummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

ServerAdmin:指定管理員郵箱,這個沒有什麼實質作用。
DocumentRoot:爲該虛擬主機站點的根目錄,網站的程序就放在這個目錄下面。
ServerName:爲網站的域名,不支持寫多個
ServerAlias:爲網站的第二域名,只有alias可以寫多個域名,用空格分隔。
Errorlog:爲站點的錯誤日誌
Customlog:爲站點的訪問日誌。

修改之後的配置文件:

<VirtualHost *:80>
DocumentRoot "/data/wwwroot/abc.com"
ServerName abc.com
ServerAlias www.abc.com www.123.com
ErrorLog "logs/abc.com-error_log"
CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.example.com
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>

更改完配置文件之後創建虛擬主機的根目錄
#mkdir /data/wwwroot
#mkdir /data/wwwroot/abc.com
#mkdir /data/wwwroot/111.com

在根目錄下創建index.php來進行測試
#vim /data/wwwroot/abc.com/index.php

<?php
echo abc.com;
?>

#/usr/local/apache2/bin/apachectl –t //測試語法正確
/usr/local/apache2/bin/apachectl graceful //加載配置文件

然後進行測試
#curl -x192.168.37.130:80 abc.com //測試結果顯示abc.com
#curl -x192.168.37.130:80 aaa.com //測試結果顯示abc.com

Apache與php結合

httpd的主配置文件/usr/local/apache2.4/conf/httpd.conf

#vim /usr/local/apache2.4/conf/httpd.conf
需要改四處地方:

改ServerName,將#註釋掉
Require all denied改爲Require all granted //不改會顯示狀態碼403
AddType application/x-httpd-php .php //解析php
DirectoryIndex index.html index.php //索引

#/usr/local/apache2.4/bin/apachectl -t //測試語法
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful //加載配置文件,報錯也不會重啓服務

#vim /usr/local/apache2.4/htdocs/1.php //進行測試能否解析php

<?php
phpinfo();
?>

用瀏覽器訪問,192.168.37.130/1.php

如若解析不成功,有可能是防火牆的原因,此時臨時加上iptables規則

#iptables -I INPUT -p tcp --dport 80 -j ACCEPT //臨時加上80防火牆規則

#iptables -D INPUT -p tcp --dport 80 -j ACCEPT //刪除防火牆規則

#/usr/local/apache2.4/bin/apachectl -t //檢測語法是否錯誤

#/usr/local/apache2.4/bin/apachectl graceful //加載配置文件,報錯也不會重啓服務

若還是不能解析,則需要看看以下的文件
/usr/local/apache2.4/bin/apachectl -M //是否加載了php模塊

ls /usr/local/apache2.4/modules/libphp5.so //是否有php模塊文件

#vim /usr/local/apache2.4/conf/httpd.conf //查看配置是否正確

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章