前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第八章 web服务之apache(2)

第八章 web服务之apache(2)

作者头像
晓天
发布2019-07-04 14:29:34
8580
发布2019-07-04 14:29:34
举报

第八章 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 ---工作模式配置文件

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档