十周第二次課
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 上,都會去訪問默認虛擬主機,
十周第二次課