1. 程式人生 > >2018-3-1 10周2次課 Apache和PHP結合、Apache默認虛擬主機

2018-3-1 10周2次課 Apache和PHP結合、Apache默認虛擬主機

Apache PHP 虛擬主機

技術分享圖片11.14/11.15 Apache和PHP結合


技術分享圖片


1,修改ServerName

在啟動apache時,會有類似錯誤提示

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

如果不想出現這種錯誤提示,那麽進到 /usr/local/apache2.4/conf/httpd.conf 中找到ServerName,並去掉#註釋,保存退出。

技術分享圖片技術分享圖片

重啟apache,出現下圖錯誤

技術分享圖片

進到 /usr/local/apache2.4/conf/httpd.conf 中,將php7註釋掉,只讓apache只加載php5

技術分享圖片技術分享圖片

保存退出後,重啟apache,一切正常

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl restart
httpd not running, trying to start
[root@localhost ~]# ps aux | grep httpd
root      45504  0.2  0.8 253576  8892 ?        Ss   21:48   0:00 /usr/local/apache2.4/bin/httpd -k restart
daemon    45505  0.0  0.6 540404  6936 ?        Sl   21:48   0:00 /usr/local/apache2.4/bin/httpd -k restart
daemon    45506  0.0  0.8 540404  8972 ?        Sl   21:48   0:00 /usr/local/apache2.4/bin/httpd -k restart
daemon    45507  0.0  0.8 540404  8976 ?        Sl   21:48   0:00 /usr/local/apache2.4/bin/httpd -k restart
root      45590  0.0  0.0 112676   984 pts/2    S+   21:49   0:00 grep --color=auto httpd


2,修改Require all denied

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

訪問192.168.65.128,從無法訪問變為 It works!

技術分享圖片技術分享圖片

在windows中,打開telnet,用telnet 192.168.65.128 80,來查看聯通情況

技術分享圖片技術分享圖片

聯通之後會跳到次界面

如果不通,則顯示正在連接

技術分享圖片技術分享圖片

技術分享圖片技術分享圖片

技術分享圖片

改完之後,無法訪問192.168.65.128

因此,需要把配置文件 Require all denied 改為 Require all granted


·檢查配置文件語法:

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


·重新加載配置:

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful

(優點是不會重啟服務器,最多加載不成功,不會把進城殺掉)


3,增加一行 AddType application/x-httpd-php .php ,否則php無法解析

技術分享圖片技術分享圖片

4,把 DirectoryIndex index.html 改為 DirectoryIndex index.html index.php

技術分享圖片技術分享圖片技術分享圖片


技術分享圖片

驗證apache支不支持php解析

測試的php腳本:

vim /usr/local/apache2.4/htodcs/1.php

技術分享圖片技術分享圖片

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

Syntax OK

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful

訪問http://192.168.65.128/1.php

技術分享圖片技術分享圖片


如果訪問192.168.65.128/1.php時,出現

技術分享圖片技術分享圖片

則需要檢查Apache配置文件

首先,查看有沒有加載php5模塊

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M

技術分享圖片技術分享圖片

看看有沒有 /usr/local/apache2.4/modules/libphp5.so 文件

如果有libphp5.so文件,則要查看apache配置文件中有沒有加載libphp5.so

技術分享圖片技術分享圖片

然後,檢查配置文件有沒有 AddType application/x-httpd-php .php 行

技術分享圖片技術分享圖片


再檢查 DirectoryIndex index.html index.php 這一行,但這一行不影響

index.php ,默認能跳轉到index.php下面去


快捷鍵:ctrl + r 輸入關鍵字,可以搜索到命令歷史中有關關鍵字的命令


把php5禁掉,只用php7

再配置文件中把libphp5.so註釋掉,用libphp7.so

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

Syntax OK

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful

訪問http://192.168.65.128/1.php時,版本出現了變化

技術分享圖片技術分享圖片

/usr/local/php7/bin/php -i | less 的結果時上圖的文本形式顯示。





11.16/11.17 Apache默認虛擬主機


·httpd一個服務下運行了多個網站,多個域名

DNS未生效情況下,可以定義windows中的hosts文件

格式為:ip 域名 域名 。。。


/usr/local/apache2.4/conf/httpd.conf只能定義一個ServerName

[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf

搜索httpd-vhost,去掉#

技術分享圖片技術分享圖片

編輯虛擬主機配置文件(可以定義多個ServerName):

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


ServerAdmin 管理員郵箱,可刪掉

DocumentRoot 網站根目錄

ServerName 域名

ServerAlias 別名(可取多個)

ErrorLog 錯誤日誌

CustomLog 訪問日誌

技術分享圖片技術分享圖片


創建目錄

[root@localhost ~]# mkdir /data/wwwroot/
[root@localhost ~]# mkdir /data/wwwroot/abc.com
[root@localhost ~]# mkdir /data/wwwroot/111.com
[root@localhost ~]# vim /data/wwwroot/abc.com/index.php

定義一個index.php

技術分享圖片技術分享圖片

可不帶結尾

111.com中也定義一個php

[root@localhost ~]# vim /data/wwwroot/111.com/index.php

技術分享圖片技術分享圖片

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

技術分享圖片技術分享圖片

如果找不到域名配置,就會去找默認虛擬主機配置文件,例如www.111.com在配置文件中就沒有這個域名或別名,因此直接找默認配置,也就是第一段,所以是abc.com


如有錯誤,歡迎指正,互相學習。


2018-3-1 10周2次課 Apache和PHP結合、Apache默認虛擬主機