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

11.14/11.15 Apache和PHP結合php

11.16/11.17 Apache默認虛擬主機html

 

 

 

 

11.14/11.15 Apache和PHP結合:linux

 

 

~~ONEapache

配置httpd支持php,步驟以下:vim

(咱們雖然知道Apache調用了php做爲他的模塊,但咱們還沒作實驗,還不知道他能不能解析php。因此咱們要編輯http的配置文件)windows

httpd主配置文件/usr/local/apache2/conf/httpd.conf瀏覽器

vim /usr/local/apache2/conf/httpd.conf //修改如下4個地方服務器

實例1. ServerName 開啓Apache不顯示提示php7

實例2. Require all denied 防止403app

實例3. AddType application/x-httpd-php .php 解析PHP。要增長這一行

實例4. DirectoryIndex index.html index.php 增長索引頁。後面要加index.php

/usr/local/apache2/bin/apachectl -t 測試,修改過配置文件完語法是否對

/usr/local/apache2/bin/apachectl graceful 從新加載配置文件,不會重啓服務

/usr/local/apache2.4/bin/apachectl start 啓動服務

 

netstat -lntp (這兩個阿銘沒說怎麼用)

curl localhost

 

~~TWO

驗證apache支持不支持解析php,步驟以下:

實例5.

vim /usr/local/apache2/htodcs/1.php 增長以下內容

咱們在訪問的時候是訪問的這個目錄下的文件 /htodcs

<?php

phpinfo();

?>

 

~~THREE

若是遇到php不能解析的狀況,要檢查Apache的配置文件:

1. /usr/local/apache2/bin/apachectl -M 查看有沒有加載php模塊。

2. ls /usr/local/apache2/modules/libphp5.so 若是沒有加載咱們要看一看這個模塊,有沒有這個文件

3. vim /usr/local/apache2/conf/httpd.conf 若是有.so這個文件,就看一下配置文件。有沒有加載或被註釋php模塊

LoadModule php5_module modules/libphp5.so

#LoadModule php7_module modules/libphp7.so

4. vim /usr/local/apache2/conf/httpd.conf 還要檢查配置文件,有沒有加載AddType

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

AddType application/x-httpd-php .php 咱們本身配置進去的這個(注意.php前面要加空格,根據前兩行寫)

5. vim /usr/local/apache2/conf/httpd.conf 還要檢查有沒有加載index.php (索引頁)

<IfModule dir_module>

DirectoryIndex index.html index.php 咱們在後面加進去的

 

curl localhost/test.php (這個阿銘沒說上面用)

 

 

 

實例:

1.

[root@axinlinux-01 ~]# /usr/local/apache2/bin/apachectl start 開啓Apache的時候會有提示

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe87:4224. Set the 'ServerName' directive globally to suppress this message

[root@axinlinux-01 ~]# vi /usr/local/apache2/conf/httpd.conf viApache的配置文件。

# ServerName gives the name and port that the server uses to identify itself.

# This can often be determined automatically, but we recommend you specify

# it explicitly to prevent problems during startup.

#

# If your host doesn't have a registered DNS name, enter its IP address here.

#

ServerName www.example.com:80 搜索 ServerName,並把前面的註釋去掉。再啓動Apache就不會有提示了

 

[root@axinlinux-01 ~]# vi /usr/local/apache2/conf/httpd.conf viApache配置文件。

LoadModule php5_module modules/libphp5.so

#LoadModule php7_module modules/libphp7.so 把php7註釋地掉,咱們用php5。否則會有衝突

 

2.

咱們先用瀏覽器訪問如下咱們的IP,其實並不通

這種狀況下,咱們用cmd ping一下IP,是通的

而後,在ping80端口。須要打開telnet

步驟爲,打開控制面案>程序>程序和功能>打開或關閉Windows功能>

找到 Telnet客戶端,前面打上勾,點肯定

以上,Windows打開Telnet完成

咱們再回到cmd上,ping80端口,結果是不通。是由於在咱們linux上並無打開80端口

[root@axinlinux-01 ~]# iptables -nvL 看一下 iptables規則。也並無發現80端口

咱們先臨時給他加上80端口

