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
修改ServerName
之前,ctrl+z退出,运行/usr/local/apache2.4/bin/apachectl start ,会跳出一个警告
可以fg回到,编辑配置文件中,搜索/ServerName,去掉# ServerName www.example.com:80前面的#
然后注释掉PHP7,就不会出现警告了
查看httpd的进程
修改Require all denied
首先打开浏览器,直接访问ip,发现无法访问;
排查:首先ping ip是否是通的,然后判断80端口是否是通的,发现Windows没有打开Telnet客户端(控制面板-程序-打开或关闭Windows功能-Telnet客户端)
添加80端口规则
这时候访问ip,网页就会显示it works
删除规则,就会发现ip又ping不通了,再增加规则就恢复通了
再到配置文件中搜索denied,将Require all denied改成Require all granted
检查配置文件语法是否正确
重新加载配置文件
如果配置文件中Require all denied没改,然后再刷新网页,会出现403Forbidden(正常是200)
增加一行与PHP相关的配置
首先搜AddType,找到下图中的上两行并增加一行AddType application/x-httpd-php .php
增加一个索引页
首先搜索Index,找到<IfModule dir_module>,如下图增加index.php
然后检查配置文件语法正误,再重新加载配置文件
验证Apache是否支持解析php5
首先写一个测试的php脚本,添加内容如下
然后在浏览器访问ip后面加上/1.php,出现以下界面表示解析成功
如果不支持解析,则访问的是源代码
注意:如果遇到解析不了的,要检查Apache配置文件
是否加载PHP5?执行/usr/local/apache2.4/bin/apachectl -M命令,查看有没有php5_module (shared)
查看/usr/local/apache2.4/modules/libphp5.so文件是否存在
在配置文件里看有没有加载 LoadModule php5_module modules/libphp5.so这一行配置?
在配置文件中有没有加载AddType application/x-httpd-php .php
配置文件中有没有加了index.php
验证Apache是否支持解析php7
打开配置文件,输入/libphp7,在配置文件中注释掉PHP5,将PHP7前的注释符#去掉
快捷键 ctrl+r ,可以快速执行命令历史中所用过的一些命令;
使用方法:输入想要命令中的相同单词
然后检查配置文件语法正误,再重新加载配置文件
访问ip,网页出现如下图所示,也表示解析生效
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
用记事本打开方式打开Windows下的hosts
在其中添加两个域名保存,如下图
然后去看能不能ping通域名
如果不写hosts,去ping域名,发现会是公网ip
hosts的作用就是让你临时访问到一个服务器上去,一般在在DNS还没有生效的时候使用
然后访问ip,会出现如下图所示
同样可以访问www.123.com/1.php
在/usr/local/apache2.4/conf/httpd.conf 配置文件中,搜索/extra,找到virtual hosts,去掉下面一行前面的#,保存退出
然后打开一个二级配置文件(虚拟主机配置文件)
每对< VirtualHost *:80 >和< /VirtualHost >代表一个主机,就是一个网站
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 ,访问日志
修改虚拟主机配置文件
创建对应的目录
- 在对应的站点根目录下创建一个php,添加内容
然后检查配置文件语法正误,再重新加载配置文件
测试虚拟主机
curl命令
curl -x访问指定端口
再访问www.example.com,结果访问到了111.com
在主配置文件中,打开了虚拟主机配置文件,一旦虚拟主机配置文件生效,那主配置文件里面所定义的DocumentRoot以及ServerName失效
默认虚拟主机,就是无论访问什么域名,只要解析到这个IP上,它都会访问这个网站对应的虚拟主机
转载于:https://my.oschina.net/u/3708406/blog/1592383