web服务器的构建

主流的web和apache的构建

主要内容是apache的配置,虚拟主机配置,https配置,集成内容
[root@localhost ~]# curl -I www.taobao.com##显示淘宝的 http response 的头信息

HTTP/1.1 301 Moved Permanently
Server: Tengine
Date: Mon, 06 Jul 2020 10:27:07 GMT
Content-Type: text/html
Content-Length: 278
Connection: keep-alive
Location: https://www.taobao.com/
Via: bcache2.cn1607[,0]
Timing-Allow-Origin: *
EagleId: 7ba06d9615940312277224140e

在这里插入图片描述
##qq使用的服务是nginx
在这里插入图片描述
##百度使用的是bfe(baidu file engine)
在这里插入图片描述
##访问百度这个域名使用的是apache
在这里插入图片描述
##优酷使用的是tengine/aserver(tengine主要是对静态页面的发布,aserver主要针对视频播放的发布)
在这里插入图片描述
##服务用的是自己开发的QWS
##总结主流的web服务器:apache,nginx
在这里插入图片描述
##apache的配置文件(上面)和子配置文件
在这里插入图片描述
##apache默认端口80,可以修改(前面有方法)
在这里插入图片描述
##index.html是apache的默认发布文件,访问自己的IP的时候默认访问这个文件,前面有westos.html示例
在这里插入图片描述
##/etc/httpd/相当于apache的根,在apache里面/log就相当于/etc/httpd/log,然后他的主配置文件里面包含各种基础信息
在这里插入图片描述
在这里插入图片描述
##再火墙上加上8080端口
在这里插入图片描述
##访问8080端口就可以看到apache的端口被改为8080,如果selinux打开想把端口改为6666是不可以的,打开就可以修改
[root@localhost ~]# getenforce

Disabled

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

在这里插入图片描述
[root@localhost ~]# systemctl restart httpd
在这里插入图片描述
##apache端口就修改为6666,但是getenforce是enforcing的时候就无法修改为6666端口,这是为什么
在这里插入图片描述
##因为selinux不允许乱用端口,然后给http的可用端口有80.81,443,488等等这几个
在这里插入图片描述
##-a代表add,-t代表安全上下文是http_port_t,-p代表协议是tcp的,这样6666就被加入selinux可用的端口了
在这里插入图片描述
##在主配置文件中设置端口为6666,
[root@localhost ~]# firewall-cmd --permanent --add-port=6666/tcp##再加上6666的火墙
[root@localhost ~]# firewall-cmd --reload
##访问

在这里插入图片描述
##就可以访问到内容了,完成了端口的修改


##如何修改默认默认发布目录
在这里插入图片描述
[root@localhost ~]# mkdir -p /westos/html##创建一个文件,-P代表不管他前面有没有路径都创建
[root@localhost ~]# cd /westos/html/
[root@localhost html]# vim index.html##创建一个默认查看的文件(里面内容输入123456789)
[root@localhost html]# ls -Zd /westos/##修改westos的安全上下文

drwxr-xr-x. root root system_u:object_r:default_t:s0   /westos/

