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

002823_fnob_3708406.png

修改ServerName

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

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

012130_vUJ2_3708406.png

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

012353_CiH1_3708406.png

012500_r4Ve_3708406.png

查看httpd的进程

012718_lhN8_3708406.png

修改Require all denied

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

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

添加80端口规则

032512_Wjot_3708406.png

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

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

033237_Yosv_3708406.png

033353_7xfj_3708406.png

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

033833_fJrH_3708406.png

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

033959_LpbL_3708406.png

重新加载配置文件

034131_yZpK_3708406.png

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

034122_pjfb_3708406.png

增加一行与PHP相关的配置

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

034642_QElX_3708406.png

增加一个索引页

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

034934_zy64_3708406.png

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

035139_Fgi4_3708406.png

验证Apache是否支持解析php5

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

035441_LVnZ_3708406.png

035606_6tGQ_3708406.png

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

035720_WR5q_3708406.png

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

040334_CM3R_3708406.png

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

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

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

040611_dJnz_3708406.png

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

040835_7CJq_3708406.png

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

041246_T348_3708406.png

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

041423_w9c8_3708406.png

验证Apache是否支持解析php7

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

042015_bSgO_3708406.png

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

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

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

042419_fTJu_3708406.png

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

042452_Y4ak_3708406.png

Apache默认虚拟主机

  • 一台服务器可以访问多个网站,每个网站都是一个虚拟主机
  • 概念:域名(主机名)、DNS、解析域名、hosts
  • 任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
  • vim /usr/local/apache2/conf/httpd.conf //搜索httpd-vhost,去掉#
  • vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //改为如下 <VirtualHost *:80> ServerAdmin admin@aminglinux.com 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

043220_SVyu_3708406.png

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

043530_QgbK_3708406.png

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

043632_xVSW_3708406.png

然后去看能不能ping通域名

043824_AZKS_3708406.png

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

044124_plgj_3708406.png

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

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

044354_EsVt_3708406.png

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

044452_XfmN_3708406.png

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

045110_i2AS_3708406.png

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

045436_C3LQ_3708406.png

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

045528_onuG_3708406.png

ServerAdmin webmaster@dummy-host.example.com,定义管理员的邮箱可以删掉

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 ,访问日志

修改虚拟主机配置文件

050411_Rbcb_3708406.png

创建对应的目录

050457_Iffb_3708406.png

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

050540_M0Ya_3708406.png

050708_BRpw_3708406.png

050800_8pUu_3708406.png

050828_epXu_3708406.png

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

050947_QLm2_3708406.png

测试虚拟主机

curl命令

curl -x访问指定端口

051453_eaEZ_3708406.png

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

052058_xUiE_3708406.png

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值