第八章 web服务之apache(2)

第八章 web服务之apache(2)

8.3 虚拟主机

8.3.1 功能简介

若一台服务器上,需要架设多个站点,则可以通过虚拟主机技术来实现。但是虚拟主机技术的问题点在于该服务器内如何区分不同的站点。这里,有三种技术可以实现:基于ip、基于port(端口),基于域名。

1、基于ip的方式,需要一块网卡设置多ip,不同的站点工作在不同ip上。

可以使用如下命令给网卡增加ip:

ifconfig ens33:1 192.168.10.100 ---创建网卡子接口:1,设置ip

但是如上的设置仅是临时生效的,若要永久生效,还是需要使用nmtui命令配置。

不过,若服务器上架设较多的站点,那么一块网卡上会设置很多的ip,所以这种方式比较麻烦,而且服务器在公网上,需要使用公网ip,而公网ip是收费的,所以这种方式成本较高,不太实用。

2、基于port的方式,是让不同的站点工作在同一ip上,但在不同的端口上,如:让rzz在80口上、让baidu在800上,qq在8000等,但是这种方式需要客户端记忆不同站点的端口,很不方便客户的使用。所以这种方式也不很实用

3、基于域名的方式,是多个站点都工作在同一ip及80端口上,由于客户访问时多是使用域名的方式,所以我们的服务器也把不同站定绑定各自的域名,实现区分。这也就需要DNS服务器的支持。

8.4.2 基于域名的案例演示

我们仍使用之前的实验服务器,部署虚拟主机。本例中我们创建rzz2、rzz3两个站点。

首先,先来创建各网站的页面:

cd /var/www/html

mkdir rzz2 rzz3

echo www.rzz2.com > rzz2/index.html

echo www.rzz3.com > rzz3/index.html

然后再来编辑配置文件

vi /etc/httpd/conf/httpd.conf

#文件的最后追加

namevirtualhost 192.168.10.1 ---指定本机支持虚拟主机的网卡

<virtualhost 192.168.10.1:80> ---创建虚拟站点,指定ip和端口

servername www.rzz2.com ---设定FQDN

documentroot /var/www/html/rzz2 ---该虚拟主机的网页存放位置

</virtualhost>

<virtualhost 192.168.10.1:80> ---创建另一个虚拟站点

servername www.rzz3.com

documentroot /var/www/html/rzz3

</virtualhost>

保存退出

systemctl restart httpd ---重启服务

使用之前讲过的DNS服务,在服务器上面创建rzz2.com和 rzz3.com的区域,并设定好A记录指向本web服务器

客户端网卡设置好DNS,使用浏览器访问www.rzz2.com和www.rzz3.com可见访问成功。PS:在这我就偷个懒,不做演示截图了,读者可自行配置DNS验证,美其名曰锻炼一下大家的综合实验能力。

注:虚拟主机建立后,原服务器站点会失效。

8.4.3 虚拟主机管理设置

现在我们设定好了虚拟主机,但是像之前的访问控制、身份验证语句是不可以写到虚拟主机的容器(即<virtual></virtual>容器中)的。所以若要针对虚拟主机的站点设定访问控制及身份验证,需要专项配置。

cd /etc/httpd/conf.d ---进入配置文件的存放目录,apache固定指定在这里

vi rzz2.conf ---给某个虚拟主机单独设置管理配置文件

<directory "/var/www/html/rzz2"> ---针对网页路径,设置容器

#写入访问控制、身份验证语句

</direcroty>

注:针对rzz3的站点配置相同

systemctl restart httpd

重启服务后,针对单个站点的配置即可生效了。

8.5 SSL安全套阶层协议

8.5.1 SSL简介

SSL,全称Secure Sockets Layer 安全套接层,简称套阶层协议,属于应用层协议,它的访问协议头是:https://,即http+ssl。它主要有两个功能:一是在网页登录时,对数据进行高级加密传输,提高了安全性;二是可以有服务发布证书,以证明自己的合法性。PS:具体SSL的通信认证原理较为复杂,我们现阶段只需要了解功能,能够部署相关服务即可,若读者有兴趣,可以自行查阅相关资料学习。

关于加密,大家应该都很了解其功能了,下面主要来介绍一下证书的事情。我们平日在上网时,如果访问的是网银或支付宝相关账户,那么安全性要求就要提高很多。但是我们怎么知道我们所打开的网站是真正的官网呢?如果被人恶意把访问请求转移到了一个假网站,盗取账号、密码。所以我们作为用户是无法知道真假的,因此,SSL就提供了一个证书机制,网站的运行商可以向全球的权威认证机构CA发送请求,通过审核后,CA会给该企业颁发一个证书。企业可以把证书发布到自己的网站上,客户端访问时使用https://的协议头访问,并且客户端的浏览器会自动检查该网站的证书,若有问题(如超期或颁发对象有误),浏览器会自动报错。

当我们使用浏览器访问网站时,若地址栏显示的是https://协议头时,说明正在使用ssl协议通信,可以在浏览器菜单栏(点alt键可显示出菜单栏)的文件=>属性=>证书 中看到网站的证书。如下图:

图中可见到淘宝网的证书信息。

现今国内申请的证书颁发机构主要有: Symantec、Thawte、GeoTrust、GlobalSign等。

