博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache和PHP结合 Apache默认虚拟主机
阅读量:7298 次
发布时间:2019-06-30

本文共 9009 字,大约阅读时间需要 30 分钟。

hot3.png

[toc]

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

11.14 ~11.5 配置Apcahe(httpd)支持PHP

1.Apache(httpd)的主配置文件:/usr/local/apache2.4/conf/httpd.conf,编辑该文件

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

2.修改配置文件前,为何要修改ServerName

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl restartAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::1d7a:ffe8:8235:a2a5. Set the 'ServerName' directive globally to suppress this messagehttpd not running, trying to start/usr/local/apache2.4/bin/apachectl: 行 79:  2759 段错误               (吐核)$HTTPD -k $ARGV

2.1 把ServerName www.example.com:80前的#去除

fg返回上一条命令

修改它的目的是,允许所有请求,否则我们访问时回报403错误。

[root@xavi ~]# fgvim /usr/local/apache2.4/conf/httpd.conf

mark

2.2 再次启动/usr/local/apache2.4/bin/apachectl restart,失败是因为有两个

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl restarthttpd not running, trying to start/usr/local/apache2.4/bin/apachectl: 行 79:  2827 段错误               (吐核)$HTTPD -k $ARGV

回到vim /usr/local/apache2.4/conf/httpd.conf,找到79行,把句首加上#,但是任然报错,想起文档最后启用了两个PHP,应该禁止一个

mark

2.3 先关闭httpd,然后vim修改,再启动,否则报错:httpd not running, trying to start

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl restarthttpd not running, trying to start

