十週二次課

十週二次課php

11.14/11.15Apache和PHP結合html

11.16/11.17Apache默認虛擬主機mysql

11.14/11.15Apache和PHP結合linux

配置httpd支持php目錄概要

  • httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
  • vim /usr/local/apache2.4/conf/httpd.conf //修改如下4個地方
    • ServerName
    • Require all denied
    • AddType application/x-httpd-php .php
    • DirectoryIndex index.html index.php /usr/local/apache2.4/bin/apachectl -t //測試語法 /usr/local/apache2.4/bin/apachectl start //啓動服務 netstat -lntp curl localhost vim /usr/local/apache2.4/htodcs/test.php //增長以下內容

<?php echo 123; ?>web

  • curl localhost/test.php

編輯httpd的配置文件

  • 在安裝好Apache、mysql、httpd,可是還未結合在一塊兒,雖然Apache調用了php做爲它的模塊,可是還不知道是否能解析php,因此如今仍是須要編輯Apache的配置文件
  • httpd主配置文件,在/usr/local/apache2.4/conf/httpd.conf下
    • 編輯四個地方
      • 定義ServerName,去除 # 號
        • 在/usr/local/apache2.4/bin/apachectl restart 乍一看是報錯信息,其實只是一個警告信息,並非錯誤,若想不看到這個提示,能夠在 /usr/local/apache2.4/conf/httpd.conf 取消掉
        • 方法:在/usr/local/apache2.4/conf/httpd.conf 中搜索 /ServerName ,而後將 # ServerName www.example.com:80 前的# 去除掉,保存退出便可
      • 把Require all denied 改爲
        • 如果不更改,那麼訪問會是 403

第一處:取消警告信息

1.在運行/usr/local/apache2.4/bin/apachectl start 會跳出警告信息sql

