(四)Apache和PHP结合

配置http支持PHP

  • http的主配置文件为/usr/local/apache2.4/conf/httpd.conf

这里须要修改配置文件中的4处,分别为:
ServerName
Require all denied
AddType application/x-httpd-php .php
DirectoryIndex index.html index.phpphp

步骤 :
修改ServerNamehtml

  • 示例: 运行下面的命令时出现疑似错误的东西,其实它是个警告,那么改怎么去除呢
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe34:4a63. Set the 'ServerName' directive globally to suppress this message

解决方法:编辑这个文件,而后重启就没有了
进入配置文件后搜索ServerNamelinux

#进入配置文件
[root@centos001 ~]# vim /usr/local/apache2.4/conf/httpd.conf
#搜索
/ServerName

  • 错误1:视屏中遇到的错误,取消掉注释后重启服务,仍是有问题

    解决方法:出现错误的缘由是加载了两个php模块 注释掉一个就能够了

修改Require all deniedapache

为何要修改?修改的目的是,容许全部请求,若是不设置该行,则咱们访问的时候会报403错误。
修改内容在第6步vim

  • 示例: 打开浏览器链接咱们虚拟机的ip,
    错误a

    解决方法:
    1.先用cmd链接咱们的ip 测试连通性

    2.链接80端口,下图是正常的,由于咱们的虚拟机没有开启80端口,因此链接失败
    centos

    错误b: cmd中使用telnet报错

    解决方法:
    缘由:pc端的80端口关闭了
    打开控制面板==>>程序和功能==>>启用关闭windos功能==>>勾选Telnet客户端

    3.开启虚拟机上的80端口浏览器

