apache和php结合

虽然我们现在已经安装好了apache,mysql,php。但是我们还没有让他们结合起来,虽然apache调用了php作为它的一个模块,但我们还不知道他是否能解析php。这时我们还需要去编辑一下httpd的配置文件。
它的配置文件是/usr/local/apache的全名名字/conf/httpd.conf

[root@linletao-001 ~]# vim /usr/local/apache2.4/conf/httpd.conf
在这里我们需要编辑几个地方
1.ServerName
在我们重启httpd的时候经常会遇到一下提示
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::df71:e49:bd9a:8b3. Set the 'ServerName' directive globally to suppress this message
乍一看上去是一个报错,但其实是一个警告,看着很别扭,我们想要删掉他。我们可以搜索
ServerName,然后将#ServerName www.example.com:80前面的“#”号删掉就可以。
完成后我们重启httpd,然后出现了另一个错误提示
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl start
/usr/local/apache2.4/bin/apachectl: 行 79: 1399 段错误 $HTTPD -k $ARGV
这是因为我们刚才在这里添加了两个php,我们只要在其中一个前面加一个“#”号注释掉就可以。
LoadModule php5_module modules/libphp5.so
#LoadModule php7_module modules/libphp7.so
然后我们重启httpd,就不会出现提示了。

2.Require all denied改成,Require all granted。如果不改这一行,我们是访问不到linux的ip的,他会提示我们检查服务器和防火墙,如果我们遇到这样的问题,首先应该查看我们的ip是否畅通。然后我们查看80端口是否畅通。先进入windows中的DOS模式,查看80端口是否打开,如果进入DOS后没有可以查找的命令,我们就进图windows的控制面板,进入程序,然后点击程序与功能,然后点击打开或关闭windows功能,点击telnet前面的方块,就安装上了telnet客户端,然后在DOS中输入telnet+IP地址+端口号查看,只要DOS界面无任何显示,就证明我们的80端口通了。如果不通,它则显示一直在连接。我们也可以用iptabs -nvL去查看80端口的是否打开。
[root@linletao-001 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2614 228K ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
1 60 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- lo 0.0.0.0/0 0.0.0.0/0
1 52 ACCEPT tcp --
0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
2370 2330K REJECT all --
* 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 2143 packets, 336K bytes)
pkts bytes target prot opt in out source destination
结果是没有打开,我们可以先用一条命令去打开80端口。
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
然后去windows的浏览器去输入我们虚拟机的ip,这时候就可以连通了。

有时候我们的浏览器连通了,却显示403,这是因为在我们的配置文件中有一个
Require all denied,我们要将denied改为granted,配置文件中有两处,都要改。
我们改完配置首先要去检查一下它的语法,比如我们要检查apache的配置文件语法,就可以这样输入
/usr/local/apache2.4/bin/apachectl -t //-t就是测试语法的参数
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK(出现这个提示,则证明语法正确)
然后重新加载配置文件,在文件的结尾处加graceful,重新加载。

3.增加一行和php相关的配置
AddType application/x-httpd-php .php
首先我们搜索ADDType
然后在AddType application/x-compress .Z和AddType application/x-gzip .gz .tgz的下面加一行,AddType application/x-httpd-php .php,这样就可以解析php了。

4.增加一个索引页
先进入配置文件进行编辑,然后找到# DirectoryIndex: sets the file that Apache will serve if a directory,
然后将它替换掉以前的文件,DirectoryIndex index.html index.php

然后我们验证一下apache是否可以验证php,先写一个测试的脚本
vim /usr/local/apache2.4/htodcs/1.php
内容如下
<?php
phpinfo();
?>
然后我们再浏览器中输入我们的ip后面接/1.php,如果出现页面,则证明成功,但是如果出现了源代码,则证明我们apache的配置文件出错了。一旦出错,我们需要检查一下一个方面。
1.查看加载模块有没有加载php
/usr/local/apache2.4/bin/httpd -M
但是如果没发现有php模块,我们则要查看一下有没有libphp5.so这个文件。
2.查找libphp5.so文件
[root@linletao-001 htdocs]# ls /usr/local/apache2.4/modules/libphp5.so
/usr/local/apache2.4/modules/libphp5.so
如果有,但是没有加载,我们就要去配置文件中有没有加载它
LoadModule php5_module modules/libphp5.so
如果有加载,我们还要去看他有没有AddType application/x-httpd-php .php
3.查找AddType application/x-httpd-php .php
这里一定要注意一下,在最后的.php前一定要加一个空格,不加空格的话语法检查会报错。
检查完这几步我们就可以解析我们的php了。
我们检查修改完配置文件后一定要做一个语法检测,然后再进行graceful加载,否则网站会出错。

