一、配置httpd支持php

1、在启动httpd时有如下警告,可忽略,也可修改如下地方,不让他出现

编辑 usr/local/apache2/conf/httpd.conf,搜索ServerName ,删除 ServerName www.example.com:80前的# 就OK了。

2、修改/usr/local/apache2/conf/httpd.conf中如下几个地方:

1)<Directory />
AllowOverride none
Require all denied
</Directory>

修改为:

<Directory />
AllowOverride none
Require all granted    #修改的目的是允许所有请求,不修改的话,访问的时候会报403错误。
</Directory>

 

2)AddType application/x-compress .Z   
     AddType application/x-gzip .gz .tgz   

修改为:

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php   #增加本行,解析php

3)<IfModule dir_module>
     DirectoryIndex index.html
     </IfModule>

修改为:

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

3、启动之前检查配置文件是否正确,命令为  /usr/local/apache2/bin/apachectl -t

 显示 Syntax OK 则配置正确,如果有报错,请依据报错提示进行修改。

4、启动httpd,检查是否启动成功   启动命令:/usr/local/apache2/bin/apachectl start

也可以使用curl命令测试是否成功启动  curl localhost

<html><body><h1>It works!</h1></body></html>  # 显示本行说明成功。

5、浏览器访问本机

访问不通,首先检查IP是否能通,IP通了,再检查80端口是打开,如果发现80端口没有打开。

打开80端口,使用命令打开  iptables -I INPUT -p tcp --dport 80 -j ACCEPT,此时能够用浏览器访问

二、测试能否正常解析PHP

1、 在 /usr/local/apache2/htdocs/ 写一个测试脚本,因为我们访问时就是访问的这个目录下的文件。

编辑 1.php,内容如下

<?php
phpinfo();
?>

浏览器访问,看是否能够解析,显示如下php信息说明解析成功。

 

2、如果显示源代码,说明解析不成功:

1)先检查httpd是否加载php5

/usr/local/apache2/bin/apachectl -M

是否有这一项  php5_module (shared),如果没有,

2)检查是否有 ls /usr/local/apache2/modules/libphp

libphp5.so  这个模块,如果没有肯定无法解析,需要重新安装php.

3)如果有,继续检查配置文件是否加载如下模块

LoadModule php5_module modules/libphp5.so,如果没有,那也不能解析

4)如果有,那么请检查上面提到的配置文件需要修改的几处地方是否添加修改,格式是否正确。

三、默认虚拟主机

1、 编辑 /usr/local/apache2/conf/httpd.conf,搜索 httpd-vhost

 Include conf/extra/httpd-vhosts.conf    删除该行前面的#。

2、编辑/usr/local/apache2/conf/extra/httpd-vhosts.conf 

3、编辑为如下内容

<VirtualHost *:80>
DocumentRoot "/data/testphp/aaa.com"
ServerName aaa.com
ServerAlias www.aaa.com www.123.com
ErrorLog "logs/aaa.com-error_log"
CustomLog "logs/aaa.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "/data/testphp/111.com
ServerName 111.com
ServerAlias www.example.com
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>

4、创建相应的目录与内容

mkdir -p /data/testphp/aaa.com

vim /data/testphp/aaa.com/index.php

内容为:

<?php
echo "aaa OK";
?>

mkdir -p /data/testphp/111.com

vim /data/testphp/111.com/index.php

内容为:

<?php
echo "111 OK";
?>

5、测试默认虚拟主机

1)重新加载配置文件

/usr/local/apache2/bin/apachectl graceful

2)此时 ping aaa.com,发现并没有到本机上,需要到/etc/hosts下编辑指定。

3)使用curl 命令测试

curl -x192.168.134.150:80 aaa.com 

我们发现asd.com 也访问到aaa.com上,这是因为aaa.com 是我们的默认虚拟主机,只要解析到192.168.134.150,都会访问到aaa.com

4)又发现访问 111.com  www.example.com时访问到111.com,

但访问www.111.com example.com 时又到了aaa.com,这是因为这两个域名在httpd-vhosts.conf 中没有指定,那么就会从httpd-vhosts.conf 中访问第一段。,

6、当我们打开httpd-vhosts.conf 虚拟主机,那么虚拟主机生效,则主配置文件定义的东西失效;

虚拟主机中可以定义多个VirtualHost ,每个VirtualHost 都是一个站点,一个虚拟主机。默认虚拟主机就是无论任何域名只要解析到该IP上,都会去访问这个默认虚拟主机。

 

posted on 2018-03-01 22:49  天梭  阅读(565)  评论(0编辑  收藏  举报