Apache和PHP结合、Apache默认虚拟主机
5月28日任务
课程内容:
11.14/11.15 Apache和PHP结合
11.16/11.17 Apache默认虚拟主机
11.14/11.15 Apache和PHP结合
到目前为止虽然安装好了Apache、MySQL、PHP,但是还没有让他们结合在一起,虽然Apache调用了PHP作为它的模块,但是还没有做实验,还不知道是否能够解析PHP,所以还需要编辑一下Apache的也就是httpd的配置文件。
操作实例步骤如下:
[root@jimmylinux-002 ~]# /usr/local/apache2.4/bin/apachectl restart 重启服务时候出现的提示并非报错,而是一个警告信息,这个警告信息也是可以通过修改配置文件取消掉的。
[root@jimmylinux-002 ~]# vim /usr/local/apache2.4/conf/httpd.conf 修改以下4个地方
ServerName
Require all denied
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
修改好配置文件以后再重启服务 # /usr/local/apache2.4/bin/apachectl restart,如果出现以下报错,是因为配置文件中设置了PHP5和PHP7模块,把PHP7前面加上#注释掉即可。
重新启动服务已经没有之前的警告信息了
此时也可以通过IE访问虚拟机IP地址 192.168.52.129 是无法直接访问的,如果遇到这样的情况,首先我们要检查下IP地址是否可以ping通,如果可以ping通,可以使用Telnet看看是否能够远程 192.168.52.129 80 端口,默认Windows里面是没有安装Telnet的,可以在控制面板-->打开或关闭Windows功能,勾选Telnet客户端组件进行安装。
[root@jimmylinux-002 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT 可以使用命令方式打开80端口
这个时候再刷新IE浏览器就可以正常访问了
如果把配置文件改为Require all denied
可以使用这个命令/usr/local/apache2.4/bin/apachectl -t 检查语法是否正确,如果正确会显示“syntax ok” 如果配置故意写错,则会显示“tion”。
[root@jimmylinux-002 ~]# /usr/local/apache2.4/bin/apachectl graceful
改完之后需要重新加载配置文件,这个命令只是重新加载配置文件,并不会重启服务,即使配置文件有问题,也只是加载不成功而已,不会杀死进程。这个时候再刷新IE页面就不能够访问了
需要修改的第二个地方,把配置文件的Require all denied修改为Require all granted ,这是为了防止出现403 forbidden。
第三个地方,因为要支持PHP,所以要在配置文件中添加一行内容 AddType application/x-httpd-php .php
如果不增加这行的话,PHP无法解析。
第四个地方,在配置文件中添加一个索引页 index.php
通过上面的操作后可以验证下Apache是否支持解析PHP呢,可以写一个简单的脚本测试一下。
增加一个文件是不需要重启PHP的,在IE访问 192.168.52.129/1.php 可以正常访问并有如下截图内容就说明PHP支持解析了。
假如把配置文件的这一行AddType application/x-httpd-php .php 前面加一个#注释掉,再重新访问IE就会以源代码的方式显示出来。
如果遇到PHP不能够解析的情况,需要检查下Apache配置文件。第一、要检查是否加载php5这个模块,如果没有加载,要看看有没有这个文件,第二、如果有文件并没有显示,那么就需要检查配置文件有没有加载modules/libphp5.so,没有加载也是不能解析的,第三、检查配置文件是否有加这一行AddType application/x-httpd-php .php,第四、需要加index.php。
同样也可以使用php7版本进行解析,在配置文件中把php5加#注释掉,这样就是使用php7版本了。
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置文件后刷新IE浏览器就可以看到是php7版本的内容
11.16/11.17 Apache默认虚拟主机
可以通过修改Windows的host文件指定IP和域名,在Apache的配置文件并没有定义,这个就叫Apache的默认主机,也就是说任何一个域名只要指向到这个IP,同样都可以访问到这个站点,这个站点就叫默认虚拟主机。
C:\Windows\System32\drivers\etc
修改成以下形式
重新访问IE页面就会出现以下界面,同样可以正常访问。
通过上面步骤操作好以后,就可以编辑httpd.conf主配置文件,并删除vhost这一行的注释#
编辑虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
按照如下截图内容进行修改
然后创建对应的目录
vim /data/wwwroot/abc.com/index.php 需要在对应的站点根目录下创建一个配置文件
vim /data/wwwroot/111.com/index.php 另外一个也需要创建一个配置文件
定义好对应的站点根目录和配置文件后重新加载配置文件 /usr/local/apache2.4/bin/apachectl graceful
接下来测试一下虚拟主机
如果想在本机上访问abc.com,可以编辑host文件绑定,也可以使用curl命令。
无论访问什么域名,只要解析到这个IP上,都会访问这个网站对应的虚拟主机配置(这个虚拟主机配置就是abc.com)
总结:
1、如果在主配置文件中httpd.conf 打开了虚拟主机配置文件,把前面的#删除掉,这个时候虚拟主机配置文件生效,那么在httpd.conf定义的DocumentRoot以及ServerName失效。
2、虚拟主机配置文件一旦打开,它里面可以定义很多个VirtualHost,每个VirtualHost都有一个对应的DocumentRoot和ServerName,ServerName可以写多个,每一个VirtualHost都代表一个站点,都是一个虚拟主机,在虚拟主机里面有一个比较特殊的就是默认虚拟主机,所谓默认虚拟主机是指无论任何域名解析到这个IP上,都会去访问这个默认虚拟主机。