1. 程式人生 > >Apache和PHP結合 Apache默認虛擬主機

Apache和PHP結合 Apache默認虛擬主機

Apache和PHP

11.14-11.15 Apache和PHP結合

Apache(httpd)的配置文件:/usr/local/apache2.4/conf/httpd.conf。

配置Apache

選擇要調用的PHP

因為本機安裝了兩個版本的PHP,所以需要進行該配置,如果只裝一個PHP服務則會默認調用存在的PHP服務(在此選用PHP5)。

[root@centos-01inux ~]# vim /usr/local/apache2.4/conf/httpd.conf
……
LoadModule php5_module modules/libphp5.so
#LoadModule php7_module modules/libphp7.so

說明: 指定Apache調用PHP5。

物理機:啟用win7中telnet命令

graph LR
開始-->控制面板
控制面板-->程序
程序-->打開或關閉Windows功能
打開或關閉Windows功能-->選擇telnet客戶端
進行Apache的配置

更改配置文件:
[root@centos-01inux ~]# vim /usr/local/apache2.4/conf/httpd.conf
……
<Directory />
AllowOverride none
Require all granted
</Directory>
……

檢測配置是否存在語法錯誤:
[root@centos-01inux ~]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK

重新加載服務:
[root@centos-01inux ~]# /usr/local/apache2.4/bin/apachectl graceful
註:該命令不會使服務重啟,只是加載配置文件的內容。
說明: 將此處的“Require all denied”改為“Require all granted”。

添加監聽80端口的規則:

