目前最主流的三个Web服务器是Apache、Nginx(轻量级web服务器 Linux)、 IIS(windows-server)。 静态
B/S 浏览器和服务器
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。 Web服务器是可以向发出请求的浏览器提供文档的程序:服务器是一种被动程序只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应
WEB 服务应用层使用HTTP协议。HTTPS
HTML(标准通用标记语言下的一个应用)文档格式。
浏览器统一资源定位器(URL)。
http 超文本传输协议
https 加密的超文本传输协议
为了解决HTTP协议的不安全的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密
WWW 采用的是浏览器/服务器结构,其作用是整理和储存各种WWW资源,并响应客户端软件的请求,把客户所需的资源传送到 Windows、UNⅨ 或 Linux 等平台上
1、连接过程:Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
2、请求过程:Web的浏览器运用socket这个文件向其服务器而提出各种请求。
3、应答过程:运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所请求之界面。
4、关闭连接:当上一个步骤–应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。
扩展:
socket一般指套接字。所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制
中间件,是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。容器就是中间件的一种。中间件是一类能够为一种或多种应用程序合作互通、资源共享,同时还能够为该应用程序提供相关的服务的软件。(注意:中间件是一类软件的总称,不是单独的一个软件)web中间件也叫做web服务器或者web容器,正常情况下一次web的访问顺序是:web浏览器—服务器(硬件)—web容器—web应用服务器—数据库服务
后端开发语言,java、php、python
java中间件:Tomcat(8080)、Weblogic
war包 .war tomcat
jar包 .jar jdk (java -jar)
Php 中间件: php-fpm php
Python 中间件: uwsgi
===================================================
http服务
www.apache.org
apache安装
yum -y install httpd httpd-tools httpd-devel
用户控制 主包的扩展包
直接安装Apache主包就可以,包含用户控制包,主包扩展包可以不安装
[root@apache-server ~]# yum -y install httpd
apache启动
[root@apache-server ~]# systemctl start httpd
[root@apache-server ~]# systemctl enable httpd
apache端口:80
浏览器访问10.11.67.109
这个test123,
Options Indexes FollowSymLinks
定义主页文件,当访问到网站目录时如果没有定义的主页文件,网站会自动访问test123页面。如果你不想看到他。可以删掉
[root@apache-server ~]# vim /etc/httpd/conf.d/wela.conf
配置一个配置文件,但是/var/www/html/下没有index.html
访问测试
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html
</VirtualHost>
<Directory "/var/www/html">
AllowOverride ALl
Require all granted
</Directory>
因为服务器没有找到/var/www/html/insex.html所以跳转到test123
[root@apache-server ~]# vim /var/www/html/index.html
<h1>Apache Test</h1>
可以看到已经跳转到我们自己设置的网站页面
下面是/var/www/html/index.html和/usr/share/httpd/noindex/index.html都不存在的情况
服务端:/var/www/html/
[root@apache-server ~]# mkdir -v /var/www/html/download
[root@apache-server ~]# touch /var/www/html/download/b.txt
[root@localhost conf.d]# rm -rvf /etc/httpd/conf.d/welcome.conf
[root@apache-server ~]# systemctl restart httpd
客户端:浏览器访问10.11.67.109/download
认识配置文件里的主要参数
Apache的主配置文件
[root@apache-server ~]# vim /etc/httpd/conf/httpd.conf
serverRoot “/etc/httpd” //存放配置文件的目录
Listen 80 //Apache服务监听端口(以端口划分Apache虚拟主机的时候,需要增加在主配置文件中增加监听端口)
User apache //子进程的用户
Group apache //子进程的组
ServerAdmin root@localhost //设置管理员邮件地址
DocumentRoot “/var/www/html” //网站家目录
Include conf.modules.d/.conf //模块的子配置文件
IncludeOptional conf.d/.conf //主配置文件的子配置文件
Options Indexes FollowSymLinks //当一个目录没有默认首页时,允许显示此目录列表,一般安全起见,需要注释此项,避免目录下的其它资料泄露
DirectoryIndex index.html index.php //修改默认首页(默认是主页下面的index.html文件,如果想要主页下面的index.php等页面在这里添加),定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问
AddDefaultCharset UTF-8 # 字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异
设置DocumentRoot指定目录的属性
Options Indexes FollowSymLinks //找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外
AllowOverride all //none不使用.htaccess控制,all允许
Require all granted //granted表示运行所有访问,denied表示拒绝所有访问
//容器结束
4、Apache的使用方法(利用子配置文件配置虚拟主机)
主配置文件/etc/httpd/conf/httpd.conf不要管,直接创建子配置文件/etc/httpd/conf.d/kakaops.conf。关于默认的欢迎界面的配置文件,要是看着不顺眼就删掉,只要在你的子配置文件里面定义的网站发布目录下有index.html文件,会优先访问。
1、创建一个子配置文件kakaops.conf
[root@apache-server ~]# vim /etc/httpd/conf.d/xingdian.conf
ServerName localhost //可以写域名,本地可以用伪域名,云服务器用真域名
DocumentRoot /var/www/html
AllowOverride ALL
Require all granted
2.修改主配置文件,需要添加一个监听端口
Listen 81
3.重新启动服务
4.保证网站发布目录下有index.html的文件
5、浏览器访问,端口改变需要加端口号
也可以安装文本浏览器方便测试
每次打开浏览器不是很方便,因此可以在服务器端安装文本浏览器,方便测试。
[root@xingdian ~]# yum -y install elinks # 安装elinks文本浏览器
[root@xingdian ~]# elinks 192.168.5.20 # 按ctrl + c退出
[root@xingdian ~]# elinks --dump 192.168.135.160
--dump 静态显示,相当于curl
[root@localhost ~]# curl http://10.11.65.70 #本地访问
[root@localhost ~]# firefox http://10.11.65.70 #使用火狐浏览器
基于端口划分的Apache虚拟主机
[root@localhost ~]# vim /etc/httpd/conf.d/A.conf
<VirtualHost *:81>
Servername ip、域名、名字
DocumentRoot /webA
</VirtualHost>
<Directory "/webA">
AllowOverride ALL
Require all granted
</Directory>
[root@localhost ~]# vim /etc/httpd/conf.d/B.conf
<VirtualHost *:82>
Servername ip、域名、名字
DocumentRoot /webB
</VirtualHost>
<Directory "/webB">
AllowOverride ALL
Require all granted
</Directory>
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
Listen 81
Listen 82
[root@localhost ~]# mkdir -v /webA
[root@localhost ~]# mkdir -v /webB
[root@localhost ~]# echo “Apache Test A” > /webA/index.html
[root@localhost ~]# echo “Apache Test B” > /webB/index.html
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# curl http://192.168.42.88:81
[root@localhost ~]# curl http://192.168.42.88:82
基于ip划分的Apache虚拟主机
[root@aliyun ~]# ip a a 172.20.171.235/20 dev eth0
[root@aliyun ~]# vim /etc/httpd/conf.d/A.conf
<VirtualHost 172.20.171.234:80>
Servername ip、域名、名字
DocumentRoot /webA
</VirtualHost>
<Directory "/webA">
AllowOverride ALL
Require all granted
</Directory>
[root@aliyun ~]# vim /etc/httpd/conf.d/A.conf
<VirtualHost 172.20.171.235:80>
Servername ip、域名、名字
DocumentRoot /webB
</VirtualHost>
<Directory "/webA">
AllowOverride ALL
Require all granted
</Directory>
[root@aliyun ~]# curl http://172.20.171.234
[root@aliyun ~]# curl http://172.20.171.235
云服务器基于ip的apache虚拟主机的划分,不能浏览器访问
基于域名划分的Apache虚拟主机
[root@aliyun ~]# vim /etc/httpd/conf.d/A.conf
<VirtualHost *:80>
Servername www.zhiqing.com
DocumentRoot /webA
</VirtualHost>
<Directory "/webA">
AllowOverride ALL
Require all granted
<Directory>
[root@aliyun ~]# vim /etc/httpd/conf.d/A.conf
<VirtualHost 172.20.171.235:80>
Servername www.lizhen.com
DocumentRoot /webB
</VirtualHost>
<Directory "/webA">
AllowOverride ALL
Require all granted
</Directory>
[root@localhost ~]# vim /etc/hosts 如果在局域网内部,做一下本地域名解析
10.11.65.39 www.zhiqing.com
10.11.65.39 www.lizhen.com
本地登陆验证
[root@localhost ~]# curl http://www.lizhen.com
[root@localhost ~]# curl http://www.zhiqing.com
注意:一般的公司都是基于域名创建虚拟主机
基于ip创建的虚拟主机,其他的相同,ip不同
基于域名创建的虚拟主机,其他的相同,域名不同
基于端口创建的虚拟主机,其他的相同,端口不同
三种方式可以相互转换
apache的rewrite规则(重定向)
<VirtualHost *:80 >
Servername www.sunlizhen.com
ServerAlias sunlizhen.com
DocumentRoot /web
</VirtualHost>
<Directory "/web">
Require all granted
AllowOverride ALL
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.sunlizhen.com$
RewriteRule ^(.*)$ https://www.jd.com [R=301,L]
</Directory>
R=301 强制外部重定向
NC 不区分大小写
[OR] 或者
利用地址重写做网站的伪静态
<VirtualHost *:80>
Servername www.sunlizhen.com
ServerAlias sunlizhen.com
DocumentRoot /web1
</VirtualHost>
<Directory "/web1">
AllowOverride ALL
Require all granted
RewriteEngine on
RewriteRule ^(.*).jsp$ index.html
</Directory>
web服务器出现大量的访问日志和错误日志,所以我们要对日志进行切割,方便管理人员的查询。一些并不重要的记录,可以规定日志中不显示这些。
[root@localhost ~]# ls /var/log/httpd
access_log error_log
LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
LogFormat “%h %l %u %t “%r” %>s %b” common
状态码
200正常访问
301永久重定向
304访问缓存
/var/log/httpd acces_log error_log