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

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Barnes-Hut t-SNE:大规模数据的高效降维算法

在数据科学和分析中&#xff0c;理解高维数据集中的底层模式是至关重要的。t-SNE已成为高维数据可视化的有力工具。它通过将数据投射到一个较低维度的空间&#xff0c;提供了对数据结构的详细洞察。但是随着数据集的增长&#xff0c;标准的t-SNE算法在计算有些困难&#xff0c;…

编译器的学习

常用的编译器&#xff1a; GCCVisual CClang&#xff08;LLVM&#xff09;&#xff1a; Clang 可以被看作是建立在 LLVM 之上的一个项目, 实际上LLVM是clang的后端&#xff0c;clang作为前端前端生成LLVM IR&#xff0c;https://zhuanlan.zhihu.com/p/656699711MSVC &#xff…

【js】解决自动生成颜色时相邻颜色视觉相似问题的技术方案

解决自动生成颜色时相邻颜色视觉相似问题的技术方案 在进行大规模颜色生成时&#xff0c;特别是在数据可视化、用户界面设计等应用领域&#xff0c;一个常见的挑战是确保相邻颜色在视觉上具有足够的区分度。本文介绍的方法通过结合黄金分割比与饱和度、亮度的周期性变化&#…

C++中的list类模拟实现

目录 list类模拟实现 list类节点结构设计 list类非const迭代器结构设计 迭代器基本结构设计 迭代器构造函数 operator()函数 operator*()函数 operator!()函数 operator(int)函数 operator--()函数 operator--(int)函数 operator()函数 operator->()函数 list…

VMware 15 安装centos7虚拟机

1. 安装前准备 1.1 下载centos 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 下载需要版本的centos版本 直达链接 centos7.9 &#xff1a; centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 .基础使用的话安装选择这个就行了&#xff0c;大概下载几分钟 2. …

蓝桥杯2024年第十五届省赛真题-小球反弹

以下两个解法感觉都靠谱&#xff0c;并且网上的题解每个人答案都不一样&#xff0c;目前无法判断哪个是正确答案。 方法一&#xff1a;模拟 代码参考博客 #include <iostream> #include <cmath> #include <vector>using namespace std;int main() {const i…

绿城中国北森商业综合推理40分钟28题管理人才盘点领导选拔总经理竞聘考什么?

复杂信息理解批判性评估 策略性推理概念性推理 40分钟题库实时时更新 晋升通过率>95% 绿城人寿移动航油等国企 各维度说明 ①复杂信息理解:洞察文字、图表等资料的能力&#xff0c;能否快速抓住复杂信息中的要点、提取出关键信息 ②批判性评估:批判性质疑的能力&#xff0…

springcloud Ribbon的详解

1、Ribbon是什么 Ribbon是Netflix发布的开源项目&#xff0c;Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的框架。 2、Ribbon能干什么 LB负载均衡(Load Balance)是什么&#xff1f;简单的说就是将用户的请求平摊的分配到多个服务上&#xff0c;从而达…

Python程序设计教案

文章目录&#xff1a; 一&#xff1a;软件环境安装 1.软件环境 2.技巧 3.新建工程项目 二&#xff1a;相关 1.规范 2.关键字 3.Ascll码表 三&#xff1a;语法基础 1.各种符号 1.1 注释 1.2 占位置的 1.3 回车换行 2.输入输出 2.1 输入input 2.2 输出print …

parallels desktop19.3最新版本软件新功能详细介绍

Parallels Desktop是一款运行在Mac电脑上的虚拟机软件&#xff0c;它允许用户在Mac系统上同时运行多个操作系统&#xff0c;比如Windows、Linux等。通过这款软件&#xff0c;Mac用户可以轻松地在同一台电脑上体验不同操作系统的功能和应用程序&#xff0c;而无需额外的硬件设备…

CDN、边缘计算与云计算:构建现代网络的核心技术

在数字化时代&#xff0c;数据的快速传输和处理是保持竞争力的关键。内容分发网络&#xff08;CDN&#xff09;、边缘计算和云计算共同构成了现代互联网基础架构的核心&#xff0c;使内容快速、安全地到达用户手中。本文将探讨这三种技术的功能、相互关系以及未来的发展趋势。 …

3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志

一&#xff1a;系统版本: 二&#xff1a;部署环境&#xff1a; 节点名称 IP 部署组件及版本 配置文件路径 机器CPU 机器内存 机器存储 Log-001 10.10.100.1 zookeeper:3.4.13 kafka:2.8.1 elasticsearch:7.7.0 logstash:7.7.0 kibana:7.7.0 zookeeper:/data/zookeep…

探索未来的区块链DApp应用,畅享数字世界的无限可能

随着区块链技术的飞速发展&#xff0c;分布式应用&#xff08;DApp&#xff09;正成为数字经济中的一股强劲力量。DApp以其去中心化、透明公正的特点&#xff0c;为用户带来了全新的数字体验&#xff0c;开创了数字经济的新潮流。作为一家专业的区块链DApp应用开发公司&#xf…

全面了解俄罗斯的VK开户和Yandex投放及内容运营

俄罗斯的VKontakte&#xff08;简称VK&#xff09;和Yandex是两个重要的在线平台&#xff0c;对于希望在俄罗斯市场进行推广的企业来说&#xff0c;了解如何在这些平台上开户和投放广告以及内容运营是非常关键的。 俄罗斯vk广告如何开户&#xff1f; 通过上海上弦进行俄罗斯V…

明日方舟游戏助手:一键完成日常任务 | 开源日报 No.233

MaaAssistantArknights/MaaAssistantArknights Stars: 11.6k License: AGPL-3.0 MaaAssistantArknights 是一款《明日方舟》游戏的小助手&#xff0c;基于图像识别技术&#xff0c;支持一键完成全部日常任务。 刷理智、掉落识别及上传企鹅物流智能基建换班、自动计算干员效率…

c++的策略模式,就是多态

一、定义&#xff1a; 策略模式定义了一系列的算法&#xff0c;并将每一个算法封装起来&#xff0c;而且使它们还可以相互替换。 策略模式让算法独立于使用它的客户而独立变化。 二&#xff0c;核心 抽象策略&#xff08;抽象基类&#xff09;&#xff08;Strategy&#xff09…

面试八股——RabbitMQ

消息丢失问题 消息确认机制 生产者与MQ之间的消息确认&#xff1a; 当MQ成功接收消息后&#xff0c;会返回给生产者一个确认消息。如果在规定时间内生产者未收到确认消息&#xff0c;则任务消息发送失败。 MQ与消费者之间的消息确认&#xff1a; 当MQ成功接收消息后&#…

构建安全高效的前端权限控制系统

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起进步&am…

【C++】优先队列

优先队结构的不同物理结构与常用操作算法 优先队列是一种特殊的队列,队列中的元素具有优先级,每次弹出操作会弹出优先级最高的元素。 优先队列常用的物理结构有: 1. 数组:简单但不高效,插入和删除操作需要移动大量元素,时间复杂度高。 2. 二叉堆:是一种完全二叉树,通常用数…

新技术前沿-2024-大型语言模型LLM的本地化部署

参考快速入门LLM 参考究竟什么是神经网络 1 深度学习 1.1 神经网络和深度学习 神经网络是一种模拟人脑神经元工作方式的机器学习算法,也是深度学习算法的基本构成块。神经网络由多个相互连接的节点(也称为神经元或人工神经元)组成,这些节点被组织成层次结构。通过训练,…