11.14-11.15 Apache和PHP结合 


到目前为止,虽然安装好了apache,mysql,php,但是还没有将他们结合在一起。

虽然apache利用php调用了一个模块,但是还没有做实验,还不知道他们能不能解析php.

所以现在得编辑一下Apache,httpd的配置文件。

httpd主配置文件/usr/local/apache2.4/conf/httpd.conf

image.png

课程操作,

# vim /usr/local/apache2.4/conf/httpd.conf 主要修改以下几个地方

1,开启80端口,把#ServerName www.exaple.com:80的#删除。

2,搜索Require all denied

改成Require all granted

3,找到

AddType application/x-gzip .gz .tgz

在该行下面添加一行:

AddType application/x-httpd-php .php

4,找到DirectoryIndex

修改为:

DirectoryIndex index.html index.php


启动Apache的时候,会有以下报错信息提示,要使它不出现,

[root@centos7-01 ~]# /usr/local/apache2.4/bin/apachectl start

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::243c:86d7:d85e:224d. Set the 'ServerName' directive globally to suppress this message

操作,

#vim /usr/local/apache2.4/conf/httpd.conf

搜索ServerName,把#ServerName www.exaple.com:80的#删除。

#/usr/local/apache2.4/bin/apachectl start



#vim /usr/local/apache2.4/conf/httpd.conf

搜索Require all denied

改成Require all granted

以为不修改参数 会登录失败的。

遇到这种报错,

image.png

1 先ping IP连通性

2 测试端口是否连同

ip通,端口不通,这是因为没有开启80端口

加载80端口

[root@Centos7-01 php-5.6.30]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

添加规则让防火墙开通80端口的访问


#vim /usr/local/apache2.4/conf/httpd.conf

找到

AddType application/x-gzip .gz .tgz

在该行下面添加一行:

AddType application/x-httpd-php .php

如果不添加这行,php没办法解析

找到DirectoryIndex

修改为:

DirectoryIndex index.html index.php

每次修改完httpd配置文件后 

利用/usr/local/apache2.4/bin/apachectl graceful    重新加载修改服务


 /usr/local/apache2.4/bin/apachectl -t //测试语法,检查配置是否有错误

 /usr/local/apache2.4/bin/apachectl start //启动服务


 #vim /usr/local/apache2.4/htodcs/1.php //增加如下内容,以下内容可以把php的相关信息打印出来

<?php

phpinfo();

?>



打开浏览器登录192.168.189.128/1.php

发生错误

image.png


检查

1,检查 php5_module (shared)模块是否存在并shared状态

# /usr/local/apache2.4/bin/apachectl -M

2,/usr/local/apache2.4/modules/libphp5.so 是否存在

3,检查配置文件httpd有没有加载libphp5.so文件

LoadModule php5_module        modules/libphp5.so

4,检查httpd有没有加载这一行信息

AddType application/x-httpd-php .php

5,检查httpd有没有添加 index.php

6,检查参数符号有没有错,不要把中文的符号打上去,一定要英文符号。

7,关闭防火墙。

成功

image.png


11.16-11.17 httpd的默认虚拟主机。


1.php index.php 之所以在windows端被访问,

是因为/usr/local/apache2.4/conf/httpd.conf里的其中一项参数定义了网页路径为/usr/local/apache2.4/htdocs,而1.php index.php 又在里面。

#vim /usr/local/apache2.4/conf/httpd.conf

DocumentRoot "/usr/local/apache2.4/htdocs"

<Directory "/usr/local/apache2.4/htdocs">


准备工作,

# vim /usr/local/apache2.4/conf/httpd.conf

搜索

Virtual hosts,把#Include conf/extra/httpd-vhosts.conf的#去掉,修改如下

image.png


编辑虚拟主机的配置文件

#vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

blob.png

上述配置是,

格式<VirtualHost>***</VirtualHost>是一个虚拟主机了

每一个虚拟主机,代表着一个网站。

**内容可以是,

DocumentRoot 后面网页的路径,核心参数。

ServerName 网页的地址,只可以输入一个

ServerAlias 网页的别名,支持输入多个,


接下来,创建网站,

具体操作,创建目录,使其配置生效。

创建三个网站的父目录,

[root@centos7-01 conf]# mkdir /data/wwwroot/

[root@centos7-01 conf]# mkdir /data/wwwroot/abc.com

[root@centos7-01 conf]# mkdir /data/wwwroot/111.com

在对应站点目录创建站点文件index.php

[root@centos7-01 conf]# vim /data/wwwroot/abc.com/index.php

blob.png

[root@centos7-01 conf]# vim /data/wwwroot/111.com/index.php

blob.png

编辑php脚本,最后最好不要留空白行,不会导致结果有所区别。

脚本最后留了空白行输出结果会是,

image.png

而无留空白行,正确输出是,

image.png

[root@centos7-01 conf]# /usr/local/apache2.4/bin/apachectl graceful

[root@centos7-01 conf]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK


要想在本机访问abc.com和111.com

可以编辑/etc/hosts文件,或者使用curl -x (指定主机ip和端口)

[root@centos7-01 conf]# curl -x192.168.189.128:80 abc.com

abc.com[root@centos7-01 conf]# 

前缀abc.com表示已经成功指向默认虚拟主机。

abc.com[root@centos7-01 conf]# curl -x192.168.189.128:80 www.abcd.com

abc.com[root@centos7-01 conf]# 

abc.com[root@centos7-01 conf]# curl -x192.168.189.128:80 www.111.com

因为www.abcd.com没有被标记在虚拟主机里面,所以它会被指向默认虚拟主机abc.com里面。

abc.com[root@centos7-01 conf]# curl -x192.168.189.128:80 www.111.com

111.com[root@centos7-01 conf]#

因为111.com是第二个虚拟主机,已经被标住了,所以会在192.168.189.128:80指向它会进入111.com

要想宿主机(真实机windows)上登录网页,需要修改windows的hosts文件。

C:\Windows\System32\drivers\etc

blob.png

打开浏览器,尝试连接。

blob.png