11.14/15 Apache 和 PHP 结合
httpd 的主配置文件是 / usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf #修改以下 4 个地方
(1) 搜索 www.example.com:80 , 去掉 #
ServerName #ServerName
(2) 搜索 Require all denied, 改为 Require all granted
Require all denied
(3) 在 AddType application/x-gzip .gz .tgz 下面加上如下一行
AddType application/x-httpd-php .php #注意 php .php 中需有一个空格
(4) 搜索 DirectoryIndex index.html, 改为如下:
DirectoryIndex index.html index.php
验证 apache 是否支持解析 PHP(测试 PHP 脚本)
- vim /usr/local/apache2.4/htodcs/test.php // 增加如下内容
- <?php
- echo 123;
- ?>
在浏览器中输入 PHP 所在虚拟机 IP, 如果能顺利打打页面则说明 apache 支持解析 PHP
curl localhost/test.php
遇到 PHP 解析不了问题的排查方法:
(1) 查看 apache 是否有加载 PHP 模块
/usr/local/apache2.4/bin/apachectl -M
(2) 查看是否有这个 PHP 模块
ls /usr/local/apache2.4/modules/libphp5.so
(3) 检查配置文件里是否有加载 PHP 模块的语句
- vim /usr/local/apache2.4/conf/httpd.conf
- LoadModule php5_module modules/libphp5.so
(4) 检查配置文件里是否有 AddType.. 的语句
- vim /usr/local/apache2.4/conf/httpd.conf
- AddType application/x-httpd-php .php
知识点:
- /usr/local/apache2.4/bin/apachectl -t #检查配置文件 httpd.conf 语法是否正确
- /usr/local/apache2.4/bin/apachectl graceful #重新加载配置文件 (不会重启服务)
- /usr/local/apache2.4/bin/apachectl start // 启动服务
- iptables -I INPUT -p tcp --dport 80 -j ACCEPT #开放 80 端口
- iptables -D INPUT -p tcp --dport 80 -j ACCEPT #关闭 80 端口
- netstat -lntp #查看系统监听的端口
11.16/17 Apache 默认虚拟主机 [疑难]
一台服务器可以有多个网站, 每个网站都是一个虚拟主机.
概念: 域名 (主机名)DNS 解析域名 hosts.
任何一个域名解析到这台机器, 都可以访问的虚拟主机就是默认虚拟主机.
- vim /usr/local/apache2.4/conf/httpd.conf #搜索 httpd-vhost, 去掉 #号
- vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf #改为如下:
- <VirtualHost *:80>
- 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.111.com
- ErrorLog "logs/111.com-error_log"
- CustomLog "logs/111.com-access_log" common
- </VirtualHost>
- /usr/local/apache2.4/bin/apachectl t
- /usr/local/apache2.4/bin/apachectl graceful
- mkdir -p /data/wwwroot/abc.com /data/wwwroot/www.111.com
- echo "abc.com" > /data/wwwroot/abc.com/index.html #网站默认的主页就是 index.html
- echo "111.com" > /data/wwwroot/111.com/index.html
- curl -x127.0.0.1:80 abc.com #这样会去访问 abc.com/index.html
- curl -x127.0.0.1:80 www.111.com #访问 www.111.com
- curl -x127.0.0.1:80 www.abc.com
结论:
在主配置文件 / usr/local/apache2.4/conf/httpd.conf 中把 #Include conf/extra/httpd-vhosts.conf 中的 #去掉后, 这时候虚拟主机配置文件就生效了.
虚拟主机配置文件一旦生效, 那主配置文件中 DocumentRoot 和 ServerName 定义的配置就失效了.
虚拟主机配置文件生效后, 在该配置文件中可定义多个 < VirtualHost:80></VirtualHost > 对, 每一对都有
DocumentRoot 和 ServerName, 其中 ServerName 可以写多个. 每一对 < VirtualHost:80></VirtualHost > 都代表一个站点
, 都是一个虚拟主机. 其中有一个比较特殊叫默认虚拟主机, 所谓默认虚拟主机就是无论任何域名解析到这个 IP 上, 它都会去访问这个默认虚拟主机.
来源: http://www.bubuko.com/infodetail-2511883.html