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

③将多个项目包上传至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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/568818.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单片机学习过程

继电器光耦隔离电压转换步进电机直流电机 arduino是最好用的一种&#xff0c;他提供了完整的设备库文件&#xff0c;任何外部设备只要查找相应的库&#xff0c;就可以很方便的使用 &#xff0c; 但是如果不去学习51 或stm32 或 嵌入式玩玩还可以&#xff0c;如果碰到没有实现的…

文字转粤语语音怎么转?文字转语音

文字转粤语语音怎么转&#xff1f;文字转粤语语音的应用&#xff0c;不仅展现了现代科技的魅力&#xff0c;也为我们提供了更加便捷的交流方式。它们将文字转化为粤语发音&#xff0c;让我们能够更直观地感受粤语的韵味和魅力。同时&#xff0c;这些软件还具备高度的可定制性&a…

【LeetCode】---118.杨辉三角

一、题目解析&#xff1a; 二、知识回顾&#xff1a; 1.二维数组&#xff1a; 2. C语言中的二维数组访问方式和vector二维数组的访问&#xff0c; 不同区别&#xff1a; &#xff08;1&#xff09;表面是一样的&#xff0c;但底层不同&#xff01; &#xff08;2&#xff09;静…

FSRCNN:加速超分辨率卷积神经网络,SRCNN的加速版

paper&#xff1a;https://arxiv.org/pdf/1608.00367 code: https://github.com/yjn870/FSRCNN-pytorch/tree/master 目录 1. 动机 2. 方法 3. 代码对比 4. 实验结果 1. 动机 作者此前提出的SRCNN证明了CNN在图像超分领域的有效性。然而&#xff0c;SRCNN计算效率较低&#…

Linux报错处理:‘abrt-cli status’ timed out

最近登录服务器时出现报错&#xff0c;后来查阅资料发现是因为ssh登录时间很久&#xff0c;登录后出现abrt-cli status timed out 的报错。 1.问题分析 abrt-cli是ABRT(Automated Bug Reporting Tool)的命令行接口&#xff0c;用于在Linux系统中处理和报告程序崩溃。 如果abr…

C语言实现扫雷游戏完整实现(上)

文章目录 前言一、新建好头文件和源文件二、实现游戏菜单选择功能三、定义游戏函数四、初始化棋盘五、 打印棋盘函数六、布置雷函数七、玩家排雷菜单八、标记功能的菜单九、标记功能菜单的实现总结 前言 C语言从新建文件到游戏菜单&#xff0c;游戏函数&#xff0c;初始化棋盘…

ElasticSearch笔记一

随着这个业务的发展&#xff0c;我们的数据量越来越庞大。那么传统的这种mysql的数据库就渐渐的难以满足我们复杂的业务需求了。 所以在微服务架构下一般都会用到一种分布式搜索的技术。那么今天呢我们就会带着大家去学习分布搜索当中最流行的一种ElasticSearch&#xff0c;Ela…

【折半处理 二分查找】1755. 最接近目标值的子序列和

本文涉及知识点 折半处理 二分查找算法合集 LeetCode1755. 最接近目标值的子序列和 给你一个整数数组 nums 和一个目标值 goal 。 你需要从 nums 中选出一个子序列&#xff0c;使子序列元素总和最接近 goal 。也就是说&#xff0c;如果子序列元素和为 sum &#xff0c;你需要…

关于Java的三个小题目(很容易错!)

第一题 char运算后的数据类型 最后输出的是什么类型&#xff1f; 答案&#xff1a;int char与byte的联系和区别 char是无符号型的&#xff0c;能够表示一个整数&#xff0c;不能表示负数&#xff08;0~65535&#xff09;&#xff1b;而byte是有符号型的&#xff0c;能够表示…

elasticsearch-8.1.0安装记录

目录 零、版本说明一、安装二、使用客户端访问 零、版本说明 centos [rootnode1 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)elasticsearch elasticsearch-8.1.0-linux-x86_64一、安装 systemctl stop firewalld.servicesystemctl disable firewal…

笔记本电脑耗电和发热比较厉害怎么处理

工作中会遇到有同事反馈笔记本电脑耗电和发热比较厉害&#xff0c;主要检查以下几个地方 1、CPU频率 很多人觉得是cpu使用率高就代表电脑跑得快&#xff0c;发热量就大&#xff0c;其实不是的&#xff0c;主要是看的cpu频率&#xff0c;频率越高&#xff0c;电脑发热量越大。如…

Laravel 6 - 第十一章 中间件

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

如何在 Flutter 中制作多种颜色的 TextField

TextField widget 本身并不施加任何样式。相反&#xff0c;它会要求 TextEditingController 生成一个样式化的 TextSpan 对象&#xff0c;即一段带有样式的文本。 TextField 将其样式传递给 TextEditingController &#xff0c;默认实现只是将其放入 TextSpan 对象中&#xff0…

C#通过Qt使用VTK

需求&#xff1a; 一个项目&#xff0c;界面是C# 开发的&#xff0c;但是业务上有三维可视化的需求&#xff0c;VTK基于C#的绑定版本需要收费&#xff0c;并且资料很少。因此将VTK嵌入到Qt里&#xff0c;并封装成一个dll&#xff0c;通过接口提供给C#访问。 实现&#xff1a;…

HTTP慢连接攻击的原理和防范措施

随着互联网的快速发展&#xff0c;网络安全问题日益凸显&#xff0c;网络攻击事件频繁发生。其中&#xff0c;HTTP慢速攻击作为一种隐蔽且高效的攻击方式&#xff0c;近年来逐渐出现的越来越多。 为了防范这些网络攻击&#xff0c;我们需要先了解这些攻击情况&#xff0c;这样…

贪吃蛇(C语言版)

在我们学习完C语言 和单链表知识点后 我们开始写个贪吃蛇的代码 目标&#xff1a;使用C语言在Windows环境的控制台模拟实现经典小游戏贪吃蛇 贪吃蛇代码实现的基本功能&#xff1a; 地图的绘制 蛇、食物的创建 蛇的状态&#xff08;正常 撞墙 撞到自己 正常退出&#xf…

vscode将本地服务转发到外网地址访问

示例中将本地的5500端口&#xff0c;用vscode进行端口转发&#xff0c;在外网地址访问服务 要转发的端口 转发端口 点击转发端口 输入要转发的端口&#xff0c;按下回车 Enter 点击允许&#xff0c;弹出确认界面后点击打开 转发端口已经成功配置上&#xff0c;右键可见性…

Git和Github绑定

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

爬虫中怎么判断一个网页是否包含ajax请求

1、前言 在用爬虫抓取数据的时候&#xff0c;如果一个网页包含ajax请求&#xff0c;由于数据时动态加载的&#xff0c;直接根据网址是不能获取到想要的数据。因此&#xff0c;在爬虫需要首先判断一个网页是否包含ajax请求数据。 2、ajax请求 2.1 什么是ajax请求 AJAX Asynch…

20240424codeforces刷题题解

240424刷题题解 Walk on Matrix CodeForces - 1332D 思路 构造题&#xff0c;每个 d p i , j dp_{i,j} dpi,j​​​都是由其左上方向中的按位与最大值决定的。 我们需要从使得贪心解与正确解的差值为 k k k。 为了方便获得 k k k&#xff0c;可以考虑构造一个贪心解为 0…