[root@localhost html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'##修改westos的安全上下文
[root@localhost html]# restorecon -RvvF /westos/##刷新westos的安全上下文
[root@localhost westos]# vim /etc/httpd/conf/httpd.conf##进入主配置文件

在这里插入图片描述
##将原本的默认发布目录注释掉,然后加/westos/html为默认访问目录
[root@localhost westos]# systemctl restart httpd##重启服务
##但是访问一下,依然不可访问,是没有给他授权
在这里插入图片描述
##模仿下面给/var/www的授权方式给/westos授权
[root@localhost westos]# systemctl restart httpd##重启服务
在这里插入图片描述
##可以默认访问到/westos/html/index.html文件了


##默认发布文件的修改
在这里插入图片描述
[root@localhost html]# vim test.html##再/westos/html/里面创建一个test.html(内容是987654321)
[root@localhost html]# vim /etc/httpd/conf/httpd.conf

在这里插入图片描述
##这个就是访问默认文件的设置,将原本默认访问index.html注释掉,将test.html加到index.html前面,这种就是test.html就看第二和index.html, test.html存在就看他自己
[root@localhost html]# systemctl restart httpd

在这里插入图片描述
##可以看到默认访问的文件是test.html文件

##操作完成后记得将httpd恢复默认设置

apache的虚拟主机

##前面看到的是一个IP访问一个页面,如何用一个主机发布多个站点,也就是apache的虚拟主机如何构建
[root@localhost html]# cd /etc/httpd/conf.d
[root@localhost conf.d]# ls

autoindex.conf  README  userdir.conf  welcome.conf

[root@localhost conf.d]# vim vhost.conf##文件名字随便起

在这里插入图片描述

##第一行是第一个虚拟主机默认访问80端口
##第二行是他访问的发布目录(输入网址查看的内容)
##第三行是日志,是 logs下的default文件,combined是将所有的日志放在一起(混合型)
##第四行是一个主机结尾
[root@localhost conf.d]# systemctl restart httpd
在这里插入图片描述
##这个时候apache就是正常显示了和前面单个页面一致在这里插入图片描述
##第六行自然不是默认default端口了,当访问music的时候访问的发布目录是第七行,日志文件是logs下的music里面
##下面的同理
##我们为何将他的发布目录设置为/var/www/html是因为他是被授权过,如果想设置其他的发布目录,需要像上面一样设置主配置文件,调整安全上下文,给目录授权就可以
[root@localhost conf.d]# mkdir -p /var/www/virtual/westos.org/{music,news}##建立发布目录
[root@localhost westos.org]# touch /var/www/virtual/westos.org/{music,news}/index.html##建立默认访问的文件
[root@localhost westos.org]# vim /var/www/virtual/westos.org/music/index.html##给music的默认访问文件输入music
[root@localhost westos.org]# vim /var/www/virtual/westos.org/news/index.html ##给news的默认访问文件输入news
[root@localhost westos.org]# systemctl restart httpd

[root@localhost westos.org]# vim /etc/hosts##因为我们没有学dns,所有如果是ssh连接的虚拟机,然后firefox是在本地主机,必须给本地主机加上解析(在本地主机的shell里面)
在这里插入图片描述
在这里插入图片描述
##这个是默认的解析
在这里插入图片描述
在这里插入图片描述
##apache上面一个IP(192.168.0.100)发布多个站点(news,music)

基于IP的安全优化

[root@www ~]# cd /etc/httpd/conf.d
[root@www conf.d]# vim vhost.conf

在这里插入图片描述
[root@localhost conf.d]# systemctl restart httpd
##这个第12行就是针对默认的那个访问目录/var/www/html,第十三行是先读allow命令,再读deny,然后allow允许默认的www.westos.org通过,Deny 不允许任何人通过,然后因为先有允许,后有不允许,然后后面的不允许就会覆盖的前面的允许,导致都不允许通过,导致www.westos.org这个IP访问不到默认的index.html,firefox输入www.westos.org只会出现apache的测试页,也可以将deny和allow(第十三行)位置交换,实现可以让www.westos.org读取文件

##基于认证的访问控制
[root@www httpd]# htpasswd -cm .htpassfile admin##htpasswd就是给http设置个密码,.htpasswdfile(这是保存密码信息的文件的名字,可以任意起,并且我们这里还可以前面加上。让他隐藏)admin是用户的名字
New password:
Re-type new password:##设置admin的密码
Adding password for user admin
[root@www httpd]# cat .htpassfile##可以看到密码的信息了

admin:$apr1$RRy2jcKK$wT4byl5/VvlW1hlZJYbnK.

[root@www httpd]# htpasswd -m .htpassfile admin1##当再次创建一个认证用户的时候需要删除-c,如果不删除就会自动覆盖前面认证用户(这里是admin)
New password:
Re-type new password:
Adding password for user admin1
[root@www httpd]# cat .htpassfile

admin:$apr1$RRy2jcKK$wT4byl5/VvlW1hlZJYbnK.
admin1:$apr1$dI2cz1Yn$RB6ZtxkQQSxfusIiE2rwA0

[root@www httpd]# vim /etc/httpd/conf.d/vhost.conf
在这里插入图片描述
##将原本的ip认证注释掉,修改为AuthUserFile这一行是访问的密码文件,认证种类是 basic输入用户和密码的时候查看的文件,是文件的内容就通过,不是文件的就否掉),AuthName是页面的提示语,下面截图可以看到, Require user是给权限通过认证的用户(文件库里面有admin和admin1两个用户),先只给admin权限
[root@www httpd]# systemctl restart httpd

在这里插入图片描述
##在firefox里面输入没有给他权限admin1,发现登录不了,不通过认证看不了,admin就可以通过认证
在这里插入图片描述
##注释掉给admin权限,修改为valid-user就是文件库的所有文件都给权限,自然admin1也有权限了
[root@www html]# systemctl restart httpd

##清空下firefox缓存,发现admin1可以登录了

apache对perl,hph,python的执行

##一般在互联网apache默认访问的就是上面三种语言
[root@www html]# cd /var/www/html
[root@www html]# ls

rhel7.6  westos.org

[root@www html]# vim index.php

在这里插入图片描述
##类似于hello world
{root@www html]# systemctl restart httpd

在这里插入图片描述
##但是访问不到,是因为缺少加载php的插件
[root@www yum.repos.d]# yum install php##安装php
[root@www conf]# cd /etc/httpd/conf.d
[root@www conf.d]# ls##可以看到他的子配置文件已经有php的配置信息了

autoindex.conf  php.conf  README  userdir.conf  vhost.conf  welcome.conf

[root@www conf.d]# systemctl restart httpd##

在这里插入图片描述
##这个时候就可以访问到发布文件了(php的测试页)


针对perl类型语言的执行
[root@www conf.d]# yum install httpd-manual##安装apache使用手册
[root@www conf.d]# systemctl restart httpd
在这里插入图片描述
##里面有个cgi,cgi就相当于网络中的网关,apache不能直接识别出来perl语言,需要通过cgi解析然后在使用apache完成对语言的解析,下面是解析的示例
在这里插入图片描述
##可以看到apache 的使用手册,也可以使用百度查询中文手册
在这里插入图片描述
##这个是cgi的发布目录,也可以自己创建发布目录,然后修改他的安全上下文就行,因为apache的发布目录在/var/www/html/里面因此我们必须得修改他的发布目录在apache里面
root@www cgi-bin]# ls -Zd /var/www/cgi-bin/##这个原本发布目录的安全上下文

drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 /var/www/cgi-bin/

[root@www cgi-bin]# semanage fcontext -a -t httpd_sys_script_exec_t "/var/www/html/cgi(/.*)?"##修改安全上下文
[root@www cgi-bin]# restorecon -FvvR /var/www/html/cgi/

##刷新安全上下文
[root@www html]# cd /var/www/html/cgi
[root@www cgi]# vim index.cgi
在这里插入图片描述
##第二行吧content类型输出成 text纯文本类型,第三行是显示hello world的字符
[root@www cgi]# chmod +x index.cgi ##再给他一个可执行权限
在这里插入图片描述
##这下就可以浏览到perl语言了
##但是如果我们将内柔修改为
在这里插入图片描述
##最后一行输出的是date加上单引号相当于$(),意思就是先输出date命令的结果,再print,自然运行的话,就出现的是date的输出,但是
##查询手册查看cgi的设置
在这里插入图片描述
[root@www cgi-bin]# vim /etc/httpd/conf.d/vhost.conf
在这里插入图片描述

##这个是针对cgi目录里面类型是cgi-script和 cgi类型的文件读取他的脚本
root@www cgi-bin]# systemctl restart httpd
在这里插入图片描述
##这个时候脚本就开始运行,不会出现上面只是以文本的形式显示出来


python语言,python语言是wsgi
[root@www cgi]# yum search wsgi##搜索python的插件
[root@www cgi]# yum install mod_wsgi.x86_64##找到后直接下载
在这里插入图片描述
##查看下载的这个脚本在系统生成了什么文件,第一个文件就是他的配置文件
##在这里插入图片描述
##下载script.wsgi文件,随便下载一个就行
在这里插入图片描述
##文件是属于python的script类型
[root@www html]# chmod +x scripts.wsgi##给他一个执行权限
http://192.168.0.100/script.wsgi##访问这个
在这里插入图片描述
##看到的只是代码文本,没有解析成脚本,写好配置文件就可以实现解析了
[root@www html]# vim /etc/httpd/conf.d/vhost.conf
在这里插入图片描述
##意思是访问默认的WSGI文件的时候访问/var/下的script.wsgi文件
[root@www html]# systemctl restart httpd
http://192.168.0.100/WSGI##这个时候默认访问WSGI文件在这里插入图片描述
##可以看到脚本已经运行了(python)

