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

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

hot3.png

Apache和php结合

内容:

httpd主配置文件httpd.conf
• vim /usr/local/apache2.4/conf/httpd.conf //修改以下4个地方
ServerName
Require all denied \将denied 修改成granted
AddType application/x-httpd-php .php \这一行就是用来让apache来解析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/htodc s/test.php //增加如下内容

<?php echo 123; ?>

• curl localhost/test.php


配置httpd支持php

修改4个地方

[root@linux-129 ~]# vim /usr/local/apache2.4/conf/httpd.conf

第一:将ServerName 前面的注释取消,这样在启动的时候就不会提示了下列信息了:

[root@linux-129 ~]# /usr/local/apache2.4/bin/apachectl startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::a690:a058:18a8:eb11. Set the 'ServerName' directive globally to suppress this message

再次启动

[root@linux-129 ~]# /usr/local/apache2.4/bin/apachectl starthttpd (pid 2484) already running

查看进程

[root@linux-129 ~]# ps aux |grep httpdroot      2484  0.0  0.4 264288  9056 ?        Ss   13:20   0:00 /usr/local/apache2.4/bin/httpd -k startdaemon    2485  0.0  0.4 551116  9076 ?        Sl   13:20   0:00 /usr/local/apache2.4/bin/httpd -k startdaemon    2486  0.0  0.4 551116  9072 ?        Sl   13:20   0:00 /usr/local/apache2.4/bin/httpd -k startdaemon    2489  0.0  0.4 551116  9076 ?        Sl   13:20   0:00 /usr/local/apache2.4/bin/httpd -k startroot      2574  0.0  0.0 112680   972 pts/0    S+   13:22   0:00 grep --color=auto httpd

查看端口

[root@linux-129 ~]# netstat -lnptActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program nametcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1011/sshdtcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1721/mastertcp6       0      0 :::3306                 :::*                    LISTEN      1319/mysqldtcp6       0      0 :::80                   :::*                    LISTEN      2484/httpdtcp6       0      0 :::22                   :::*                    LISTEN      1011/sshdtcp6       0      0 ::1:25                  :::*                    LISTEN      1721/master[root@linux-129 ~]#

我们在window上面测试一下:输入服务器IP地址

发现打不开网页

检查一下IP是否ping通常,端口是否正常

IP能真正ping通

在windows上用telnet命令,需要在控制面板-程序-打开或者关闭window功能将telnet客户端打开

这个提示就是端口没有打开。

可能是防火墙的问题,没有打开80端口

我们手动添加以下80端口

