11.14/11.15 Apache和PHP结合
配置httpd支持php
root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf
#选择要使用PHP5或者PHP7解析
截图如下:
修改以下4个地方
- 第一个地方 ServerName 开启
#检索 ServerName 查找到如下这行,取消注释
#ServerName www.example.com:80
截图如下:
- 第二个地方 允许所有请求访问
#检索Directory 查找到Require all 这一行 denied修改成granted
<Directory />
AllowOverride none
Require all granted
</Directory>
#访问的时候会报403错误
截图如下:
- 第三个地方 授权PHP服务解析本机服务器
#在如下两行增加一行 AddType application/x-httpd-php .php
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
#在此添加“AddType application/x-httpd-php .php”,意思是允许PHP服务解析该服务器。
截图如下:
- 第四个地方
#检索 DirectoryIndex ,查找到如下行后增加 index.php
<IfModule dir_module>
DirectoryIndex index.html index.php
#增加索引页
</IfModule>
截图如下:
测试语法
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
启动服务 | 加载配置
#可以用start选项启动服务
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
#该命令只是加载配置文件的内容
查看端口
[root@taoyun ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 994/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1098/master
tcp6 0 0 :::80 :::* LISTEN 16461/httpd
tcp6 0 0 :::22 :::* LISTEN 994/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1098/master
tcp6 0 0 :::3306 :::* LISTEN 2196/mysqld
关闭防火墙
#未关闭防火墙,外网将无法访问
#iptables 临时增加允许通过80端口的规则 80端口 -D 选项是删除这条规则
[root@taoyun ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
测试是否能访问PHP页面
- vim test.php文件,直接在浏览器访问该ip地址(访问内部站点直接用ip地址访问)
[root@localhost ~]# vim /usr/local/apache2.4/htdocs/test.php
#可以解析PHP代码,如果不支持,访问该文件时会显示源代码。
如果服务器无法解析PHP代码,解决方法:
- 检查Apache是否加载PHP模块
- 检查系统中有没有PHP模块
- 检查Apache配置文件中是否有错误或者没有加载PHP的配置
效果截图如下:
PHP 版本页面
[root@localhost ~]# vim /usr/local/apache2.4/htdocs/1.php
#1.php内容下:
<?php phpinfo(); ?>
#在访问该1.php的时候,直接打印PHP的相关信息
效果截图如下:
curl测试
[root@localhost ~]# curl localhost/test.php
123[root@localhost ~]#
补充:快捷键 Ctrl+r
ctrl+r用途:反向检索并调用执行过的命令(reverse-i-search)
11.16/11.17 Apache默认虚拟主机
Apache虚拟主机的用途
- 一台服务器可以访问多个网站,每个网站都是一个虚拟机主机
- 概念:域名(主机名)、DNS、解析域名、hosts
- 任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
实施步骤 第一步,修改Apache配置文件参数
#路径
[root@taoyun src]# vim /usr/local/apache2.4/conf/httpd.conf
#检索 httpd-vhosts 查找到后去掉如下这行的注释
#Include conf/extra/httpd-vhosts.conf
去掉注释的截图如下:
第二步,编辑虚拟主机配置文件
#配置httpd-vhosts.conf文件的参数
[root@localhost ~]# 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-error_log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.example.com
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
内容定义说明:
- ServerAdmin:指定管理员邮箱,这个没有什么实质作用。
- DocumentRoot:指定域名所指向的地址(制定站点的根目录,用于存放网站文件的)
- ServerName:定义网站域名
- ServerAlias:定义别名(第二域名)可设置多个,用空格分隔。
- Errorlog:站点的错误日志
- Customlog:站点的访问日志。
此时即定义了一个网站,定义网站的核心参数即为:DocumentRoot(网站根目录)、ServerName(域名)。 注意: 虚拟主机生效后,原Apache配置文件中的默认主机(www.example.com ~ 192.168.19)就会失效(在此用www.example.com ~ 111.com进行验证)。
测试 && 加载
#需要设置站点的根目录,否则将会报错
root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@adailinux ~]# /usr/local/apache2.4/bin/apachectl graceful
虚拟主机测试
在此使用浏览器和curl命令分别进行测试,如果使用浏览器测试可以在Windows电脑中的 C:\Windows\System32\drivers\etc 目录下hosts文件中加入重定向域名,使直接访问Apache服务站点上,否则将无法测试,导致DNS直接解析到外网,从而访问外网网站,导致测试失败。 截图如下:
#curl测试
[root@taoyun src]# curl -x127.0.0.1:80 abc.com
abc.com [root@taoyun src]# curl -x127.0.0.1:80 111.com
111.com [root@taoyun src]#