[root@axinlinux-01 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT -j ACCEPT爲來源客戶端所有打開,也能夠-s指定來源客戶

此時,咱們在瀏覽器上IP就通了

此時,咱們再回到cmd上。再次ping 80端口。顯示如下畫面,爲通

 

爲防止瀏覽器出現403或測試爲403,咱們要在配置文件裏,配置一下 Require all denied

[root@axinlinux-01 ~]# vi /usr/local/apache2/conf/httpd.conf

<Directory />

AllowOverride none

Require all denied 把這一行,denied改成granted

並檢查下面Require all granted是否是也是爲 granted

#

# Controls who can get stuff from this server.

#

Require all granted

[root@axinlinux-01 ~]# /usr/local/apache2/bin/apachectl -t 配置完配置文件要-t檢查一下

Syntax OK

[root@axinlinux-01 ~]# /usr/local/apache2/bin/apachectl graceful 在graceful從新加載

 

 

3.

[root@axinlinux-01 ~]# vim /usr/local/apache2/conf/httpd.conf 修改配置文件

搜索 AddType

#

# If the AddEncoding directives above are commented-out, then you

# probably should define those extensions to indicate media types:

#

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz 找到這兩行,這有兩個,一個.Z一個.tgz的。不要加錯了

 

 

4.

 

[root@axinlinux-01 ~]# vim /usr/local/apache2/conf/httpd.conf

搜索 Index

[root@axinlinux-01 ~]# /usr/local/apache2/bin/apachectl -t 修改完配置文件要 -t

Syntax OK

[root@axinlinux-01 ~]# /usr/local/apache2/bin/apachectl graceful 修改完配置文件要 graceful

 

 

5.

[root@axinlinux-01 ~]# vi /usr/local/apache2/htdocs/1.php

<?php

phpinfo(); 函數,能夠把PHP的相關信息打印出來

?>

咱們在瀏覽器上輸入 192.168.159.128/1.php

這個界面出來,就表明php就支持解析

 

 

 

 

 

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

11.16/11.17 Apache默認虛擬主機

 

 

 

 

1. 可理解爲,一臺服務器能夠訪問多個網站,每一個網站都是一個虛擬主機

概念:域名(主機名)、DNS、解析域名、hosts

 

2. 咱們在linux上設置了hosts,可讓他訪問到1.php,是由於在apa配置文件裏DocumentRoot定義了網站的根目錄在哪裏

DocumentRoot "/usr/local/apache2/htdocs"

他的域名就是配置文件裏上面定義的ServerName www.example.com:80,這個ServerName可有用任何域名去訪問他。而這個就是Apache的默認主機,也就是說任何一個域名,只要是指定到這個IP,都會指向到這個站點,這個站點就是默認虛擬主機

3. 一樣windows上也是能夠的,他的位置在 C:\Windows\System32\drivers\etc\hosts

在裏面寫上192.168.159.130 www.hao123.com

咱們在訪問www.hao123.com的時候就會訪問到192.168.159.130

4. 任何一個域名解析到這臺機器,均可以訪問的虛擬主機就是默認虛擬主機。

若是咱們隊Apache的這個配置文件沒有作任何的修改,僅僅只是使用的是httpd.cong,他實際上就是咱們主配置文件裏面定義的ServerName和DocumentRoot。若是咱們以爲很差管理,不想讓域名執行到這來,由於一個配置文件裏面只能配置一個ServerName。咱們要打開一個虛擬主機配置文件:

~4.1 vim /usr/local/apache2/conf/httpd.conf 搜索httpd-vhost,去掉#。表明以上的ServerName DocumentRoot就不能用啦。

~4.2 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 這個就是虛擬主機配置文件。改成以下

<VirtualHost *:80> 每個VirtualHost都表明一個主機

ServerAdmin admin@aminglinux.com 這個是定義管理員的郵箱,要不要都行

DocumentRoot "/data/wwwroot/abc.com" 網站根目錄。只能寫一個

ServerName abc.com 訪問他的域名是什麼。可支持alias

ServerAlias www.abc.com www.123.com 可寫多個別名。意思是abc.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

ErrorLog "logs/111.com-error_log"

CustomLog "logs/111.com-access_log" common

</VirtualHost>

~4.3 修改完要建立相應的目錄

mkdir /data/wwwroot

mkdir /data/wwwroot/abc.com

mkdie /data/wwwroot/111.com

~4.3 在兩個站點根目錄下建立.php

vim /data/wwwroot/abc.com/index.php

vim /data/wwwroot/111.com/index.php

~4.4 修改服務是否正確以及從新加載

/usr/local/apache2/bin/apachectl –t

/usr/local/apache2/bin/apachectl graceful

~4.5 curl -x 測試

curl -x192.168.159.128:80 www.abc.com 測試咱們配置的這個域名訪問這個IP的結果,是否是咱們以前設置的結果

 

總結:

1. 若是咱們沒有設置的域名段,訪問過來,他就會走第一個咱們設置的虛擬主機

2. 咱們一旦打開了這個虛擬主機配置(也就是咱們註釋掉的httpd-vhost),咱們以前配置的SurverName DocumentRoot都會失效

3. 每個VirtualHost都表明一個站點,都是一個虛擬主機。在虛擬主機裏有一個比較特殊的,就是默認虛擬主機。就是不管任何的域名解析到這個IP上,都會去訪問這個默認虛擬主機

 

 

 

實例:

[root@axinlinux-01 ~]# vim /usr/local/apache2/conf/httpd.conf

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

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

<VirtualHost *:80>m

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 "111.com-error_log"

CustomLog "111.com-access_log" common

</VirtualHost>

[root@axinlinux-01 ~]# mkdir /data/wwwroot

[root@axinlinux-01 ~]# mkdir /data/wwwroot/abc.com

[root@axinlinux-01 ~]# mkdir /data/wwwroot/111.com

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

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

[root@axinlinux-01 ~]# /usr/local/apache2/bin/apachectl -t

Syntax OK

[root@axinlinux-01 ~]# /usr/local/apache2/bin/apachectl graceful

abc.com[root@axinlinux-01 ~]# curl -x192.168.159.128:80 www.abc.com

abc.com[root@axinlinux-01 ~]# curl -x192.168.159.128:80 www.abc.cn

abc.com[root@axinlinux-01 ~]# curl -x192.168.159.128:80 www.example.cn

abc.com[root@axinlinux-01 ~]# curl -x192.168.159.128:80 www.example.com

111.com[root@axinlinux-01 ~]# curl -x192.168.159.128:80 111.com

111.com[root@axinlinux-01 ~]#

相關文章
相關標籤/搜索