1. 程式人生 > >十周第二次課

十周第二次課

apache php vhost

11.14/11.15 Apache和PHP結合

1 配置httpd支持php

httpd主配文件:

/usr/local/apache2/conf/httpd.conf

2 vim /usr/local/apache2/conf/httpd/conf

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

//修改以下4個地方 ServerName 開啟 Require all denied

[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf
 AddType application/x-httpd-php.php

在此添加“AddType application/x-httpd-php .php”,意思是允許PHP服務解析該服務器。

Directorylndex index.html index.php 增加索引頁

3 /usr/local/apache2.4/bin/apachectl -t //測試語法

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

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

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

//註:該命令只是加載配置文件的內容
5 netstat -lntp //查看是否有監聽端口

[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
//防火墻添加允許規則

6 curl localhost //模擬訪問

7 vim /usr/local/apache2.4/htodcs/1.php //增加如下內容

[root@localhost ~]# vim /usr/local/apache2.4/htodcs/1.php

<?php
     echo 123;
?>
[root@localhost ~]# vim /usr/local/apache2.4/htdocs/phpinfo.php
<?php
    phpinfo();
?>

#可以解析PHP代碼,如果不支持,訪問該文件時會顯示源代碼。
如果服務器無法解析PHP代碼: 解決方法: 1. 檢查Apache是否加載PHP模塊 2. 檢查系統中有沒有PHP模塊 3. 檢查Apache配置文件中是否有錯誤或者沒有加載PHP的配置

[root@localhost ~]# vim /usr/local/apache2.4/htdocs/1.php

#phpinfo() 在訪問該地址時,直接打印PHP的相關信息
8 curl localhost/test.php

[root@localhost ~]# curl localhost/1.php
123

11.16/11.17 Apache默認虛擬主機

  • 一臺服務器可以訪問多個網站,每個網站都是一個虛擬機主機
    • 概念:域名(主機名)、DNS、解析域名、hosts
    • 任何一個域名解析到這臺機器,都可以訪問的虛擬主機就是默認虛擬主機
    • 打開vhost配置,httpd的servername,document失效
      vim /usr/local/apache2/conf/httpd.conf //搜索httpd-vhost,去掉# 配置Apache配置文件,取消註釋掉的虛擬主機參數
[root@localhost ~]# vim /usr/local/apache2/conf/conf/httpd.conf
# Virtual hostsInclude conf/extra/httpd-vhosts.conf
# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf
# Distributed authoring and versioning (WebDAV)
#Include conf/extra/httpd-dav.conf:wq

1 編輯虛擬主機配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //改為如下

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/home/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>
    ServerAdmin [email protected]
    DocumentRoot "/home/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.123.cn
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>
  • 此時即定義了一個網站,定義網站的核心參數即為
  • DocumentRoot(網站根目錄)
  • ServerName(域名)
  • 註意: 虛擬主機生效後,原Apache配置文件中的默認主機(www.example.com ~ 192.168.0.173)就會失效(在此用www.example.com ~ 111.com進行驗證)
  • 如果在windows系統下測試,需要配置hosts,用文檔編輯器編輯,推薦notepad++
    hosts路徑:C:\Windows\System32\drivers\etc\hosts
  • 如果是linux,需要編輯hosts,vim /etc/hosts

2 修改目錄權限

<Directory />
    AllowOverride none
    Require all denied
</Directory>
#如果不想對上面做設置,那就需要在下面對虛擬機的文件目錄做設置,不然403
<Directory /home/wwwroot>
    AllowOverride none
    Require all granted
</Directory>

3 測試

[root@localhost home]# curl -x127.0.0.1:80 abc.com
abc.com
[root@localhost home]# curl -x127.0.0.1:80 111.com
111.com
[root@localhost home]# curl -x127.0.0.1:80 www.abcd.com
abc.com
[root@localhost home]# curl -x127.0.0.1:80 123.com
abc.com
[root@localhost home]# curl -x127.0.0.1:80 111.com
111.com
[root@localhost home]# curl -x127.0.0.1:80 localhost
abc.com
[root@localhost home]# curl -x127.0.0.1:80 www.12.cn
abc.com
[root@localhost home]# curl -x127.0.0.1:80 www.123.cn
111.com
[root@localhost home]# curl -x127.0.0.1:80 www.111.com
abc.com
[root@localhost home]# curl -x127.0.0.1:80 www.123.cn
111.com
[root@localhost home]#
  • 你輸入任何一個域名都指向到192.168.0.173它都會訪問到htdocs下面
  • 你訪問什麽域名 ,只要揭曉到這個ip,都會訪問到abc.com 默認的虛擬主機就是abc.com
  • 主機配置文件打開,裏面可以定義多個host,每一個virtural host 都docunmentroot ,以及servername ,每一個host 代表一個站點,代表一個虛擬主機
  • 虛擬主機,無論任何域名解析到這個ip 上,都會去訪問默認虛擬主機,

十周第二次課