[root@linux-129 ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

添加完以后我发现在windows上还是还是telnet不同服务器的80端口,我将iptables的规则清除以后,重新添加了这条规则后在次测试

再检查一下:

这种就是成功了。

然后再浏览器上测试一下:

有时候我们在访问网页的时候提示403 Forbindden:拒绝访问

第二:我们需要将denied修改成granted,允许所有的请求

第三:找到AddType 增加: AddType application/x-httpd-php .php

这一行就是用来让apache来解析php的。

第四:增加索引页,index.php

第五:检查模块当中是否添加了libphp5

[root@linux-129 ~]# ls /usr/local/apache2.4/modules/libphp5.so/usr/local/apache2.4/modules/libphp5.so

第六:检查配置文件里面有没有加载LoadModule php5_module modules/libphp5.so

-t 检查配置文件是否正确

[root@linux-129 ~]# /usr/local/apache2.4/bin/apachectl -t   Syntax OK

重新加载配置文件 :graceful,重新加载配置,但不会重启服务

[root@linux-129 ~]# /usr/local/apache2.4/bin/apachectl graceful

验证apache支持解不解析php

我们在浏览器上测试的时候,访问的网页的目录是在/usr/local/apache2.4/htdocs/目录下的index.php;
我们在目录下面创建一个php的文件,看它是否能解析

[root@linux-129 ~]# vim /usr/local/apache2.4/htdocs/1.php

在网页上测试:

表示解析成功

[root@linux-129 ~]# vim /usr/local/apache2.4/htdocs/1.php

我们也可以在使用php7来解析

重新加载配置

phpinfo查看的内容和/usr/local/php/bin/php -i 差不多 。

默认虚拟主机目录

编辑apache配置文件

[root@linux-129 ~]# vim /usr/local/apache2.4/conf/httpd.conf

访问的域名;

ServerName www.example.com:80
一台服务器上面可以有多个虚拟主机,每一个虚拟主机都会对应一个域名(当然也可以定义多个),只要把这个域名解析指向该台服务器,我们就能访问这个站点了;
域名解决:我们访问一个网站,需要在浏览器里面输入域名,然后就能访问到网站的内容,这个过程就是需要浏览器和远程服务器通信,网站内容就是从服务器上读取的,而这个服务器是由你访问的域名来决定去哪里找的,而域名之所以决定服务器在哪里,就是因为这个域名做了解析指向,域名解析服务器IP地址,这个行为由DNS服务器来完成的。

服务器上游很多域名,很多站点,很多虚拟主机,这些域名都在httpd配置文件中做过标记,都是一一对应的,每一个域名都能对应自己的虚拟主机。但是有一个特殊的域名也指向服务器,却没有跟它对应的虚拟主机时,httpd就会把这个域名直接丢给默认虚拟主机来来完成,简单来说如果一个域名指向一台服务器,但是没有她没有对应的虚拟主机,就会由默认虚拟主机来处理。


那我们怎么样来创建虚拟主机呢?

1.编辑配置文件/usr/local/apache2.4/conf/httpd-conf,搜索httpd-vhosts,将前面#去掉;
[root@linux-129 ~]# vim /usr/local/apache2.4/conf/httpd.conf

2.保存主配置文件,然后编辑虚拟虚拟主机配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf

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

VirtualHost都是一对上下对应的,一对VirtualHost表示一个虚拟主机,一个网站。

ServerAdmin

定义管理员邮箱,可以不要
DocumentRoot
定义虚拟主机域名的根目录
ServerName
定义域名,servername只能定义一个。
ServerAlias
定义域名别名,只有serveralias可以写多个域名 。
ErrorLog
定义错误日志
CustomLog
定义访问日志

常识:一旦这里定义的虚拟主机生效,前面的默认虚拟主机DocumentRoot就不会生效了

使用curl 来测试 :
curl -x IP:端口 域名

[root@linux-129 ~]# curl -x192.168.88.129:80 www.abc.comabc.com[root@linux-129 ~]# curl -x192.168.88.129:80 abc.comabc.com[root@linux-129 ~]# curl -x192.168.88.129:80 www.123.comabc.com[root@linux-129 ~]# curl -x192.168.88.129:80 www.123anc.comabc.com[root@linux-129 ~]# curl -x192.168.88.129:80 111.com111.com[root@linux-129 ~]# curl -x192.168.88.129:80 www.example.com

总结:

第一:只要在apache的主配置文件中打开了了Virtual hosts,那么主配置文件里面的DocumentRoot和ServerName就会失效

第二:只要打开了Virtual hosts(虚拟主机),它里面可以定义很多virtualhost,每一个virtualhost都有一个对应的documentroot和servername,每一个virtualhost都代表着一个站点,都是一个虚拟主机;在虚拟主机里面有一个比较特殊的就是默认虚拟主机,就是里面的第一个virtualhost;什么是默认虚拟主机,就是无论哪个域名解析到这台服务器的IP地址,它都会访问这个默认虚拟主机。

转载于:https://my.oschina.net/u/3866516/blog/1921880

你可能感兴趣的文章
ReentrantLock和synchronized的区别
查看>>
判断JavaScript对象为null或者属性为空
查看>>
注意事项
查看>>
警惕Java,欢迎Javascript
查看>>
进程间传递文件描述符
查看>>
深入浅出linux三剑客之sed必杀技一例
查看>>
用C#.NET编写软件注册机
查看>>
SQL server分页方式
查看>>
Android IPC机制(二)用Messenger进行进程间通信【转】
查看>>
Javascript 严格模式详解
查看>>
Python3入门 Python3+Selenium做UI页面测试的学习
查看>>
两种查找算法的比较
查看>>
Spotlight监控工具使用
查看>>
依赖倒置三个原则
查看>>
[LeetCode] Contains Duplicate II
查看>>
ng-file-upload - samples
查看>>
BZOJ5339:[TJOI2018]教科书般的亵渎——题解
查看>>
svn完整搭建
查看>>
SQL XML 2
查看>>
关于jetty和webx对于HttpServletResponse getWriter和getOutputStream的处理
查看>>