4.Apache和PHP结合 Apache默认虚拟主机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.Apache和PHP结合 Apache默认虚拟主机相关的知识,希望对你有一定的参考价值。

[toc]

Apache和php结合 Apache默认虚拟主机

11.14 ~11.5 配置Apcahe(httpd)支持PHP

1.Apache(httpd)的主配置文件:/usr/local/apache2.4/conf/httpd.conf,编辑该文件

[[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf

2.修改配置文件前,为何要修改ServerName

[[email protected] ~]# /usr/local/apache2.4/bin/apachectl restart
AH00558: httpd: Could not reliably determine the server‘s fully qualified domain name, using fe80::1d7a:ffe8:8235:a2a5. Set the ‘ServerName‘ directive globally to suppress this message
httpd not running, trying to start
/usr/local/apache2.4/bin/apachectl: 行 79:  2759 段错误               (吐核)$HTTPD -k $ARGV

2.1 把ServerName www.example.com:80前的#去除

fg返回上一条命令

修改它的目的是,允许所有请求,否则我们访问时回报403错误。

[[email protected] ~]# fg
vim /usr/local/apache2.4/conf/httpd.conf

技术分享图片

2.2 再次启动/usr/local/apache2.4/bin/apachectl restart,失败是因为有两个

[[email protected] ~]# /usr/local/apache2.4/bin/apachectl restart
httpd not running, trying to start
/usr/local/apache2.4/bin/apachectl: 行 79:  2827 段错误               (吐核)$HTTPD -k $ARGV

回到vim /usr/local/apache2.4/conf/httpd.conf,找到79行,把句首加上#,但是任然报错,想起文档最后启用了两个PHP,应该禁止一个

技术分享图片

2.3 先关闭httpd,然后vim修改,再启动,否则报错:httpd not running, trying to start

[[email protected] ~]# /usr/local/apache2.4/bin/apachectl restart
httpd not running, trying to start

3.启动httpd,查看是否启动成功:netstat -lnp |grep httpd

[[email protected] ~]# /usr/local/apache2.4/bin/apachectl stop
[[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf
[[email protected] ~]# /usr/local/apache2.4/bin/apachectl start

以下说明已经启动成功

[[email protected] ~]# netstat -lnp |grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      3163/httpd   

4. 修改denied

4.1为什么要修改,修改前,访问虚拟机IP

技术分享图片

4.2 排查这个IP地址是否ping通

技术分享图片

4.3 在看看80端口是否通,结果没有telent

技术分享图片

  • 找到telent

技术分享图片

技术分享图片

技术分享图片

技术分享图片

此处暂停,不成功,有可能和之前课程里的iptables设置有关系。

/usr/local/apache2.4/bin/apachectl start这句启动httpd80是关键

技术分享图片

技术分享图片

4-. 修改denied为granted,允许所有请求,防止访问时报403错误。

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

<Directory />
    AllowOverride none
    Require all granted
</Directory>

5.增加:AddType application/x-httpd-php .php,增加和php相关的配置,可以解析的php

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

6.修改为DirectoryIndex index.html index.php 访问网址时不需输入

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

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

技术分享图片

技术分享图片

测试LAMP是否成功

1. 测试httptd配置文件是否正确:/usr/local/apache2.4/bin/apachectl -t

[[email protected] ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

正确的则显示为 “Syntax OK”,否则继续检查修改httpd配置文件。

1.2如果修改完成后,重新加载:/usr/local/apache2.4/bin/apachectl graceful

2.测试是否正确解析PHP

编写一个测试脚本,如下:

[[email protected] ~]# vim /usr/local/apache2.4/htdocs/test.php //写入如下内容
<?php
   phpinfo(); //打印php的所有函数
?>

技术分享图片

2.1 注释掉 #AddType application/x-httpd-php .php,然后检查编辑有无错误,然后重新加载,解析失败

[[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf
[[email protected] ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[[email protected] ~]# /usr/local/apache2.4/bin/apachectl graceful

只能显示源代码了,无法解析
技术分享图片

2.4 出现源代码是,要从apache配置文件入手检查

第一项: /usr/local/apache2.4/bin/apachectl -M,看有没有php5_module (shared)这个模块
第二项:[[email protected] ~]# ls /usr/local/apache2.4/modules/libphp5.so

/usr/local/apache2.4/modules/libphp5.so

第三项,文件存在但在httpd配置中没有loadmoudle也是不行的

技术分享图片

第四项:AddType application/x-httpd-php .php

技术分享图片

3. index.php

很多php架构的网站其网址后缀都有index.php
技术分享图片

3.1之前it works的由来:解析了index.html

[[email protected] ~]# ls /usr/local/apache2.4/htdocs/
index.html  test.php 

用php7做测试

1.修改httpd配置文件 vim /usr/local/apache2.4/conf/httpd.conf

技术分享图片

2.检查语法错误,重新加载配置

[[email protected] ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[[email protected] ~]# /usr/local/apache2.4/bin/apachectl graceful

技术分享图片

11.6 设置httpd默认虚拟主机

1.Windows下的hosts作用

hosts文件是一个没有扩展名的系统文件,它的主要作用是能加快域名解析,还可以屏蔽网站等。
windows的hosts

技术分享图片

1.1 windows xp/2003/vista/2008/7/8用户HOSTS文件是在“c:\windows\system32\drivers\etc,

注意这个文件一定是在系统盘,如果你的系统在D盘请自行修改前面的盘符。如下图所示

技术分享图片

在hosts下增加一下代码
技术分享图片

1.2 用windows下的cmd下,ping刚才输入的IP和网址,都可以ping通

技术分享图片

把刚才编辑的ip和网站都用#号注释掉,ping网址时显示的是公网的ip地址,而不是刚才虚拟试验机的ip
技术分享图片

1.3 保存之前在hosts的编辑内容(IP和网址),打开浏览器,输入网址,显示itworks

技术分享图片

这里需要注意的是打开httpd服务:

[[email protected] ~]# /usr/local/apache2.4/bin/apachectl start

同样也可访问test.php
技术分享图片

2.编辑httpd配置文件

[[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf

2.1在文件内容中搜索/extra,找到虚拟主机配置文件,然后把注释符去掉

技术分享图片

技术分享图片

3. 编辑虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf

[[email protected] ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

技术分享图片

将其内容编辑为:

<VirtualHost *:80>                                     //每个VirtualHost代表一个主机,一个主机代表一个网站    
    #ServerAdmin [email protected]     //定义管理员的邮箱,作用不大可以删除
    DocumentRoot "/data/wwwroot/abc.com"                  //指定网站的根目录在哪
    ServerName abcd.com                                                   //定义网站名称,只能写一个
    ServerAlias www.abcd.com www.123.com                                             //设置网站别名,支持多个网站
    ErrorLog "logs/abcd.com-error_log"       //错误日志,保存和虚拟主机网站一样的名字方便读取
    CustomLog "logs/abcd.com-error_log" common
</VirtualHost>

3.1 虚拟主机生效后,原Apache配置文件中的默认主机(www.example.com 192.168.)就会失效。

<VirtualHost *:80>
    #ServerAdmin [email protected]
    DocumentRoot "/data/wwwroot/xavi.com"
    ServerName xavi.com
     ServerAlias www.example.com
    ErrorLog "logs/xavi.com-error_log"
    CustomLog "logs/xavi.com-access_log" </VirtualHost>

3.2 创建和虚拟主机对应的站点根目录

[[email protected] ~]# mkdir /data/wwwroot/
[[email protected] ~]# mkdir /data/wwwroot/abcd.com
[[email protected] ~]# mkdir /data/wwwroot/xavi.com

技术分享图片

在对应的站点根目录下创建index.php,vim

[[email protected] ~]# vim /data/wwwroot/abcd.com/index.php

<?php
echo "abc.com";
php?>

也可简单编辑php代码,不加结尾

技术分享图片

[[email protected] ~]# vim /data/wwwroot/111.com/index.php

报错,未找到原因

[[email protected] ~]# /usr/local/apache2.4/bin/apachectl -t
AH00526: Syntax error on line 36 of /usr/local/apache2.4/conf/extra/httpd-manual.conf:
Invalid command ‘LanguagePriority‘, perhaps misspelled or defined by a module not included in the server configuration

以上是关于4.Apache和PHP结合 Apache默认虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

PHP和Apache结合 Apache默认虚拟主机

apache和php结合apache的默认虚拟主机

Apache和PHP结合Apache默认虚拟主机

Apache和PHP结合,Apache默认虚拟主机

11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机

LAMPApach和php结合Apache默认虚拟主机