https的证书设定

在这里插入图片描述
在这里插入图片描述
##百度页面的http是https是加密的apache,如何设定这个加密
##假设现在有两台主机进行数据传输,当他们直接传说的时候,假设传输的数据为1,2,3,接收到的数据也是1,2,3,但是如果数据被别人截获了,那么数据的安全性就无法得到保证,因此我们需要对传输出去的数据进行加密处理
在这里插入图片描述
##http的加密方式是主机A里面有一把钥匙,然后B里面的数据都上锁,然后进行传输到A,到A后用钥匙解开,如果传输途中被拦截,拦截方也不能直接看到传输的信息,保证了信息的安全,也就是HTTPS
在这里插入图片描述
##默认系统不支持https的,需要先安装插件
[root@www ~]# yum install mod_ssl##下载mod_ssl插件
在这里插入图片描述
[root@www conf.d]# systemctl restart httpd##下载服务后,重启

##可以看到子配置文件里面有了一个ssl.conf文件
在这里插入图片描述
##可以看到443端口为加密的httpd端口
[root@www conf.d]# firewall-cmd --permanent --add-port=443/tcp

success

[root@www conf.d]# firewall-cmd --reload

success

##把443端口加到火墙里面
在这里插入图片描述
##访问提示我们下载的key是一个没有经过认证的(因为key想在互联网发布需要在ce进行认证,机构承认后才不会出现这种)
在这里插入图片描述
在这里插入图片描述
##自己手动添加。
在这里插入图片描述
##这样就可以使用加密的httpd访问到了
##点击上面的锁,然后选择more information
在这里插入图片描述
在这里插入图片描述
#信息就是他默认的锁信息,
##这个就是自己网页的锁的信息
##查看百度的锁的信息,选择view Ceritificate
在这里插入图片描述
##可以看到都是属于他们自己公司的锁,
##上面自己构建的网页也有默认的锁,如何构建自己的锁,不使用他默认的锁呢
[root@www conf.d]# yum install crypto-utils.x86_64##安装crypto-utitils,然后系统就会有一个genkey
在这里插入图片描述
##提示说需要把上面的加密证书,放到下面的加密位置,然后点击next
在这里插入图片描述
##选择加密证书的位数,然后next
在这里插入图片描述
##生成key,问是否发送到ca机构进行认证,不认证选择NO
在这里插入图片描述
##这里可输入选择*,如果加上*就是每次打开这个指定的网页必须手动输入密码才可以启动,这里就不填入了,选择空
在这里插入图片描述
##国家CN,省份,河南,城市,郑州,主机构,westos,部门linux,加锁的网址:下面最后的
##这样key就生成了
在这里插入图片描述
##上面是证书,下面是加密钥匙
[root@www ~]# vim /etc/httpd/conf.d/ssl.conf
在这里插入图片描述
##将原本的证书文件注释掉,修改为我们自己设置的证书
在这里插入图片描述
##将原本的key也注释掉,换成我们需要的key
[root@www ~]# systemctl restart httpd##刷新证书
在这里插入图片描述
在这里插入图片描述
##直接将他delete删掉,不然导致证书冲突
在这里插入图片描述
##下载网页重新安装证书
在这里插入图片描述
##再查看证书已经是我们设定的证书了

https的优化

在这里插入图片描述

在这里插入图片描述
##访问www.baidu.com网页会自动加上https,但是自己设置的网页就不会自动加上https
在这里插入图片描述

[root@www ~]# vim /etc/httpd/conf.d/vhost.conf
在这里插入图片描述
##构建一个https的443端口虚拟机
在这里插入图片描述
##这个可以在编辑一个脚本的同时,分配查看其它脚本,编辑其他脚本可以ctrl+w+↑或者↓
在这里插入图片描述
##第22行是login已经修改
[root@www ~]# systemctl restart httpd
[root@www ~]# mkdir /var/www/virtual/westos.org/login
[root@www ~]# vim /var/www/virtual/westos.org/login/index.html##输入login
[root@www ~]# vim /etc/hosts##编辑解析