另外,SSL服务器的通信端口是 TCP 443

8.5.2 SSL部署

下面我们来演示一下证书的发布过程,由于我们使用的是模拟环境,所以并没有真正的证书,只能使用ssl相关程序,模拟CA机构给网站颁发一个用于实验的证书。

首先,配置文件中删除虚拟主机的配置,恢复默认站点的使用,然后按照如下步骤操作:

yum -y install openssl mod_ssl ---安装程序包

1、制作证书密钥

openssl genrsa -des3 -out /mnt/miyao.key 1024

---制作秘钥,并指定密钥长度为1024,会要求设置密钥密码

openssl rsa -in /mnt/miyao.key -out /mnt/miyao.key

---清空密钥密码

2、借助密钥,制作申请

openssl req -new -key /mnt/miyao.key -out /mnt/shenqing.csr

---生成申请,后缀:.csr

注:制作申请的过程中会要求输入企业的相关信息,可按提示输入,如下图:

图中按输入顺序:国家、省份、城市、企业名、部门、要颁发的域名、通信邮箱,之后的附加密码的信息可以直接回车略过

到此我们只做完毕了申请文件,按照正常流程应该联系ca机构,上传申请,审批企业资质通过后,付费,即可获得证书。下面的步骤是为了实验,模拟生成证书的命令。

3、模拟生成证书

openssl req -new -x509 -days 365 -key /mnt/miyao.key -out /mnt/zhengshu.crt ---生成证书,后缀:.crt

4、发布证书

vi /etc/httpd/conf.d/ssl.conf ---编辑ssl的配置文件

找到 <virtualhost _default_:443> 容器中

解注释: documentroot /var/www/html

servername www.rzz.com:443 ---指定发布证书的网站FQDN,ssl通信端口:443

找到:SSLCertificateKeyFile /mnt/miyao.key ---指定密钥文件

SSLCertificateFile /mnt/zhegnshu.crt ---指定证书文件

注:其实该配置文件中已有密钥及证书的指向,这些都是安装完ssl之后自带的证书文件,是可以使用的。在本实验中,我们使用的是自己创建的密钥及证书。

systemctl restart httpd

重启服务后,客户端浏览器输入https:www.rzz.com便可以访问验证,也可以使用ip访问。

PS:此实验的客户端建议使用win7,因为win2003为服务器版,浏览器的默认安全设置较高,对于这种假证书的审核是要屏蔽掉的,降低安装设置的方法有比较麻烦,所以建议使用win7的浏览器。效果如下图:

因为我们使用的证书是假的,所以浏览器会有安全风险的提示,点击继续即可成功:

可以点击alt键后,在出菜单栏的文件=>属性=>证书中查看到我们自己制作的证书:

可见到证书是由自己颁发给自己的。

8.6 php安装

关于网页制作,除了最基本的html网页制作语言外,网页的后台功能,如:登录、注册、数据的增删改查等,还需要专门的后台开发语言完成,现今市面上比较常见的后台语言有:asp、jsp、php。asp是微软推出的页面后台语言,一般支持windows服务器,linux系统上是不使用的;jsp语言是java的页面后台开发语言,需要java编译环境,我们将在后面的tomcat部分介绍;php是现今使用率很高的后台语言,windows、Linux系统都可以使用,适合于中小型网站的架设。所以,我们需要配置apache服务支持php语言开发的网页。

下面就来介绍一下php环境的部署过程。其实非常简单,我们只需要安装php的相关软件包,重启httpd服务即可让apache兼容php页面了。具体过程如下:

yum -y install php php-pear php-mbstring

vim /etc/httpd/conf/httpd.conf

找到:DirectoryIndex行,后追加 index.php,即支持php的主页文件

cd /var/www/html

rm –f index.html ---删除原有主页

vi index.php ---创建php的测试主页

<?php

phpinfo();

?>

注:该主页的功能是显示服务器上当前php的版本,遵守的是php的语法要求

systemctl restart httpd

客户端访问验证。

8.7 apache的工作模式

apache作为web服务,我们最为关心的是能够承载多少的并发点击。其实apache相应客户时有三种不同的方式:

1、prefork MPM 模式

默认模式。apache主程序,针对每一个客户访问,开启一个独立的进程做响应。

对内存、CPU资源的消耗比较大。适合于并发数较少,页面程序较多的站点

2、worker MPM 模式

由apache主程序,开启多个子进程,每个子进程内部分多个线程,每个线程响应一个客户访问。适合于并发数多,点击量较大的站点。

3、event MPM

apache主进程响应客户访问,当客户做用户登录后,主进程将开启一个独立的子进程响应登陆后的客户操作。

这种模式更配合的是网站的登录验证功能,但登录验证功能在实际生产环境中使用较少。PS:一般都是靠后台代码实现会员的注册与登录,使用数据库存储会员信息。

适合于多用户登录,需要权限划分的站点。一般不用。

这三种模式的配置文件如下:

vi /etc/httpd/conf.modules.d/00-mpm.conf ---工作模式配置文件

注释、解注释相关设置即可更改工作模式,如下图:

原文发布于微信公众号 - 教主小筑(gh_e0879483602d)

原文发表时间:2019-05-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券