[root@tianqi-01 php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf     //ctrtl+z退出下apache

[1]+     已中止                             vim /usr/local/apache2.4/conf/httpd.confvim

[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl restart     //會看到警告信息windows

AH00557: httpd: apr_sockaddr_info_get() failed for hanfeng瀏覽器

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

[root@tianqi-01 php-7.1.6]# fg //回到剛暫停的任務中——>vim /usr/local/apache2.4/conf/httpd.conf

在文件中搜索 /ServerName

而後將 # ServerName www.example.com:80 前的# 去除掉保存退出便可

2.在去除# 號以後,運行apache,會提示79行錯誤

  • 緣由:是由於在最後調用了兩個PHP,加載了兩個PHP,致使衝突
  • 解決方法:只須要註釋掉一個PHP便可

[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl restart
httpd not running, trying to start
/usr/local/apache2.4/bin/apachectl: line 79:  1341 Segmentation fault      $HTTPD -k $ARGV

3.在註釋掉一個PHP後,就會發現不提示警告信息了

[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl start
[root@tianqi-01 php-7.1.6]# 

4.查看httpd進程

[root@tianqi-01 php-7.1.6]# ps aux |grep httpd
root       1407  0.0  0.8 253576  8900 ?        Ss   11:59   0:00 /usr/local/apache2.4/bin/httpd -k restart
daemon     1408  0.0  0.8 540404  8980 ?        Sl   11:59   0:00 /usr/local/apache2.4/bin/httpd -k restart
daemon     1409  0.0  0.8 540404  8980 ?        Sl   11:59   0:00 /usr/local/apache2.4/bin/httpd -k restart
daemon     1410  0.0  0.8 540404  8980 ?        Sl   11:59   0:00 /usr/local/apache2.4/bin/httpd -k restart
root       6919  0.0  0.0 112660   980 pts/0    R+   13:51   0:00 grep --color=auto httpd
[root@tianqi-01 php-7.1.6]# 

5.由於在打開了ServerName,就不在提示警告信息了

第二處:更改Require all denied

1.首先,咱們能夠用瀏覽器訪問本身虛擬機的IP,會發現沒法訪問

 

  • 則會提示檢查代理服務器和防火牆

2.遇到這種問題,排查方法

 

3.先查看IP是不是通的,用物理機去ping 虛擬機的 IP

4.若IP是通的,再去判斷80端口是不是通的——>用物理機去ping80端口

5.由於windows 並無打開telnet 客戶端,因此會提示並無這個命令

6.打開telnet客戶端——>注意:不要打開Telnet服務端,不然會監聽23端口,不安全

    1. 打開物理機的控制面板
    1. 而後選擇程序
    1. 再選擇打開或關閉Windows功能
    1. 選擇Telnet客戶端,並打開

输入图片说明

7.如果能夠運行 telnet 命令,那出來的則是一個結果,顯示80並不通

  • 由於在linux虛擬機上,並無打開80端口

8.在虛擬機上,使用iptables -nvL 命令,會查看到80端口並無打開

[root@tianqi-01 php-7.1.6]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 6747   16M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    1    60 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    1    52 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
  128 16576 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 6465 packets, 2119K bytes)
 pkts bytes target     prot opt in     out     source               destination         
[root@tianqi-01 php-7.1.6]# 

顯示80端口並無打開

9.若想要windows機器去訪問它,還須要加上一個操做

  • 單獨一條命令,臨時加上80端口——> iptables -I INPUT -p tcp --dport 80 -j ACCEPT

[root@tianqi-01 php-7.1.6]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@tianqi-01 php-7.1.6]# 

10.這時再用物理機去訪問虛擬機IP,則會顯示 It works!

11.以前不能正常訪問,就是因爲防火牆的規則,沒有加上80端口,不能正常訪問

12.這時打開windows來查看80端口,這樣的界面表示80端口通了

13.在物理機中按 ctrl+] 退出來,而後在按 quit 字符退出

14.這時刪除以前加的那條規則,再來物理機查看虛擬機的80端口,會發現不通了

[root@tianqi-01 php-7.1.6]# iptables -D INPUT -p tcp --dport 80 -j ACCEPT
[root@tianqi-01 php-7.1.6]# 

15.這時在把規則添加上,會發現又能夠正常訪問了

16.有時瀏覽器去訪問虛擬機的IP,會顯示 403Forbidden 錯誤界面

  • 這是由於在/usr/local/apache2.4/conf/httpd.conf配置文件中,有一個Require all denied
    • 而後搜索 /denied ,

17.打開/usr/local/apache2.4/conf/httpd.conf配置文件

[root@tianqi-01 php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf

而後搜索 /denied ,會看到

<Directory />
    AllowOverride none
    Require all denied
</Directory>

把 denied 改爲 granted

18.以前能夠在瀏覽器正常訪問虛擬機ip,是由於

[root@tianqi-01 php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf

是由於DocumentRoot指定了Directory,即以下:

DocumentRoot "/usr/local/apache2.4/htdocs"

<Directory "/usr/local/apache2.4/htdocs">

還有後面的

Require all granted

</Directory>

如果將這裏的Require all granted改爲Require all denied ,從新加載以後,那確定沒法瀏覽。

19.在更改完配置文件,須要從新加載配置

  • /usr/local/apache2.4/bin/apachectl -t //檢查你修改的配置文件是否存在錯誤
    • -t參數,會檢查你修改的配置文件是否存在語法錯誤
      • 若語法不對,則會報錯

[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@tianqi-01 php-7.1.6]# 

從新加載配置文件

  • graceful 只會從新加載配置文件,而不會重啓你的服務
    • 就是說即便你的配置文件有問題,它最多加載不成功,而不會把你的進程殺掉

[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 php-7.1.6]# 

20.在配置文件中的,兩處位置都應該改爲granted,這是爲了防止你在打開虛擬主機配置文件的時候,顯示403Forbidden(403是它的狀態碼,正常狀況下,狀態碼都是200)

第三處:由於要支持php,因此要增長一行php相關的配置

  • 若是不增長這一行,那麼php就沒法解析

[root@tianqi-01 php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf

搜索 /AddType,而後

        AddType application/x-compress .Z

        AddType application/x-gzip .gz .tgz

 

在這兩行下面,增長php一行

AddType application/x-httpd-php .php

第四部分,增長一個索引頁

  • 索引頁做用:在打開一個網站時,爲何不輸入index.php就能夠直接訪問呢

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

搜索 /Index ,找到

<IfModule dir_module>

    DirectoryIndex index.html

</IfModule>

在index.html後加 index.php

顯示爲

<IfModule dir_module> DirectoryIndex index.html index.php

</IfModule>

  • 而後檢查配置文件是否有錯誤

[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@tianqi-01 php-7.1.6]# 

  • 而後從新加載配置文件

[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 php-7.1.6]# 

檢查Apache是否支持解析php5

1.驗證

  • 寫一個測試php腳本
    • 在訪問的時候,訪問的是htdocs下的文件
  • phpinfo,能夠把php的相關信息打印出來

[root@tianqi-01 php-7.1.6]# vim /usr/local/apache2.4/htdocs/1.php
[root@tianqi-01 php-7.1.6]# 

在文件中寫入

<?php
phpinfo();
?>

保存退出

2.而後在瀏覽器訪問虛擬機ip地址並添加頁面地址(IP/index.php),而後會看到顯示出內容——>增長一個文件是不須要重啓php的

192.168.11.136/1.php

3.當看到php正常顯示,如上圖,那說明php支持支持解析

4.若是php不支持解析(以上四步驟錯誤一處),那麼刷新頁面顯示出來的則是源代碼(就是 1.php 文件中的代碼)

5.若是遇到php沒法解析,則去檢查Apache的配置文件

第一項,查看是否加載php5模塊,使用/usr/local/apache2.4/bin/apachectl -M命令

  • 若是沒有加載這個模塊,查看這個模塊是否存在。使用 ls /usr/local/apache2.4/modules/libphp5.so查看文件是否存在,如果文件都沒有,那麼確定不會加載這個模塊

[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_event_module (static)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)
 php5_module (shared)
[root@tianqi-01 php-7.1.6]# 

[root@tianqi-01 php-7.1.6]# ls /usr/local/apache2.4/modules/libphp5.so
/usr/local/apache2.4/modules/libphp5.so
[root@tianqi-01 php-7.1.6]# 

第二項,若是有文件,但沒有顯示php模塊,那麼就要去看apache的配置文件中有沒有加載 libphp5 這一行配置,在文件中搜索/libphp5 ,若是沒有這一行配置,那麼確定也是沒法解析的

[root@tianqi-01 php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf

在文件中搜索/libphp5,看是否加載了這一行配置

LoadModule php5_module        modules/libphp5.so

第三項,檢查配置文件中是否加載了 AddType application/x-httpd-php .php 這一行 -

在 .php 前面有一行空格,須要注意下!不能遺忘!!!——>使用 /usr/local/apache2.4/bin/apachectl -t 能夠檢查出配置寫錯了

第四項,檢查是否加了 index.php

在訪問一個網站的時候,好比訪問www.baidu.com的時候,並不用是www.baidu.com/index.php訪問,會發現,兩個訪問出的頁面是相同的,就是由於這裏有索引頁(或者叫作index頁),它默認能跳轉到這個頁面下去。包括直接輸入虛擬機ip的時候,也會訪問到 It works!這是訪問到的是 index.html ,就是由於咱們定義了一個index。

[root@tianqi-01 php-7.1.6]# ls /usr/local/apache2.4/htdocs/
1.php  index.html
[root@tianqi-01 php-7.1.6]# 

檢查Apache是否支持解析php7

1.在配置文件中,註釋掉php5,打開php7

[root@tianqi-01 php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf

在文件中搜索 /libphp7.so,而後註釋掉php5打開php7

# LoadModule php5_module modules/libphp5.so

LoadModule php7_module modules/libphp7.so

2.快捷鍵 ctrl+r ,能夠快速執行命令歷史中所用過的一些命令

  • 在快捷鍵 ctrl+r 以後,而後輸入命令的一些字母,就會顯示出你使用過的命令

3.而後檢查配置文件是否存在語法錯誤,並從新加載配置文件

[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@tianqi-01 php-7.1.6]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 php-7.1.6]# 

4.會看到更換了php7以後,用物理機訪問虛擬機的ip,也會正常顯示

输入图片说明

5.在瀏覽器打開看到的phpinfo,和/usr/local/php7/bin/php -i |less看到的結果基本是一致的,只不過一個是文本形式,一個是圖形化,圖形化看起來更加直觀,清晰明瞭

[root@tianqi-01 php-7.1.6]# /usr/local/php7/bin/php -i |less

phpinfo()
PHP Version => 7.1.6

System => Linux tianqi-01 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64
Build Date => Feb 28 2018 10:09:13
Configure Command =>  './configure'  '--prefix=/usr/local/php7' '--with-apxs2=/usr/local/apache2.4/bin/apxs' '--with-config-file-path=/usr/local/php7/etc' '--with-pdo-mysql=/usr/local/mysql' '--with-mysqli=/usr/local/mysql/bin/mysql_config' '--with-libxml-dir' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--with-bz2' '--with-openssl' '--with-mcrypt' '--enable-soap' '--enable-gd-native-ttf' '--enable-mbstring' '--enable-sockets' '--enable-exif'
Server API => Command Line Interface
Virtual Directory Support => enabled
Configuration File (php.ini) Path => /usr/local/php7/etc
Loaded Configuration File => (none)
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)

內容太多,上面只是截取了一部分

11.16/11.17Apache默認虛擬主機

httpd的默認虛擬主機目錄概要

  • 一臺服務器能夠訪問多個網站,每一個網站都是一個虛擬主機
  • 概念:域名(主機名)、DNS、解析域名、hosts
  • 任何一個域名解析到這臺機器,均可以訪問的虛擬主機就是默認虛擬主機
  • vim /usr/local/apache2/conf/httpd.conf //搜索httpd-vhost,去掉#
  • vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //改成以下 <VirtualHost *:80> ServerAdmin admin@aminglinux.com DocumentRoot "/data/wwwroot/aming.com" ServerName aming.com ServerAlias www.aming.com ErrorLog "logs/aming.com-error_log" CustomLog "logs/aming.com-access_log" common

</VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.123.com </VirtualHost> - /usr/local/apache2/bin/apachectl –t - /usr/local/apache2/bin/apachectl graceful

默認虛擬主機 - 默認虛擬主機,能夠理解成Apache(也就是httpd),一個服務下面跑多了多個網站,跑了多個域名。例子,假如在服務器上,它既能訪問百度,又能訪問谷歌,這是兩個不一樣的網站,但同時都在一臺服務器運行着,就用了一個httpd的服務,這個就是一個網站多個域名,每個域名對着一個虛擬主機 。1.更改hosts

 在windows下去寫hosts 1. hostsl路徑地址,這個和linux下的hosts相似

打開物理機C盤 ——而後選擇Windows——再選擇System32 ——選擇dirvers ——選擇etc——選擇hosts,右鍵屬性

2.能夠在這個裏面定義一個IP,定義一個域名,而後讓這個域名指向到這個IP上去

3.打開方式選擇 記事本

4.打開文件,會看到windows下的hosts

输入图片说明

5.而後在hosts文件中,任何一處位置加入一行,而後保存!

格式:先IP,而後空格,加域名——>域名能夠寫多個,一行裏面能夠有多個域名

  • 這個IP地址爲虛擬機的IP

192.168.11.136 www.abc.com www.123.com

6.而後物理機去ping 網址,能看到都能ping通

7.正常狀況下,不寫hosts,去ping——>將hosts中添加的一行註釋掉

#192.168.11.136 www.abc.com www.123.com

8.而後再去物理機去ping www.abc.com,會看到IP是公網IP

9.這個就是hosts的做用,它的目的就是讓你臨時訪問到一個服務器上去

  • 好比用www.abc.com,用www.123.com把這個域名指向到這臺機器上去——>這是在DNS尚未生效的時候使用

10.這時候在將hosts中加入的那一行# 去掉

192.168.11.136 www.abc.com www.123.com
11.而後用物理機中的瀏覽器去訪問www.abc.com或www.123.com,會看到正常訪問

12.瀏覽器去訪問www.123.com/1.php,會看到正常訪問

13.或許會有一個疑問,123.com和abc.com,包括這個IP並無在httpd的配置文件中去定義它,在配置文件中僅僅定義了 www.example.com這個域名,這個叫作Apache的默認主機 。也就是說,任何一個域名,指向到這個 IP,它都會訪問到這個站點,這個站點就叫作默認虛擬主機——>注意:是虛擬主機。

  • 若是沒有作任何操做,僅僅使用了httpd.conf,它實際上就是主配置文件定義的這個ServerName,以DocumentRoot ,但這樣不太好管理,畢竟一臺服務器上能夠跑多個域名,若不想域名都指向到這裏,因此須要打開一個虛擬主機配置文件

14.打開虛擬主機,在/usr/local/apache2.4/conf/httpd.conf 配置文件中

[root@tianqi-01 php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf

搜索/extra 關鍵詞,下面一行就作虛擬主機

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

把#Include conf/extra/httpd-vhosts.conf前面的 #號去掉

顯示爲:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

15.由於配置文件僅僅能定義一個ServerName,因此如今打開一個二級配置文件

  • 二級配置文件就是虛擬主機配置文件
    • 在這個配置文件裏,是能夠定義多個ServerName的

[root@tianqi-01 php-7.1.6]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

打開配置文件,會發現有兩個<VirtualHost *:80> ,每個<VirtualHost >都是一對出現的,每個<VirtualHost >都表明着一個主機,一個主機就是一個網站。

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com    //定義管理員的郵箱——>可刪除
    DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com"//定義網站的根目錄在哪裏
    ServerName dummy-host.example.com    //服務器名字
    ServerAlias www.dummy-host.example.com    //定義別名,別名就是一個網站能夠有多個域名訪問,好比能夠是abc.com訪問,也能夠是www.abc.com訪問,訪問的內容是一致的
    ErrorLog "logs/dummy-host.example.com-error_log"    //錯誤日誌
    CustomLog "logs/dummy-host.example.com-access_log" common    //訪問日誌
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/local/apache2.4/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

16.在打開虛擬主機配置文件後,作一個更改

  • 更改後

17.更改完配置文件,就去建立對應的目錄

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

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

18.在對應的站點根目錄下建立,定義一個php

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

在文件中寫入

<?php
echo "abc.com";

並保存退出

19.而後在/data/wwwroot/111.com/index.php中也定義一個php

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

在文件中寫入

<?php
echo "111.com";

並保存退出

20.在定義完以後,去檢查服務是否有錯誤

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

21.而後從新加載配置文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# 

22.定義一個網站最核心的參數就是網站的根目錄在哪裏,訪問的域名是什麼,ServerName只能寫一個,而ServerAlias能夠寫多個域名

虛擬主機常識

  • 一旦讓虛擬主機配置文件生效了,那麼以前定義的www.example.com就會失效了

測試虛擬主機

curl -x命令

1.好比說,如今要訪問abc.com,若不去綁定hosts,那麼在虛擬機中ping www.abc.com會ping到外網上去,並無在這臺機器上。若想要訪問abc.com在在這臺機器上,能夠編輯/etc/hosts文件去指定下,或者使用curl -x選項

[root@tianqi-01 ~]# curl -x192.168.11.136:80 abc.com
abc.com[root@tianqi-01 ~]# curl -x192.168.11.136:80 www.abc.com
abc.com[root@tianqi-01 ~]# curl -x192.168.11.136:80 www.abcd.com
abc.com[root@tianqi-01 ~]# 

在訪問abcd.com時,會發現訪問的仍是abc.com,這個在以前不管把任何域名指向到192.168.11.136這臺機器上,都會訪問到htdocs目錄下面去,但如今發生了轉變,不管什麼域名指向過來,它都會訪問到abc.com,abc.com是咱們虛擬主機配置文件裏邊的第一個虛擬主機,它就是默認虛擬主機。

默認虛擬主機,就是不管訪問什麼域名,只要解析到192.168.11.136這個IP上,它都會訪問這個網站對應的虛擬主機配置(這個默認虛擬主機就是abc.com)。

2.這時再來訪問www.example.com

abc.com[root@tianqi-01 ~]# curl -x192.168.11.136:80 www.example.com
111.com[root@tianqi-01 ~]# 

  • 在httpd主配置文件中有定義,在Virtual hosts虛擬主機中也有定義,結果訪問到了111.com

總結

  1. 在主配置文件中,httpd.conf裏面,打開了虛擬主機配置文件,也就是刪除到 # 號,那虛擬主機配置就生效了,一旦虛擬主機配置文件生效,那主配置文件裏面所定義的DocumentRoot以及ServerName失效。
  2. 虛擬主機配置文件一旦打開,能夠定義不少個VirtualHost,每個VirtualHost都都有一個對應的 DocumentRoot 和 ServerName ,每個VirtualHost都表明着一個站點,都是一個虛擬主機。在虛擬主機裏面有一個特殊的默認虛擬主機,所謂默認虛擬主機就是不管任何域名解析到這個IP上,都會去訪問默認虛擬主機。

友情連接:阿銘Linux

相關文章
相關標籤/搜索