11.14/11.15 Apache和PHP結合 11.16/11.17 Apache默認虛擬主機

11.14/11.15 Apache和PHP結合

修改Apache(httpd)主配置文件

定義ServerName以消除Apache啓動時所產生的警告

未修改前php

[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::531b:14ea:3a75:f113. Set the 'ServerName' directive globally to suppress this message
httpd (pid 5756) already running

定義ServerNamelinux

完成修改後web

[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl restart
[root@linux-5 ~]#

打開服務器的80端口

[root@linux-5 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

測試鏈接Apache服務器apache

修改配置文件以防止打開虛擬主機配置文件時拒絕訪問(訪問時提示403)

<Directory />
    AllowOverride none
    Require all granted        //將denied改成granted
</Directory>
...
DocumentRoot "/usr/local/apache2.4/htdocs"
<Directory "/usr/local/apache2.4/htdocs">
...
    Require all granted        //將denied改成granted
</Directory>

檢查配置文件語法

[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

從新加載配置文件

[root@linux-5 ~]# /usr/local/apache2.4/bin/apachectl graceful

修改配置文件以用於解析PHP文件

增長PHP的索引頁

增長索引頁能夠直接輸入域名或IP,後自動跳轉至索引頁,無需單獨輸入vim

編寫PHP測試腳本

[root@linux-5 ~]# vim /usr/local/apache2.4/htdocs/test.php

<?php
phpinfo();
?>
//該腳本用於打印PHP版本信息

注:增長PHP文件無需重啓服務服務器

測試PHP解析效果

上圖爲成功解析PHP腳本文件的效果,若是不支持解析,則會產生以下結果網絡

Tips:使用ctrl+r能夠快速查找並使用歷史命令dom

11.16/11.17 Apache默認虛擬主機

定義

不一樣的主機名解析到不一樣的IP地址,提供虛擬主機服務的機器上同時設置有這些IP地址。服務器根據用戶請求的目的IP地址來斷定用戶請求的是哪一個虛擬主機的服務,從而進一步的處理。(默認虛擬主機只能定義單一域名,且爲使用該服務器IP所跳轉的惟一Apache站點,全部域名均會跳轉至惟必定義的DocumentRoot下的網站根目錄,一個配置文件只能定義一個Severname)curl

一臺服務器能夠訪問多個網站,每一個網站都是一個虛擬主機tcp

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

修改Windows系統上的hosts

路徑C:\Windows\System32\drivers\etc\hosts

因爲默認虛擬主機只能使全部域名指向同一網站根目錄,不易於管理,所以能夠打開虛擬主機配置文件,使得不一樣域名能夠跳轉至不一樣網站。

打開虛擬主機配置文件

編輯虛擬主機配置文件

[root@linux-5 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 

# Virtual Hosts
...
<VirtualHost *:80>                                                    //可定義多個虛擬主機(當前第一個)
    ServerAdmin webmaster@dummy-host.example.com                      //管理員郵箱,可不填寫
    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>                                                    //可定義多個虛擬主機(當前第二個)
    ServerAdmin webmaster@dummy-host2.example.com                     //管理員郵箱,可不填寫
    DocumentRoot "/data/wwwroot/def.com"                              //網站的根目錄
    ServerName def.com                                                //網站(服務器)名稱,惟一
    ServerAlias www.def.com www.456.com                               //網站(服務器)別名,可多個
    ErrorLog "logs/def.com-error_log"                                 //錯誤日誌
    CustomLog "logs/def.com-access_log" common                        //訪問日誌
</VirtualHost>

注:一旦虛擬主機配置文件生效,則默認主機配置的文件定義的內容會失效

從新加載服務

/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful

在虛擬主機配置文件中不能在代碼後添加註釋,不然會引發報錯

建立相應的網站目錄

[root@linux-5 ~]# mkdir /data/wwwroot/
[root@linux-5 ~]# mkdir /data/wwwroot/abc.com
[root@linux-5 ~]# mkdir /data/wwwroot/def.com

建立相應目錄下的網站文件

[root@linux-5 ~]# vim /data/wwwroot/abc.com/index.php
<?php
echo "abc.com";
[root@linux-5 ~]# vim /data/wwwroot/def.com/index.php
<?php
echo "def.com";

測試網站效果

curl -x             //發送網絡請求,-x選項爲網絡請求增長代理,至關於hosts的做用
[root@linux-5 ~]# curl -x 192.168.88.5:80 abc.com
abc.com[root@linux-5 ~]#
[root@linux-5 ~]# curl -x 192.168.88.5:80 def.com
def.com[root@linux-5 ~]#

在測試過程當中使用的是兩個虛擬主機,則第一個虛擬主機則是Apache服務的默認虛擬主機,不管訪問哪一個域名(其餘虛擬主機定義的域名除外),只要指向了服務器的IP地址,都會跳轉至默認虛擬主機。咱們實驗所使用的Linux虛擬機,在其上安裝的Apache服務的主配置文件,至關於實體主機,也是默認主機,只能指定一個域名,訪問單一目錄下的文件。

相關文章
相關標籤/搜索