Apache與PHP的結合配置、Apache默認虛擬主機

Apache和PHP結合


配置httpd支持php

1. 修改配置文件:

[root@gary-tao php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf


修改一:

修改httpd的主配置文件/usr/local/apache2.4/conf/httpd.conf,搜索ServerName,把#ServerName www.example.com:80前面的#號刪除。


找到如下內容更改:

<Directory />

    AllowOverride none

    Require all denied

</Directory>


修改如下:

<Directory />

    AllowOverride none

    Require all granted

</Directory>


示例如下:

linux的Apache(http)與PHP的結合配置及Apache默認虛擬主機


修改目的:是允許所有請求訪問,如果不設置該行,則我們訪問的時候會報403錯誤。


修改二:爲了支持PHP,需要增加一行與PHP相關的配置

找到如下內容:

AddType application/x-gzip /gz .tgz

在該行下面添加一行:

AddType application/x-httpd-php .php


示例如下:

linux的Apache(http)與PHP的結合配置及Apache默認虛擬主機


修改三:打開一個網站

找到如下內容:

<IfModule dir_module>

    DirectoryIndex index.html

</IfModule>

將該行修改爲:

<IfModule dir_module>

    DirectoryIndex index.html index.php

</IfModule>


示例如下:

linux的Apache(http)與PHP的結合配置及Apache默認虛擬主機


2. 臨時開關80端口命令:

[root@gary-tao php-7.1.6]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT  //添加規則

[root@gary-tao php-7.1.6]# iptables -D INPUT -p tcp --dport 80 -j ACCEPT  //刪除規則


3. 測試配置文件是否正確

重新加載配置命令:

[root@gary-tao php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t  //檢查配置語法是否正確,正常顯示“Syntax OK”

Syntax OK

[root@gary-tao php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful  //重新加載服務,報錯也不會重啓服務


4. 測試編輯一個PHP腳本:

[root@gary-tao src]# vim /usr/local/apache2.4/htdocs/test.php //增加如下內容


<?php

phpinfo();

?>

驗證:用瀏覽器打開網址:172.16.110.100/test.php 會在瀏覽器中顯示php的信息。


解析報錯:

linux的Apache(http)與PHP的結合配置及Apache默認虛擬主機



解決思路:

檢查php不能解析的原因:

查看Apache有沒有加載php模塊 /usr/local/apache2.4/bin/apachectl -M , 如果沒有加載就1.查看有沒有這個文件,如果沒有這個文件就加載不了.

ls /usr/local/apache2.4/modules/libphp5.so;

2.如果有這個文件但並沒有顯示,就檢查配置文件裏vim /usr/local/apache2.4/conf/httpd.conf,有沒有加載libphp5.so的配置;

3.檢查配置文件裏有沒有加這一行:AddType application/x-httpd-php .php,記得在.php前要加空格;

4.檢查配置文件裏有沒有加index.php;


結果:發現以上配置都正常,最後發現是index.html用root用戶建的文件,apache權限不夠。注:index.html默認權限是644。


解決方法:

更改文件權限;chmod 755 /usr/local/apache2.4/htdocs/index.html

linux的Apache(http)與PHP的結合配置及Apache默認虛擬主機


再次驗證:解析成功

linux的Apache(http)與PHP的結合配置及Apache默認虛擬主機




Apache默認虛擬主機

一臺服務器可以訪問多個網站,每個網站都是一個虛擬主機,概念:域名(主機名)、DNS、解析域名、hosts。任何一個域名解析到這臺機器,都可以訪問的虛擬主機就是默認虛擬主機。


1.修改Apache的配置文件:

編輯配置文件,搜索httpd-vhost,去掉#號,然後保存配置文件:

[root@gary-tao ~]# vim /usr/local/apache2.4/conf/httpd.conf

示例如下:

linux的Apache(http)與PHP的結合配置及Apache默認虛擬主機


2.修改虛擬主機配置文件:

編輯虛擬主機配置文件:

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


備註:

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

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


配置文件原文:

<VirtualHost *:80>

    ServerAdmin [email protected]

    DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com"

    ServerName dummy-host.example.com

    ServerAlias www.dummy-host.example.com

    ErrorLog "logs/dummy-host.example.com-error_log"

    CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>


<VirtualHost *:80>

    ServerAdmin [email protected]

    DocumentRoot "/usr/local/apache2.4/docs/dummy-host2.example.com"

    ServerName dummy-host2.example.com

    ErrorLog "logs/dummy-host2.example.com-error_log"

    CustomLog "logs/dummy-host2.example.com-access_log" common

</VirtualHost>


修改後:

<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>


內容定義說明:

ServerAdmin:指定管理員郵箱,這個沒有什麼實質作用。

DocumentRoot:爲該虛擬主機站點的根目錄,網站的程序就放在這個目錄下面。

ServerName:爲網站的域名,不支持寫多個

ServerAlias:爲網站的第二域名,只有alias可以寫多個域名,用空格分隔。

Errorlog:爲站點的錯誤日誌

Customlog:爲站點的訪問日誌。


3.更改完成配置文件後需要在/data目錄下創建對應的目錄文件:

[root@gary-tao ~]# mkdir /data/wwwroot/

[root@gary-tao ~]# mkdir /data/wwwroot/abc.com

[root@gary-tao ~]# mkdir /data/wwwroot/111.com


4.在對應的站點根目錄下定義一個index.php文件:

[root@gary-tao ~]# vim /data/wwwroot/abc.com/index.php


定義內容如下:

<?php

echo "abc.com";

?>


[root@gary-tao ~]# vim /data/wwwroot/111.com/index.php


定義內容如下:

<?php

echo "111.com";

?>


5.檢查配置文件語法是否正確:

[root@gary-tao ~]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK


6.重新加載配置文件:

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


7.如果想訪問abc.com在本機的機器上,可以編輯vim /etc/hosts文件使用curl -x命令,示例如下:

[root@gary-tao ~]# curl -x172.16.111.100:80 abc.com

abc.com[root@gary-tao ~]# curl -x172.16.111.100:80 abcd.com 

abc.com[root@gary-tao ~]# curl -x172.16.111.100:80 abcde.com //無論我們有沒有配置域名abcd.com或其它域名,它都會訪問到abc.com,因爲abc.com是默認的虛擬主機。

abc.com[root@gary-tao ~]# curl -x172.16.111.100:80 www.example.com

“111com”[root@gary-tao ~]# 


重點:

1.在主配置文件中打開了虛擬主機配置文件Vhosts.conf,那主配置其它配置文件DoucmentRoot與ServerName都失效。

2.虛擬主機配置文件一旦打開,它裏面可以定義很多個VirtualHos,每一個VirtualHos裏面都可以定義DoucmentRoot與ServerName,ServerName可以寫多個,每個VirtualHos都代表一個站點,都是一個虛擬主機。在虛擬主機裏面有一個比較特殊的,就是默認虛擬主機,所謂默認虛擬主機,就是無論任何域名解析到這個IP上它都會去訪問這個默認虛擬主機。


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