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

Apache和PHP结合

  • httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
  • 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 -t //测试语法
  • /usr/local/apache2.4/bin/apachectl start //启动服务
  • netstat -lntp curl localhost vim /usr/local/apache2.4/htodcs/test.php //增加如下内容

<?php

echo 123;

?>

  • curl localhost/test.php

配置httpd支持php

打开httpd的配置文件,vim /usr/local/apache2.4/conf/httpd.conf

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

修改ServerName

之前,ctrl+z退出,运行/usr/local/apache2.4/bin/apachectl start ,会跳出一个警告

可以fg回到,编辑配置文件中,搜索/ServerName,去掉# ServerName www.example.com:80前面的#

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

然后注释掉PHP7,就不会出现警告了

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

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

查看httpd的进程

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

修改Require all denied

首先打开浏览器,直接访问ip,发现无法访问;

排查:首先ping ip是否是通的,然后判断80端口是否是通的,发现Windows没有打开Telnet客户端(控制面板-程序-打开或关闭Windows功能-Telnet客户端)

添加80端口规则

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

这时候访问ip,网页就会显示it works 

删除规则,就会发现ip又ping不通了,再增加规则就恢复通了

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

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

再到配置文件中搜索denied,将Require all denied改成Require all granted

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

检查配置文件语法是否正确

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

重新加载配置文件

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

如果配置文件中Require all denied没改,然后再刷新网页,会出现403Forbidden(正常是200)

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

增加一行与PHP相关的配置

首先搜AddType,找到下图中的上两行并增加一行AddType application/x-httpd-php .php

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

增加一个索引页

首先搜索Index,找到<IfModule dir_module>,如下图增加index.php

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

然后检查配置文件语法正误,再重新加载配置文件

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

验证Apache是否支持解析php5

首先写一个测试的php脚本,添加内容如下

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

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

然后在浏览器访问ip后面加上/1.php,出现以下界面表示解析成功

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

如果不支持解析,则访问的是源代码

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

注意:如果遇到解析不了的,要检查Apache配置文件

是否加载PHP5?执行/usr/local/apache2.4/bin/apachectl -M命令,查看有没有php5_module (shared)

查看/usr/local/apache2.4/modules/libphp5.so文件是否存在

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

在配置文件里看有没有加载 LoadModule php5_module    modules/libphp5.so这一行配置?

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

在配置文件中有没有加载AddType application/x-httpd-php .php

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

配置文件中有没有加了index.php

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

验证Apache是否支持解析php7

打开配置文件,输入/libphp7,在配置文件中注释掉PHP5,将PHP7前的注释符#去掉

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

快捷键 ctrl+r ,可以快速执行命令历史中所用过的一些命令;

使用方法:输入想要命令中的相同单词

然后检查配置文件语法正误,再重新加载配置文件

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

访问ip,网页出现如下图所示,也表示解析生效

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

Apache默认虚拟主机

  • 一台服务器可以访问多个网站,每个网站都是一个虚拟主机
  • 概念:域名(主机名)、DNS、解析域名、hosts
  • 任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
  • vim /usr/local/apache2/conf/httpd.conf //搜索httpd-vhost,去掉#
  • vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //改为如下 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/data/wwwroot/aming.com" ServerName aming.com ServerAlias www.aming.com ErrorLog "logs/aming.com-error_log" CustomLog "logs/aming.com-access_log" common </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.123.com </VirtualHost>
  • /usr/local/apache2/bin/apachectl –t
  • /usr/local/apache2/bin/apachectl graceful

windows下的hosts

hosts的位置 C:\Windows\System32\drivers\etc\hosts

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

用记事本打开方式打开Windows下的hosts

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

在其中添加两个域名保存,如下图

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

然后去看能不能ping通域名

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

如果不写hosts,去ping域名,发现会是公网ip

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

hosts的作用就是让你临时访问到一个服务器上去,一般在在DNS还没有生效的时候使用

然后访问ip,会出现如下图所示

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

同样可以访问www.123.com/1.php

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

在/usr/local/apache2.4/conf/httpd.conf 配置文件中,搜索/extra,找到virtual hosts,去掉下面一行前面的#,保存退出

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

然后打开一个二级配置文件(虚拟主机配置文件)

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

每对< VirtualHost *:80 >和< /VirtualHost >代表一个主机,就是一个网站

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

ServerAdmin [email protected],定义管理员的邮箱可以删掉

DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com",定义网站的根目录在哪

ServerName dummy-host.example.com,服务器名字

ServerAlias www.dummy-host.example.com ,定义别名(一个网站可以有多个域名访问)

ErrorLog "logs/dummy-host.example.com-error_log" ,错误日志

CustomLog "logs/dummy-host.example.com-access_log" common ,访问日志

修改虚拟主机配置文件

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

创建对应的目录

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

  1. 在对应的站点根目录下创建一个php,添加内容

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

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

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

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

然后检查配置文件语法正误,再重新加载配置文件

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

测试虚拟主机

curl命令

curl -x访问指定端口

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

再访问www.example.com,结果访问到了111.com

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

在主配置文件中,打开了虚拟主机配置文件,一旦虚拟主机配置文件生效,那主配置文件里面所定义的DocumentRoot以及ServerName失效

默认虚拟主机,就是无论访问什么域名,只要解析到这个IP上,它都会访问这个网站对应的虚拟主机

转载于:https://my.oschina.net/u/3708406/blog/1592383