anache默认虚拟主机

一台服务器可以访问多个网站,每个网站都是一个虚拟主机。
概念:域名(主机名)、DNS、解析域名、hosts
虚拟主机:任何一个域名,指向到这个ip,他都会访问到这站点,这个站点就叫默认虚拟主机。

windows下写hosts
这个文件在储存的位置在windiws/system32/drives/etc下,用记事本打开,在 For example:下先写入ip,然后后面写网站,保存退出。这样网站就会指向指定的ip。

打开apache的配置文件
vim /usr/local/apache2.4/conf/httpd.conf
查找extra,找到# Virtual hosts
然后将Include conf/extra/httpd-vhosts.conf前面的“#”去掉。
#Virtual hosts
Include conf/extra/httpd-vhosts.conf
保存退出。

然后我们打开一个二级配置文件,这个二级配置文件就是虚拟主机的配置文件。在这个配置文件中我们可以配置多个servename。他们都是以<VirtualHost :80>开始,以</VirtualHost>结束
虚拟主机配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost
:80>
ServerAdmin webmaster@dummy-host.example.com
(管理员邮箱,可以删除)

DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com"
(定义网站的根目录)我们可以修改为 DocumentRoot "/data/wwwroot/123.com",这还是要根据我们的实际网站名需求去改。ServerName dummy-host.example.com

(服务器名)可以改为123.com。可以根据实际情况,修改成网站名。

ServerAlias www.dummy-host.example.com
(服务器别名) www.123.com www.abc.com 可以根据实际情况,修改成网站名,而且可以写多个。

ErrorLog "logs/dummy-host.example.com-error_log"
错误日志,可根据实际情况改名。CustomLog "logs/dummy-host.example.com-access_log" common
访问日志,可根据实际情况修改。

</VirtualHost>
一对一对出现,这就代表着一台虚拟主机。一个主机就是一个网站。
定义一个网站最核心的是DocumentRoot和 ServerName。serveralias可以写多个,但ServerName只能写一个。

修改完后我们去创建对应的目录
[root@linletao-001 ~]# mkdir /data/wwwroot/
[root@linletao-001 ~]# mkdir /data/wwwroot/123.com
[root@linletao-001 ~]# mkdir /data/wwwroot/111.com
可根据网站名具体修改

然后在对应的站点根目录下创建一个index.php
[root@linletao-001 ~]# vim /data/wwwroot/123.com/index.php
然后在vim中编辑
<?php
echo "123.com";
然后保存退出。

[root@linletao-001 ~]# vim /data/wwwroot/111.com/index.php
<?php
echo "111.com";
保存退出

然后检查语法是否有错
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl -t
AH00526: Syntax error on line 33 of /usr/local/apache2.4/conf/extra/httpd-vhosts.conf:
ServerName takes one argument, The hostname and port of the server
这里面出现了一个错误,是在第33行。进入查看后发现是多写了一个网站名。所以要删除一个。
修改完后,重新加载。

我们可以用curl -x来测试,如果我们直接去ping域名的话,会直接ping到外网,
[root@linletao-001 ~]# ping 123.com
PING 123.com (61.132.13.130) 56(84) bytes of data.
64 bytes from 61.132.13.130 (61.132.13.130): icmp_seq=1 ttl=116 time=44.4 ms
64 bytes from 61.132.13.130 (61.132.13.130): icmp_seq=2 ttl=116 time=44.3 ms
64 bytes from 61.132.13.130 (61.132.13.130): icmp_seq=3 ttl=116 time=44.5 ms

这时我们用curl -x
[root@linletao-001 ~]# curl -x192.168.1.106:80 www.llt.com
123.com[root@linletao-001 ~]# curl -x192.168.1.106:80 www.789.com
123.com[root@linletao-001 ~]# curl -x192.168.1.106:80 www.123.com
123.com[root@linletao-001 ~]# curl -x192.168.1.106:80 www.1111.com
123.com[root@linletao-001 ~]# curl -x192.168.1.106:80 www.111.com
这时,我们可以看到无论什么网站,现在都会指定到123.com了。
我们输入网址,它就会搜索所有的配置段,如果配置段不存在,那么它就会自动跳转到我们的虚拟主机上。(这里的虚拟主机为123.com )

结论
1.要想虚拟主机生效,首先要在apache的配置文件中找到虚拟主机,虚拟主机名为# Virtual hosts
Include conf/extra/httpd-vhosts.conf,并将前面的“#”删除。这时虚拟主机配置文件生效了。
2.每一个虚拟主机都有多个virtualhost,每个virtualhost都有一个对应的ServerName和DocumentRoot,每一个virtualhost都有一个站点,每一个站点都代表一个虚拟主机。
3.在虚拟主机上有一个比较特殊的,叫虚拟默认主机,默认虚拟主机就是无论什么域名解析到这个ip上,它都会去访问这个默认虚拟主机。