# 检查80端口是否开启
[root@centos001 ~]# iptables -nvL
#开启80端口
[root@centos001 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

4.用cmd从新链接虚拟机80端口,检查

5.用浏览器链接虚拟机ip

6.修改配置文件服务器

#打开配置文件
[root@centos001 ~]# vim /usr/local/apache2.4/conf/httpd.conf
#修改成
Require all granted

命令补充 :
/usr/local/apache2.4/bin/apachectl -t //测试修改完配置文件后的语法是否规范
/usr/local/apache2.4/bin/apachectl start //启动服务
/usr/local/apache2.4/bin/apachectl graceful//从新加载配置文件,并不会重启服务php7

增长配置文件AddType application/x-httpd-php .phpapp

若是不增长这行,你的PHP没法解析

#打开配置文件
vim /usr/local/apache2.4/conf/httpd.conf
#找到位置粘贴
 AddType application/x-httpd-php .php

增长DirectoryIndex index.html index.php

增长一个索引页

测试是否能正确解析PHP

测试

1.编写一个测试脚本

#建立一个叫1.php的文件
[root@centos001 ~]# vi /usr/local/apache2.4/htdocs/1.php
#写入以下信息,保存退出
<?php
phpinfo(); //这个函数 能吧php的相关信息打印出来
?>

2.打开浏览器,在虚拟机ip后面加上文件名/1.ph

排错:

当没法正确解析的时候,咱们该如何排错呢?

方法:
这时候咱们须要检查Apache的配置文件
1.检查php模块是否加载

[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -M

.若是没有加载怎么办? 检查一下是否有这个文件

[root@centos001 ~]# ls /usr/local/apache2.4/modules/libphp7.so 
/usr/local/apache2.4/modules/libphp7.so

.若是有这个文件可是没有加载,咱们就应该到配置文件中去注释并加载出来

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


2.检查配置文件是否有写或者写错没有

/usr/local/apache2.4/bin/apachectl -t //测试修改完配置文件后的语法是否规范

3.有没有加index.php索引页

输入网站地址后面通常都默认自动添加这个


Apache默认虚拟主机

介绍

  • 先来介绍“虚拟主机”:早起的linux服务器上,一个服务器只能运行一个网站,依旧是说只能跑一个网站。可是随着技术的发展, 一个服务器能跑多个域名了。这里的服务器就叫作主机,早期一个主机对应一个站点。如今一个主机能跑多个站点,因此就有了虚拟主机的概念。在一台服务器上虚拟出多个主机,这样就实现了一台服务器上跑多个站点。
    服务器上能有多高虚拟机,每一个虚拟机都会定义一个域名(也能是多个),只要吧这个域名解析指向这个服务器,就能访问这个站点了。
  • 什么叫解析指向?
    咱们访问一个网站,须要在浏览器里面输入域名,而后就能访问到网站内容。这个过程是须要远程服务器通讯的,网站内容就是从服务器上读取到的。而这个服务器是由你访问的域名来决定在哪里的,而域名之因此能决定服务器在哪里,就是由于这个域名作了解析指向。域名解析服务器ip地址,这个行为室友dns服务器决定的。 假如你访问的域名指向了你的服务器,而你又在这台服务器上作了配置标记了这个域名,这个域名就能被正常访问。
  • 什么是默认虚拟主机?任何一个域名指向这台服务,只要没有对应的虚拟主机,就会由这个默认虚拟主机来处理。任何一个域名解析到这台机器,均可以访问的虚拟主机就是默认虚拟主机

示例

为了更清除的认识一下,咱们先来作个实验

  • 在windos下写hosts

windos下的hosts有什么用呢? 答:能够定义一个ip、一个域名,而后让这个域名指向到这个ip去 1.找到hosts所在目录,并用记事本打开
2.打开后 添加

3.用cmd测试一下

虚拟主机管理

1.编辑配置文件httpd.conf(这个文件是httpd服务的主配置文件)

vim /usr/local/apache2.4/conf/httpd.conf //搜索httpd-vhost,去掉#

2.更改虚拟主机配置文件

#进入配置文件
[root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
#更改后的配置文件内容
<VirtualHost *:80> //一段这样开头的就是一个虚拟主机
    DocumentRoot "/data/wwroot/abc.com"//定义虚拟主机站点(网站)的根目录
    ServerName abc.com //网站名
    ServerAlias www.abc.com www.123.com //别名能够是多个
    ErrorLog "logs/abc.com-error_log"  //错误日志
    CustomLog "logs/abc.com-access_log" common //访问日志
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/data/wwroot/111.com"	
    ServerAlias www.example.com
    ServerName 111.com
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

3.添加虚拟主机相应目录

[root@centos001 ~]# mkdir /data/wwroot/
[root@centos001 ~]# mkdir /data/wwroot/abc.com
[root@centos001 ~]# mkdir /data/wwroot/111.com

4.在相应目录建立PHP文件

[root@centos001 ~]# vim /data/wwroot/abc.com/index.php
#文件内容以下
<?php
echo "abc.com";
#另外一个虚拟机的
[root@centos001 ~]# vim /data/wwroot/111.com/index.php
<?php
echo "111.com";
#检查读写
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
#重启服务
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl graceful

虚拟主机测试

1.若是不在虚拟机中进行本地域名配置(hosts),在进行ping命令测试虚拟主机域名时会访问到外网

[root@centos001 ~]# ping abc.com
PING abc.com (199.181.132.250) 56(84) bytes of data.
64 bytes from 199.181.132.250 (199.181.132.250): icmp_seq=1 ttl=128 time=252 ms

2.curl -x命令
curl -x 指定访问端口

此时访问全部未定义的域名都会将访问地址指向到默认虚拟主机,由于已经自定义添加了虚拟主机,因此此时的默认虚拟主机为配置文件“httpd-vhosts.conf”中的第一个虚拟主机(在此为abc.com)

[root@centos001 ~]# curl -x192.168.10.120:80 abc.com
abc.com[root@centos001 ~]# curl -x192.168.10.120:80 abcf.com
abc.com[root@centos001 ~]# curl -x192.168.10.120:80 www.example.com
111.com[root@centos001 ~]# curl -x192.168.10.120:80 111.com
相关文章
相关标签/搜索