11.14/11.15 Apache和PHP结合

1 配置httpd支持php

httpd主配文件:

/usr/local/apache2/conf/httpd.conf

2 vim /usr/local/apache2/conf/httpd/conf

root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf

//修改以下4个地方 ServerName 开启 Require all denied

[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf
 AddType application/x-httpd-php.php

在此添加“AddType application/x-httpd-php .php”,意思是允许PHP服务解析该服务器。

Directorylndex index.html index.php 增加索引页

3 /usr/local/apache2.4/bin/apachectl -t //测试语法

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

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

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful

//注:该命令只是加载配置文件的内容
5 netstat -lntp //查看是否有监听端口

[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
//防火墙添加允许规则

6 curl localhost //模拟访问

7 vim /usr/local/apache2.4/htodcs/1.php //增加如下内容

[root@localhost ~]# vim /usr/local/apache2.4/htodcs/1.php

<?php
     echo 123;
?>
[root@localhost ~]# vim /usr/local/apache2.4/htdocs/phpinfo.php
<?php
    phpinfo();
?>

#可以解析PHP代码,如果不支持,访问该文件时会显示源代码。
如果服务器无法解析PHP代码: 解决方法: 1. 检查Apache是否加载PHP模块 2. 检查系统中有没有PHP模块 3. 检查Apache配置文件中是否有错误或者没有加载PHP的配置

[root@localhost ~]# vim /usr/local/apache2.4/htdocs/1.php

#phpinfo() 在访问该地址时,直接打印PHP的相关信息
8 curl localhost/test.php

[root@localhost ~]# curl localhost/1.php
123

11.16/11.17 Apache默认虚拟主机

  • 一台服务器可以访问多个网站,每个网站都是一个虚拟机主机
    • 概念:域名(主机名)、DNS、解析域名、hosts
    • 任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
    • 打开vhost配置,httpd的servername,document失效
      vim /usr/local/apache2/conf/httpd.conf //搜索httpd-vhost,去掉# 配置Apache配置文件,取消注释掉的虚拟主机参数
[root@localhost ~]# vim /usr/local/apache2/conf/conf/httpd.conf
# Virtual hostsInclude conf/extra/httpd-vhosts.conf
# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf
# Distributed authoring and versioning (WebDAV)
#Include conf/extra/httpd-dav.conf:wq

1 编辑虚拟主机配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //改为如下

<VirtualHost *:80>
    ServerAdmin webmaster@abc.com
    DocumentRoot "/home/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    customLog "logs/abc.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@111.com
    DocumentRoot "/home/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.123.cn
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>
  • 此时即定义了一个网站,定义网站的核心参数即为
  • DocumentRoot(网站根目录)
  • ServerName(域名)
  • 注意: 虚拟主机生效后,原Apache配置文件中的默认主机(www.example.com ~ 192.168.0.173)就会失效(在此用www.example.com ~ 111.com进行验证)
  • 如果在windows系统下测试,需要配置hosts,用文档编辑器编辑,推荐notepad++
    hosts路径:C:\Windows\System32\drivers\etc\hosts
  • 如果是linux,需要编辑hosts,vim /etc/hosts

2 修改目录权限

<Directory />
    AllowOverride none
    Require all denied
</Directory>
#如果不想对上面做设置,那就需要在下面对虚拟机的文件目录做设置,不然403
<Directory /home/wwwroot>
    AllowOverride none
    Require all granted
</Directory>

3 测试

[root@localhost home]# curl -x127.0.0.1:80 abc.com
abc.com
[root@localhost home]# curl -x127.0.0.1:80 111.com
111.com
[root@localhost home]# curl -x127.0.0.1:80 www.abcd.com
abc.com
[root@localhost home]# curl -x127.0.0.1:80 123.com
abc.com
[root@localhost home]# curl -x127.0.0.1:80 111.com
111.com
[root@localhost home]# curl -x127.0.0.1:80 localhost
abc.com
[root@localhost home]# curl -x127.0.0.1:80 www.12.cn
abc.com
[root@localhost home]# curl -x127.0.0.1:80 www.123.cn
111.com
[root@localhost home]# curl -x127.0.0.1:80 www.111.com
abc.com
[root@localhost home]# curl -x127.0.0.1:80 www.123.cn
111.com
[root@localhost home]#
  • 你输入任何一个域名都指向到192.168.0.173它都会访问到htdocs下面
  • 你访问什么域名 ,只要揭晓到这个ip,都会访问到abc.com 默认的虚拟主机就是abc.com
  • 主机配置文件打开,里面可以定义多个host,每一个virtural host 都docunmentroot ,以及servername ,每一个host 代表一个站点,代表一个虚拟主机
  • 虚拟主机,无论任何域名解析到这个ip 上,都会去访问默认虚拟主机,