3.启动httpd,查看是否启动成功:netstat -lnp |grep httpd,记住httpd三部曲:关闭-编辑-启动

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl stop[root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf[root@xavi ~]# /usr/local/apache2.4/bin/apachectl start

以下说明已经启动成功

[root@xavi ~]# netstat -lnp |grep httpdtcp6       0      0 :::80                   :::*                    LISTEN      3163/httpd

4. 修改denied

4.1为什么要修改,修改前,无法访问虚拟机IP,

mark

4.2 排查这个IP地址是否ping通

mark

4.3 在看看80端口是否通,结果没有telent

mark

  • 找到telent

mark

mark

mark

mark

此处暂停,不成功,有可能和之前课程里的iptables设置有关系。

分析,在查看iptables端口时没有出现80端口,修改一下iptable规则iptables -I INPUT -p tcp --dport 80 -j ACCEPT

[root@xavi htdocs]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT[root@xavi htdocs]# iptables -nvLChain INPUT (policy ACCEPT 82 packets, 15752 bytes) pkts bytes target     prot opt in     out     source               destination             0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destination             0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0               0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0               0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachableChain OUTPUT (policy ACCEPT 83 packets, 16131 bytes) pkts bytes target     prot opt in     out     source               destination             0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68

/usr/local/apache2.4/bin/apachectl start这句启动httpd80是关键

mark

mark

4-. 修改denied为granted,允许所有请求,防止访问时报403错误。

AllowOverride none Require all denied
AllowOverride none Require all granted

5.增加:AddType application/x-httpd-php .php,增加和php相关的配置,可以解析的php

AddType application/x-compress .ZAddType application/x-gzip .gz .tgzAddType application/x-httpd-php .php

6.修改为DirectoryIndex index.html index.php 访问网址时不需输入

DirectoryIndex index.html
DirectoryIndex index.html index.php

mark

mark

测试LAMP是否成功

1. 测试httptd配置文件是否正确:/usr/local/apache2.4/bin/apachectl -t

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK

正确的则显示为 “Syntax OK”,否则继续检查修改httpd配置文件。

1.2如果修改完成后,重新加载:/usr/local/apache2.4/bin/apachectl graceful

2.测试是否正确解析PHP

编写一个测试脚本,如下:

[root@xavi ~]# vim /usr/local/apache2.4/htdocs/test.php //写入如下内容

mark

2.1 注释掉 #AddType application/x-httpd-php .php,然后检查编辑有无错误,然后重新加载,解析失败

[root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf[root@xavi ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK[root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful

只能显示源代码了,无法解析 mark

2.4 出现源代码是,要从apache配置文件入手检查

第一项: /usr/local/apache2.4/bin/apachectl -M,看有没有php5_module (shared)这个模块
第二项:[root ~]# ls /usr/local/apache2.4/modules/libphp5.so

/usr/local/apache2.4/modules/libphp5.so

第三项,文件存在但在httpd配置中没有loadmoudle也是不行的

mark

第四项:AddType application/x-httpd-php .php

mark

3. index.php

很多php架构的网站其网址后缀都有index.php mark

3.1之前it works的由来:解析了index.html

[root@xavi ~]# ls /usr/local/apache2.4/htdocs/index.html  test.php

用php7做测试

1.修改httpd配置文件 vim /usr/local/apache2.4/conf/httpd.conf

mark

2.检查语法错误,重新加载配置

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK[root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful

mark

11.6 设置httpd默认虚拟主机

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

1.Windows下的hosts作用

hosts文件是一个没有扩展名的系统文件,它的主要作用是能加快域名解析,还可以屏蔽网站等。 windows的hosts

mark

1.1 windows xp/2003/vista/2008/7/8用户HOSTS文件是在“c:\windows\system32\drivers\etc,

注意这个文件一定是在系统盘,如果你的系统在D盘请自行修改前面的盘符。如下图所示

mark

在hosts下增加一下代码 mark

1.2 用windows下的cmd下,ping刚才输入的IP和网址,都可以ping通

mark

把刚才编辑的ip和网站都用#号注释掉,ping网址时显示的是公网的ip地址,而不是刚才虚拟试验机的ip mark

1.3 保存之前在hosts的编辑内容(IP和网址),打开浏览器,输入网址,显示itworks

mark

这里需要注意的是打开httpd服务:

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl start

同样也可访问test.php mark

2.编辑httpd配置文件

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

2.1在文件内容中搜索/extra,找到虚拟主机配置文件,然后把注释符去掉

mark

mark

今天再重新看笔记的时候发现到这里错了:昨天的报错就有httpd-vhosts,原来自己把#去除行选错了,选错httpd-manual.conf文件了

AH00526: Syntax error on line 36 of /usr/local/apache2.4/conf/extra/httpd-manual.conf:

mark

3. 编辑虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf

[root@xavi ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

mark

将其内容编辑为:

//每个VirtualHost代表一个主机,一个主机代表一个网站 #ServerAdmin webmaster@dummy-host.example.com //定义管理员的邮箱,作用不大可以删除 DocumentRoot "/data/wwwroot/abc.com" //指定网站的根目录在哪 ServerName abcd.com //定义网站名称,只能写一个 ServerAlias www.abcd.com www.123.com //设置网站别名,支持多个网站 ErrorLog "logs/abcd.com-error_log" //错误日志,保存和虚拟主机网站一样的名字方便读取 CustomLog "logs/abcd.com-error_log" common

3.1 虚拟主机生效后,原Apache配置文件中的默认主机(www.example.com 192.168.)就会失效。

DocumentRoot "/data/wwwroot/abcd.com" ServerName abcd.com ServerAlias www.abcd.com www.123.com ErrorLog "logs/abcd.com-error_log" CustomLog "logs/abcd.com-access_log" common
DocumentRoot "/data/wwwroot/xavi.com" ServerName xavi.com iServerAlias www.example.com ErrorLog "logs/xavi.com-error_log" CustomLog "logs/xavi.com-access_log" common

检查错误:

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK

3.2 创建和虚拟主机对应的站点根目录

[root@xavi ~]# mkdir /data/wwwroot/[root@xavi ~]# mkdir /data/wwwroot/abcd.com[root@xavi ~]# mkdir /data/wwwroot/xavi.com

mark

3.3在对应的站点根目录下创建index.php,vim

[root@xavi ~]# vim /data/wwwroot/abcd.com/index.php

也可简单编辑php代码,不加结尾

mark

[root@xavi ~]# vim /data/wwwroot/abcd.com/index.php[root@xavi ~]# vim /data/wwwroot/xavi.com/index.php

3.4 重新加载,注意此时要开http服务

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl gracefulhttpd not running, trying to start

3.5 打开httptd端口服务/usr/local/apache2.4/bin/apachectl start,重新加载

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl starthttpd (pid 7427) already running[root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful

4. curl命令curl -x192.168.72.130:80 abcd.com

4.1 403报错!!!

[root@xavi ~]# curl -x192.168.72.130:80 abcd.com403 Forbidden

Forbidden

You don't have permission to access /on this server.

想了很久,网上也没找打答案,想起403错误在上一章节提起过,查知道自己在httpd配置测试时该了一个地方,如下图:

mark

4.2 修改httpd.conf并测试虚拟主机

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl stop[root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf[root@xavi ~]# /usr/local/apache2.4/bin/apachectl start[root@xavi ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK[root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful[root@xavi ~]# curl -x192.168.72.130:80 abcd.comthis is a test[root@xavi ~]#

设置的虚拟主机配置中有两个,主从配置:设置server name时没有加www,所以访问的地址不在设定范围的都会默认访问到第一个虚拟机设置中

[root@xavi ~]# /usr/local/apache2.4/bin/apachectl stop[root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf[root@xavi ~]# /usr/local/apache2.4/bin/apachectl start[root@xavi ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK[root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful[root@xavi ~]# curl -x192.168.72.130:80 abcd.comthis is a test[root@xavi ~]#

注意: 虚拟主机生效后,即Virtual hosts生效,原Apache配置文件中的默认主机(www.example.com 192.168.72.130)就会失效

mark

mark

转载于:https://my.oschina.net/u/3960917/blog/2876444

你可能感兴趣的文章
林锐博士谈考研
查看>>
Vant Weapp小程序蹲坑之使用checkbox组件
查看>>
重载operator<<运算符时第二个参数最好不要写成指向对象的指针
查看>>
在ubuntu上编译 wpa_supplicant-2.6
查看>>
68ES6_解构_数组操作_对象操作
查看>>
poj——1470 Closest Common Ancestors
查看>>
Mysql Master/Slave Set Up
查看>>
自动化部署Newton版OpenStack (一)
查看>>
我的友情链接
查看>>
几个经典的Spring学习资料
查看>>
Objective-C 常用代码
查看>>
linux下IPTABLES配置详解
查看>>
由网络引起的打印故障和邮件问题
查看>>
xml相关
查看>>
如何将App从一个账号迁移到另一个账号?
查看>>
linux系统修改字符集
查看>>
phantomjs-截图比例
查看>>
javascript for of
查看>>
EF6 秘籍 2th:实体数据建模基础 (十二)使用条件过滤对象集合
查看>>
30天了解30种技术系列---(1)现代web应用服务器-Express.js
查看>>