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://www.mzph.cn/web/2473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

薄板样条插值TPS原理以及torch和opencv实现

薄板样条插值TPS原理以及torch和opencv实现 1、薄板样条插值TPS原理概述原理以及公式推导2、torch实现3、opencv实现1、薄板样条插值TPS原理 概述 薄板样条(Thin Plate Spline),简称TPS,是一种插值方法,可找到通过所有给定点的“最小弯曲”光滑曲面。因为它一般都是基于…

UE4网络图片加载库(带内存缓存和磁盘缓存)

UE4网络图片加载库,带内存缓存和磁盘缓存,支持自定义缓存大小,支持蓝图和C++代码调用 1、调用示例 2、对外暴露函数 3、源代码-网络模块 KeImageNet.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreM…

Vue基于高德地图API封装一个地图组件

一、参考资料 高德开放平台 | 高德地图API (amap.com) 二、安装及配置 pnpm i vuemap/vue-amap --save man.ts 密钥及安全密钥需要自己到高德地图开放平台控制台获取. import { createApp } from vue import App from ./App.vue import router from ./router i…

java实现解析html获取图片或视频url

一、前言 有时在实际项目中&#xff0c;比如发布某篇文章&#xff0c;需要取文章中的某张图片作为封面&#xff0c;那么此时需要文章内容&#xff0c;获取html内容中的图片地址作为封面&#xff0c;下面讲下如何获取html中的图片或视频地址。 二、实现 1.先定义一个工具类&…

Python学习教程(Python学习路线+Python学习视频):Python数据结构

数据结构引言&#xff1a; 数据结构是组织数据的方式&#xff0c;以便能够更好的存储和获取数据。数据结构定义数据之间的关系和对这些数据的操作方式。数据结构屏蔽了数据存储和操作的细节&#xff0c;让程序员能更好的处理业务逻辑&#xff0c;同时拥有快速的数据存储和获取方…

android openGL ES详解

1、渲染线程与主线程的通信 两个线程之间的通信可以用如下方法: 在主线程中的 GLSurfaceView 实例可以调用 queueEvent( &#xff09;方法传递一个 Runnable 给后台渲染线程&#xff0c;渲染线程可以调用 Activity 的 runOnUIThread()来传递事件 (event) 给主线程。 2、顶点…

Redhawk:ATE如何产生top level sta file

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接 redhawk: create STA file 在“redhawk: create STA file”一文中介绍了ate的用法,可以应对block level的设计,但当需要做top level分析时&

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

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

单片机学习过程

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

使用 IPAM 解决方案简化分布式网络管理

随着组织在数字领域的全球扩张&#xff0c;分布式网络是不可避免的&#xff0c;这意味着&#xff0c;随着 IT 基础设施的发展&#xff0c;组织需要适应&#xff0c;这包括在不断增长的系统需求、应用程序堆栈、各种协议和安全防御中监控、现代化和简化流程和资源。在有效管理现…

盲人过马路安全:科技力量赋予“隐形守护者”

作为一名资深记者&#xff0c;我始终关注着社会各群体的生活现状&#xff0c;尤其是那些面临特殊挑战的人群。今天&#xff0c;我想聚焦一个看似平常却对盲人构成重大困扰的日常场景——过马路&#xff0c;以及一款名为蝙蝠避障的辅助应用如何成为他们的盲人过马路安全的守护者…

自制Apache-Doris 2.0.4镜像Docker部署一Fe和一Be集群及遇到的问题解决

自制Apache-Doris 2.0.4镜像Docker部署一Fe和一Be集群及遇到的问题解决 文章目录 1.前言2.doris是什么&#xff1f;2.1简介2.2介绍2.3使用场景2.4架构 3.官网4.构建部署4.1 构建环境4.2 doris2.0.4的fe和be镜像构建4.2.1 fe2.0.4镜像构建脚本4.2.2 be2.0.4镜像构建4.2.3 启动脚…

FebHost:科技企业如何规划并注册.AI域名?

为确保企业使用.AI域名的方式准确反映其对人工智能技术的关注&#xff0c;企业应考虑以下步骤&#xff1a; 了解法律和合规要求&#xff1a; 第一步是了解与 .AI 域名相关的独特法律和合规要求。由于.AI域名源于安圭拉&#xff0c;企业必须遵守安圭拉的限制和法律规定。这包括…

C语言 字符类型

下面 我们来说字符类型 我们来看这个 保险单 金额 和 总额 都可以用数字类型 而性别则需要字符型 字符数据的存储 – ASCI码 字符类型 char 就是专为存储字符(如字母&#xff0c;标点和数字)而设计的类型。 使用单引号包含单个字符或转义字符去表示一个 char 类型的常量。 …

李沐56_门控循环单元——自学笔记

关注每一个序列 1.不是每个观察值都是同等重要 2.想只记住的观察需要&#xff1a;能关注的机制&#xff08;更新门 update gate&#xff09;、能遗忘的机制&#xff08;重置门 reset gate&#xff09; !pip install --upgrade d2l0.17.5 #d2l需要更新import torch from tor…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别 一、简单介绍 二、简单进行车牌检测和识别实现原理 …

Opencv_10_自带颜色表操作

void color_style(Mat& image); Opencv_10_自带颜色表操作&#xff1a; void ColorInvert::color_style(Mat& image) { int colormap[] { COLORMAP_AUTUMN, COLORMAP_BONE , COLORMAP_JET , COLORMAP_WINTER, COLORMAP_RAINBOW , COLOR…

编译器的学习

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

Docker常用命令(镜像、容器、网络)

一、镜像 1.1 存出镜像 将镜像保存成为本地文件 格式&#xff1a;docker save -o 存储文件名 存储的镜像docker save -o nginx nginx:latest 1.2 载入镜像 将镜像文件导入到镜像库中 格式&#xff1a;docker load < 存出的文件或docker load -i 存出的文件…

程序猿成长之路之数据挖掘篇——朴素贝叶斯

朴素贝叶斯是数据挖掘分类的基础&#xff0c;本篇文章将介绍一下朴素贝叶斯算法 情景再现 以挑选西瓜为例&#xff0c;西瓜的色泽、瓜蒂、敲响声音、触感、脐部等特征都会影响到西瓜的好坏。那么我们怎么样可以挑选出一个好的西瓜呢&#xff1f; 分析过程 既然挑选西瓜有多个…