在这里插入图片描述
##加上login的解析
在这里插入图片描述
##查看的是www.westos.org的页面,因为设置的是443端口https的端口
在这里插入图片描述
##下载认证书在这里插入图片描述
##可以看到指定的加密方式的,只有指定的话才有加密,访问http://login.westos.org,访问的就是80端口的首页
在这里插入图片描述
##如何设置无论输入http://login.westos.org,还是https://login.westos.org都是加密的方式的结果login的页面,这个方式叫网页重写
在这里插入图片描述
##查看apache的手册,有个URL
在这里插入图片描述
##提示了如何设置,打开RewriteEngine,然后重写规则
在这里插入图片描述
##这个最后的301这个,如果加在重新规则上就会每次输入不带加密的网址,它都会自动转化为加密形式,301改成302就是临时的转化
[root@www ~]# vim /etc/httpd/conf.d/vhost.conf

在这里插入图片描述
##将输入为80端口的login.westos.org转化为https类型的加密方式,RewriteEngine这个就是默认加密的开关设置,RewriteRule是重新规则就是客户访问网页的时候将客户输入的所有字符让他加密访问(实质就是http加上个s)
[root@www ~]# systemctl restart httpd
##输入login.westos.org已经会自动生成成https://的类型
在这里插入图片描述

cdn加速机制刨析,翻墙原理,squid代理

在这里插入图片描述
##假设郑州的客户端访问深圳的服务器,先从郑州访问郑州服务器,然后再从郑州服务器到深圳服务器,比直接从郑州到深圳服务器快。
##先访问郑州服务器的时候,郑州服务器需要从深圳拿数据来给客户端,拿过来一次后就会产生cache(缓存),让下次访问速度更快,这个整套机制就叫CDN加速机制,那如何配置郑州服务器,可以才用squid
##首先设置一台虚拟机有网络,设置另外一台没有网络
[root@www ~]# yum install squid##在有网络的那台主机安装squid
在这里插入图片描述
##他的默认端口是3120,默认http是不允许任何人访问的将他deny改为allow
在这里插入图片描述
##打开她的缓存目录,默认缓存是100M,建立16个一级目录,每一个一级目录下面有256个二级目录
[root@www ~]# systemctl restart squid##重启服务
[root@www ~]# cd /var/spool/squid/##目录文件已经有10个一级目录,256个二级目录
在这里插入图片描述
##如何让没有网络的虚拟机借助有网络的虚拟机达到上网的目的
##选择那台没有网络的虚拟机,进入firefox,然后选择preferences,搜索network设置,

在这里插入图片描述
##3128端口是squid端口,前面的IP是有网络的虚拟机的IP
在这里插入图片描述
##现在访问百度,提示访问不了代理,
##在有网络的主机上将3128端口加入火墙
[root@www 00]# firewall-cmd --permanent --add-port=3128/tcp
[root@www 00]# firewall-cmd --reload
##这样再用没有网络的主机打开baidu的时候就有网络了,因为他借用有网络的主机完成,他将没有网络的主机实现上网,squid这个就叫正向代理部署

squid反向代理

##就是在各个城市建立服务器,实现访问加速
##如何配置本地的服务器让他去深圳取数据呢,这次给原本那个没有网络的主机配置好yum,和网络让他作为客户端
[root@www ~]# yum install squid
在这里插入图片描述
##其他的设置和正向代理一样,只不过要将端口设置为80端口
在这里插入图片描述
##去192.168.0.100这个IP的客户端拿数据,这个IP是本机IP的父机,拿数据的端口是80端口,0是没有备份,proxy-only做一个代理缓存
[root@localhost yum.repos.d]# systemctl restart squid
在这里插入图片描述
##用这个150的IP的主机访问100的IP就可以查看到另外一台100的主机的IP

调度的设置

[root@localhost yum.repos.d]# vim /etc/squid/squid.conf

在这里插入图片描述
##就是访问www.westos.org的时候先使用100这个主机的数据,下一次访问www.westos.org的时候使用200这个主机的数据,来回替换
[root@localhost yum.repos.d]# systemctl restart squid
##记得做好浏览的主机的解析
##然后访问www.westos.org第一次显示100的index.html,第二次显示200的index内容,第三次又切换到第一次的,来回切换。
##如何设置权重,让一个主机多几次,另外的主机少几次
[root@localhost yum.repos.d]# vim /etc/squid/squid.conf

在这里插入图片描述
[root@localhost yum.repos.d]# systemctl restart squid

##后面加上weight=3就是上面先使用100的IP3次访问,第四次用200访问1次,第五次到第七次继续访问第一个IP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值