2018-3-1 10周2次課 Apache和PHP結合、Apache默認虛擬主機
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默認虛擬主機