您的位置:首页 > 运维架构 > Linux

2018-3-1 Linux学习笔记[疑难]

2018-03-01 18:23 232 查看

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 #查看系统监听的端口

遇到的问题:
1.用命令打开80端口显示成功,但实际并没打开.
解决:用iptables -F 清空规则后能访问,尽管firewall-cmd --query-port=80/tcp查询仍显示no.

注意事项: 测试时要确保httpd服务有开启,可用以下命令先检查下:
ps aux | grep httpd

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>

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/www.111.com/index.html

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

/usr/local/apache2.4/bin/apachectl graceful

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 #访问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上,它都会去访问这个默认虚拟主机.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Apache PHP 默认虚拟