[root@centos-01inux ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
說明: 至此,可以使用瀏覽器直接訪問本地虛擬機IP。

mark

添加PHP服務

授權PHP服務解析本機服務器
[root@centos-01inux ~]# vim /usr/local/apache2.4/conf/httpd.conf

……
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
#
……
說明: 在此添加“AddType application/x-httpd-php .php”,意思是允許PHP服務解析該服務器。

增加索引頁
[root@centos-01inux ~]# vim /usr/local/apache2.4/conf/httpd.conf
……
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
……

檢測、加載:
[root@centos-01inux ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@centos-01inux ~]# /usr/local/apache2.4/bin/apachectl graceful

說明: 在此添加“index.php”,

檢測服務器是否支持PHP解析:

[root@centos-01inux ~]# vim /usr/local/apache2.4/htdocs/1.php

<?php
phpinfo();
#該參數的含義是PHP的信息
?>
#該命令的含義是:在訪問該地址時,直接打印PHP的相關信息
說明: 創建一個php文件,然後使用瀏覽器訪問該文件(此時不需要重啟服務器):

mark

即,可以正常訪問,說明該服務器支持PHP解析,如果不支持php解析的話,訪問該文件時會顯示源代碼。

完成PHP解析配置!

常見故障:

故障: 服務器無法進行PHP解析!
解決辦法:

檢查Apache是否已加載PHP模塊
[root@centos-01inux ~]# /usr/local/apache2.4/bin/apachectl -M
如果沒有加載,則需要檢查系統中有沒有PHP模塊:

[root@centos-01inux ~]# ls /usr/local/apache2.4/modules/libphp5.so
/usr/local/apache2.4/modules/libphp5.so
如果該模塊存在但是沒有加載,則檢查Apache配置文件中有沒有加載PHP的配置:

mark

檢查配置文件中是否有PHP服務加載命令:

mark

執行命令“/usr/local/apache2.4/bin/apachectl -t”檢查配置文件是否存在語法錯誤。

檢查是否有索引頁(該行影響不大):

mark

Apache配置PHP7解析

編輯配置文件(調用PHP7):
[root@centos-01inux ~]# vim /usr/local/apache2.4/conf/httpd.conf
……
#LoadModule php5_module modules/libphp5.so
LoadModule php7_module modules/libphp7.so

檢測、加載:
[root@centos-01inux ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@centos-01inux ~]# /usr/local/apache2.4/bin/apachectl graceful
說明: 因在進行PHP5解析配置時已完成其他相關配置,所以在此只需更改要調用的PHP版本即可,如果初次配置,操作同PHP5.

補充:快捷鍵 Ctrl+r

ctrl+r用途:反向搜索並調用執行過的命令。(reverse-i-search)。
使用方法:按ctrl+r後命令行會變成“(reverse-i-search)`‘: ”狀態,然後輸入使用過的參數,此時會直接顯示出相關的命令,回車即可執行該命令。

11.16-11.17 Apache默認虛擬主機

Windows系統hosts管理

Windows系統中hosts位置“C:\Windows\System32\drivers\etc\hosts”。
用記事本打開該文件:

mark

說明: 在此可以自定義匹配本地IP和域名,目的是添加臨時訪問地址(在DNS未生效的時候使用)。

添加虛擬主機

在hosts文件中添加“192.168.8.131 www.adai.com”即可將本地虛擬主機添加到Windows系統,訪問該域名時會自動解析到本地虛擬主機“ServerName www.example.com:80”。

LinuxApache虛擬主機管理

在物理機訪問的域名“www.adai.com”並未在虛擬機Apache配置文件中定義,虛擬機中只定義了“ServerName www.example.com:80”一個域名,該域名即為Apache的默認主機,此時通過任何一個綁定該虛擬機IP的域名進行訪問都會跳轉到該主機。
因為一臺服務器可以跑多個域名,為了方便管理,需要對虛擬主機進行配置:

配置虛擬主機

編輯Apache配置文件:
[root@centos-01inux ~]# vim /usr/local/apache2.4/conf/httpd.conf
……

Virtual hosts

Include conf/extra/httpd-vhosts.conf
……
說明: 編輯“Virtual hosts(虛擬主機)”的參數,去掉#,啟用虛擬主機配置文件“httpd-vhosts.conf”。
註: Apache也支持單獨管理每個虛擬主機,配置參數如下:

[root@centos-01inux ~]# vim /usr/local/apache2.4/conf/httpd.conf
……

Virtual hosts

Include conf/extra/vhosts/*.conf
……
[root@centos-01inux ~]# mkdir /usr/local/apache/conf/extra/vhosts
之後在/usr/local/apache/conf/extra/vhosts目錄中創建虛擬主機就可以。

編輯虛擬主機配置文件
[root@centos-01inux ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
該配置文件下每組“< VirtualHost *:80 >”代表一個主機(即:一個網站):

mark

進行如下編輯:

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

此時即定義了一個網站,定義網站的核心參數即為:DocumentRoot(網站根目錄)、ServerName(域名)。
註意: 虛擬主機生效後,原Apache配置文件中的默認主機(www.example.com ~ 192.168.8.131)就會失效(在此用www.example.com ~ 111.com進行驗證)。

添加虛擬主機相應目錄

[root@centos-01inux ~]# mkdir /data/wwwroot/
[root@centos-01inux ~]# mkdir /data/wwwroot/abc.com
[root@centos-01inux ~]# mkdir /data/wwwroot/111.com
在相應目錄創建PHP文件:

[root@centos-01inux ~]# vim /data/wwwroot/abc.com/index.php
<?php
echo "welcome to abc.com";
?>

[root@centos-01inux ~]# vim /data/wwwroot/111.com/index.php
<?php
echo "welcome to 111.com";
?>
檢測、重載Apache配置文件:

[root@centos-01inux ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@centos-01inux ~]# /usr/local/apache2.4/bin/apachectl graceful
虛擬主機測試

在此使用瀏覽器和curl命令分別進行測試。

如果不在虛擬機中進行本地域名配置(hosts),在進行ping命令測試虛擬主機域名時會訪問到外網。

[root@centos-01inux ~]# ping www.abc.com
PING abc.com (199.181.132.250) 56(84) bytes of data.
如果想在訪問“abc.com”時指向到本地虛擬機IP,可以在/etc/hosts文件中指定域名,或者使用curl命令進行訪問,如下:

eg:

curl -x 指定訪問端口
[root@centos-01inux ~]# curl -x192.168.8.131:80 abc.com
welcom to abc.com
註意: 此時訪問所有未定義的域名都會將訪問地址指向到默認虛擬主機,因為已經自定義添加了虛擬主機,所以此時的默認虛擬主機為配置文件“httpd-vhosts.conf”中的第一個虛擬主機(在此為abc.com),效果如下:

[root@centos-01inux ~]# curl -x192.168.8.131:80 www.abcde.com
welcom to abc.com

Apache和PHP結合 Apache默認虛擬主機