1. 程式人生 > >apache與PHP結合,apache默認虛擬機

apache與PHP結合,apache默認虛擬機

apache與Php 結合 php的默認虛擬主機 php虛擬主機

修改vim /usr/local/apache2.4/conf/httpd.conf

取消ServerName前的#,讓本行生效

添加80端口訪問規則
iptables -I INPUT -p tcp --dport 80 -j ACCEPT

打開cmd 測試
技術分享圖片
技術分享圖片
telnet成功,按ctrl +] 退出telnet

打開瀏覽器 測試
技術分享圖片
嘗試修改配置文件中的狀態為denied
技術分享圖片
修改後
測試語法正確與否
[root@aminglinux-001 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
重新加載配置文件
[root@aminglinux-001 ~]# /usr/local/apache2.4/bin/apachectl graceful

再次通過瀏覽器訪問192.168.67.128 提示

技術分享圖片
再次進入修改回來
技術分享圖片
/usr/local/apache2.4/bin/apachectl graceful

驗證
技術分享圖片

再次進入配置文件
添加此行內容,增加php文件
技術分享圖片
再添加一個索引頁,補充一句
技術分享圖片
修改完配置文件,檢查語法錯誤,重新加載
技術分享圖片

編輯文件apache文件
vi /usr/local/apache2.4/htdocs/1.php
添加如下語句
<?php
phpinfo();
?>
再瀏覽器打開地址測試是否生效。
技術分享圖片

如果故意在上個配置文件中不加php的解析(DirectoryIndex index.html index.php
)就會出現1.php的內容,不被apache解析成功。

有這麽幾個不被解析的原因及檢查方法
檢查apache配置文件:
1、/usr/local/apache2.4/bin/apachectl -M
技術分享圖片
有沒有加載php5模塊
2、如果沒有加載php5模塊,就要檢查是否有PHP5的模塊
ls /usr/local/apache2.4/modules/libphp5.so

技術分享圖片
3、如果有php5文件,但是沒有顯示出來,是不是配置文件裏是不是沒有加載php的配置
技術分享圖片
如果沒有加載這個模塊,就算有模塊,也不會被apache解析到。
4、檢查配置文件裏有沒有加載php的
技術分享圖片
註意php .php 第一個php後面有個空格
5、最後就看看有沒有添加引導頁
技術分享圖片

httpd的默認虛擬主機
理解為一臺服務器可以訪問多個網站,一個網站域名對應了一個虛擬主機

windows下編寫Hosts

192.168.67.128 www.123.com www.abc.com
打開瀏覽器也可解析到

虛擬主機配置文件
技術分享圖片

[root@aminglinux-001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
下圖就代表了兩個主機,虛擬主機
技術分享圖片
修改
技術分享圖片

新增/data/wwwroot/abc.com
/data/wwwroot/111.com
/data/wwwrooot/abc.com/index.php並編輯裏面顯示abc.com
技術分享圖片
/data/wwwroot/111.com/index.php並編輯在裏面顯示111.com
技術分享圖片
以上兩個編輯格式都支持。

通過curl 訪問abc.com 成功
技術分享圖片
只要沒有定義hostname,任何域名都會指向到默認虛擬機,就是配置文件的第一個域名abc.com
技術分享圖片
此時會發現虛擬配置文件的www.example.com也會解析到111.com這個虛擬主機配置文件中的host中來。

由上可知,只要在主配置文件裏打開了虛擬機配置(取消了那個#號),主配置文件裏面的默認根目錄(DocumentRoot),域名(servername)以及默認引導頁就會失效,都是以虛擬配置文件為主了
技術分享圖片

2.虛擬主機文件一旦打開,每一個配置文件都是一個虛擬主機,但是其中默認主機比較特殊,無論任何主機域名解析到這個ip上,都會訪問該默認主機。

apache與PHP結合,apache默認虛擬機