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/ //編輯虛擬主機配置文件
原虛擬主機配置文件:
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 //查看配置是否正確