转载于:https://blog.51cto.com/13067688/2103621

4.12任务 apache结合php以及apache默认虚拟主机相关推荐

  1. 预习:11.16/11.17 Apache默认虚拟主机-11.24 静态元素过期时间

    预习: 11.16/11.17 Apache默认虚拟主机 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 11.22 访问日志不记录静态文件 11 ...

  2. LAMP架构(apache与php结合,apache默认虚拟主机)

    一.apache与php结合 主配置文件/usr/local/apache2.4/conf/httpd.conf [root@localhost ~]# /usr/local/apache2.4/bi ...

  3. LAMP(4)Apach和php结合、Apache默认虚拟主机

                            Apach和php结合 1.修改apache配置文件   vim /usr/local/apache2.4/conf/httpd.conf (1)修改S ...

  4. 5月28日任务 Apache和PHP结合、Apache默认虚拟主机

    2019独角兽企业重金招聘Python工程师标准>>> 11.14 Apache和PHP结合 1.编辑httpd配置文件   vim /usr/local/apache/conf/h ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 11.14-11.15 Apache和PHP结合 Apache(httpd)的配置文件:/usr/local/apache2. ...

  6. 使用apache配置基于IP地址的虚拟主机

    使用apache配置基于IP地址的虚拟主机 第一步:设置多个IP地址 这里设置两个IP地址:192.168.1.5 和 192.168.1.8 第二步:在 httpd.conf 文件中加入如下内内容 ...

  7. Apache用户认证、默认虚拟主机、域名301跳转

    apache hosts配置文件: vim /usr/local/apache/conf/extra/httpd-vhosts.conf apache 主配置文件: vim /usr/local/ap ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 11.14/11.15 Apache和PHP结合 httpd主配置文件/usr/local/apache2.4/conf/ht ...

  9. 12.6-12.9 Nginx安装,默认虚拟主机,用户认证,域名重定向

    12.6 Nginx安装 大纲 1 进入src目录,把nginx下载在此目录 #cd  /usr/local/src #wget http://nginx.org/download/nginx-1.8 ...

最新文章

  1. JdbcTemplate类中的execute方法
  2. python解题软件哪个好_笔试 - 高德软件有限公司python问题 和 答案
  3. HDU 2049 不容易系列之(4)——考新郎( 错排 )
  4. Qt笔记-Q_UNUSED解决编译器unused paramenter告警
  5. 【Siddhi 5】Siddhi 自定义函数@Extension使用
  6. android 距离感应器控制屏幕熄灭_书房大变身!有格调的屏幕挂灯,加了它桌面秒变神仙颜值...
  7. 直接复制php的安装目录部署到其他服务器的时候,无法运行
  8. android学习资料_知乎上的高能Android学习资源来了,屏幕适配,性能优化,热修复NDk...
  9. Ruby gem 更换国内源
  10. 《IT项目管理》读书笔记(5) —— 项目时间管理
  11. Win11如何增强麦克风?Win11增强麦克风的设置
  12. 计算机综述论文能发期刊吗,计算机核心期刊哪些好发
  13. 地理位置数据存储方案——Redis GEO
  14. 4种文件扩展名被阻止时发送邮件附件的方法
  15. 2021-2027全球与中国豪华隐形眼镜市场现状及未来发展趋势
  16. 关于服务器登录用户信息查看的若干命令
  17. 加快C++代码的编译速度方法
  18. 三入职场 - 你可以从我身上学到这些(附毕业Vlog)
  19. 一次诡异的线上数据库的死锁问题排查过程
  20. 使用virt-manager 创建虚拟机

热门文章

  1. python程序写蛇_python蟒蛇绘制程序
  2. linux安装python_VTK:华为笔记本电脑+深度deepin-linux+python下安装和入门
  3. c语言编译及下载环境变量,windows 下使用g++ 编译器-Go语言中文社区
  4. win7蓝牙怎么连接_台式机蓝牙怎么连接
  5. 容器可以作为全局变量吗_四季青是风水树吗?哪些可以作为风水树?
  6. bootstrap 图片轮询_消息通知功能之前端Ajax定时轮询_后端接口获取数据一
  7. 时间序列 预处理 python_【Python算法】时间序列预处理
  8. 计算机网络及公文写作知识,计算机网络期末复习题
  9. 丹佛大学计算机科学专业,丹佛大学
  10. chrome插件 vscode_2020年,前端开发者必备的10个VS Code扩展插件