WEB服务简介
目前主流的web服务器软件
Linux:apache , nginx
Windows-server:IIS
服务器安装nginx或apache后,叫做web服务器(又称WWW服务器)
web服务器软件属于C/S框架模型
web服务器是一种被动程序只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应
WEB 服务协议
http:超文本传输协议,使用明文传输
https:安全套接字层超文本传输协议,使用密文传输,在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
URI:统一资源标识符
URL:统一资源定位符,定位到文件的地址
URI 包含 URL
WEB 服务器的工作原理
①连接过程:Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket(套接字)这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
②请求过程:Web的浏览器运用socket这个文件向其服务器而提出各种请求。
③应答过程:运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所请求之界面。
④关闭连接:当上一个步骤--应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。
WEB中间件
中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。容器就是中间件的一种。web中间件也叫做web服务器或者web容器
正常情况下一次web的访问顺序是
web浏览器---服务器(硬件)---web容器---web应用服务器---数据库服务器
常见的web中间件
Java中间件:Tomcat (java项目:war----tomcat;jar----jdk);Weblogic;Jboss;Webshere
PHP中间件:php-fpm;php;CGI;FastCGI;Php-FastCGI
Python中间件:wsgi;uwsgi
apache服务
apache默认端口号:80
安装部署
安装:yum -y install httpd
启动:systemctl start httpd
设置开机自启动:systemctl enable httpd
apache的目录和配置文件
/var/www/html apache自带的默认网站发布目录(可自定义)
项目上线后,网站发布目录内的 index.html 为默认主页
/etc/httpd/conf/httpd.conf apache主配置文件
serverRoot "/etc/httpd" //存放配置文件的目录
Listen 80 //Apache服务监听端口
User apache //子进程的用户
Group apache //子进程的组
ServerAdmin root@localhost //设置管理员邮件地址
DocumentRoot "/var/www/html" //网站发布目录
目录属性设置格式:
<Directory 目录路径 >
Require all denied 拒绝
Require all granted 允许
</Directort>
ErrorLog "/etc/httpd/logs/error_log" //错误日志存放位置
自定义设置日志格式:
<IfModule log_config_module>
LogFormat 自定义日志格式 日志格式名
</IfModule>
例如:
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
</IfModule>
%h:客户端IP地址或主机名
%l:远程登录名,通常不用,值是"-"。
%u:远程用户名
%t:请求时间
%r:第一行请求,包括HTTP方法、请求的资源路径和协议版本
%>s:响应的状态码(例如200、404等)
%b:响应的大小,不包括HTTP头,以字节为单位
%{Referer}i:请求中的Referer头部字段
%{User-Agent}i:请求中的User-Agent头部字段
CustomLog "logs/access_log" combined //定义访问日志存放位置及日志格式
/etc/httpd/conf.d/ apache子配置文件目录
/var/log/httpd/ apache日志目录 → 链接文件 /etc/httpd/logs/
/var/log/httpd/access_log 访问日志
/var/log/httpd/error_log 错误日志
通过 apache 对外分享文件资源
mkdir /var/www/html/download
touch /var/www/html/download/file{1..10}
使用浏览器访问:web服务器IP/download
可进一步应用于搭建yum仓库:实验:使用apache + yum实现自制yum仓库
apache虚拟主机
虚拟主机:可以是实现在一台服务器上部署运行多个项目
三种方式
基于端口:使用同一个IP和域名,但是使用不同的端口访问不同的项目
基于域名:使用同一个IP和端口,但是使用不同的域名访问不同的项目
IP地址:使用同一个域名和端口,但是使用不同的IP地址访问不同的项目
基于端口的虚拟主机
①向web服务器上传多个项目包
②在apache子配置目录 /etc/httpd/conf.d/ 内编写配置文件
vim package1.conf
<VirtualHost *:81> //端口
ServerName localhost //域名
DocumentRoot /var/www/html/package1 //网站的发布目录
</VirtualHost>
<Directory /var/www/html/package1>
AllowOverride all
Require all granted
</Directory>
同样编写另外三个配置文件,采用基于端口的虚拟主机,修改端口号
vim package2.conf
vim package3.conf
vim package4.conf
③修改主配置文件 /etc/httpd/conf/httpd.conf ,增加对应的端口监听
Listen 81
Listen 82
Listen 83
Listen 84
④分别将四个项目包解压,拷贝到对应的网站发布目录
创建发布目录:mkdir /var/www/html/package{1..4}
解压项目包,并将解压后项目目录内的内容 cp -r 复制到相应的发布目录
⑤重启服务
systemctl restart httpd
⑥访问测试
服务器IP:81/82/83/84
注意:
如果使用的是云服务器,注意安全组配置问题
如果使用的是本地虚拟机,注意关防火墙和selinux
基于域名的虚拟主机
使用本地虚拟机,配合本地域名解析
①向web服务器上传多个项目包
②在apache子配置目录 /etc/httpd/conf.d/ 内编写配置文件
vim package.conf
<VirtualHost *:80> //端口
ServerName www.package1.com //域名
DocumentRoot /var/www/html/package1 //网站的发布目录
</VirtualHost>
<Directory /var/www/html/package1>
AllowOverride all
Require all granted
</Directory>
同样编写另外三个配置文件,采用基于域名的虚拟主机,修改ServerName对应的域名
④分别将四个项目包解压,拷贝到对应的网站发布目录
创建发布目录:mkdir /var/www/html/package{1..4}
解压项目包,并将解压后项目目录内的内容 cp -r 复制到相应的发布目录
⑤重启服务
systemctl restart httpd
⑥本地域名解析,将域名解析到对应的IP地址
在宿主机上做域名解析
文件位置:C:\Windows\System32\drivers\etc\hosts
对hosts文件修改权限
添加域名解析格式:IP地址 域名
⑦访问测试
在宿主机上的浏览器访问
www.package1/2/3/4.com
基于IP的虚拟主机
①使用fping命令,查找当前网段可用的IP,避免IP冲突
fping -g 10.9.25.0/24
选用101~104这四个IP
②给网卡添加IP地址(临时)
ip a a dev ens33 10.9.25.101
ip a a dev ens33 10.9.25.102
ip a a dev ens33 10.9.25.103
ip a a dev ens33 10.9.25.104
若添加永久IP地址,需要给虚拟机增配网卡,然后通过更改网卡的配置文件设定IP地址
③将多个项目包上传至web服务器
④在apache子配置目录 /etc/httpd/conf.d/ 内编写配置文件
vim /etc/httpd/conf.d/package.conf
<VirtualHost 10.9.25.101:80>
ServerName localhost
DocumentRoot /var/www/html/package1
</VirtualHost>
<Directory /var/www/html/package1>
AllowOverride all
Require all granted
</Directory>
同样编写另外三个配置文件,采用基于IP的虚拟主机,修改VirtualHost对应的IP
⑤分别将四个项目包解压,拷贝到对应的网站发布目录
创建发布目录:mkdir /var/www/html/package{1..4}
解压项目包,并将解压后项目目录内的内容 cp -r 复制到相应的发布目录
⑥重启服务
systemctl restart httpd
⑦访问测试
用浏览器访问10.9.25.101/102/103/104