Day 20 Linux的WEB服务——apache

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

相关推荐
Huazzi.21 分钟前
免费好用的静态网页托管平台全面对比介绍
前端·网络·github·web
吃土少女古拉拉28 分钟前
前端和后端
前端·学习笔记
荼靡60339 分钟前
shell(三)
linux·服务器·数据库
zym大哥大1 小时前
Linux的权限
linux·服务器
伴野星辰1 小时前
小乌龟TortoiseGit 安装和语言包选择
linux·运维·服务器
枫叶丹41 小时前
【在Linux世界中追寻伟大的One Piece】多线程(一)
java·linux·运维
残念ing1 小时前
【Linux】—简单实现一个shell(myshell)
linux·运维·服务器
寒雒1 小时前
【Python】实战:实现GUI登录界面
开发语言·前端·python
明月心9521 小时前
linux mount nfs开机自动挂载远程目录
linux·运维·服务器
独上归州1 小时前
Vue与React的Suspense组件对比
前端·vue.js·react.js·suspense