当前位置: 首页 > news >正文

CHAPTER 3 Web Server - httpd配置(二)

Web Server - httpd配置二

    • 3.1 httpd配置
      • 3.1.1 基于用户的访问控制
      • 3.1.2 basic认证配置示例:
        • 1. 添加用户
        • 2. 添加网页文件
        • 3. 定义安全域
        • 4. 修改父目录权限
        • 5. 访问效果
        • 6. 在配置文件中定义一个".htaccess"隐藏文件
        • 7. 添加组
      • 3.1.3 虚拟主机
        • 1. 构建方案
        • 2. 基于IP的虚拟主机示例
        • 3. 基于端口的虚拟主机
        • 4. 基于FQDN的虚拟主机
        • 5. 开启status功能
    • 3.2 httpd的功能特性:
      • 3.2.1 CGI:Common gateway interface
      • 3.2.2 ScriptAlias 指令,配置脚本执行目录
      • 3.2.3 使用mod_deflate模块压缩页面优化传输速率
      • 3.2.4 https(http over ssl),使用mod_ssl支持https
    • 3.3 常用命令、工具
      • 3.3.1 常用命令
      • 3.3.2 常用工具

3.1 httpd配置

3.1.1 基于用户的访问控制

认证质询:

WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供帐号及密码

认证:

Authorization:客户端用户填入帐号和密码后在此发送请求报文;认证通过时,则服务器发送响应的资源

认证方式:

basic:明文
digest:消息摘要认证

安全域:

需要用户认证后方能访问的路径;应该通过名称对其进行标示,仪表告知用户认证的原因

用户的帐号和密码存放在何处?

虚拟帐号:仅用于访问某服务时用到的认证标示
存储:文本文件(httpd-tools/htpasswd加密工具),SQL数据库,ldap目录存储

添加用户:
使用专用命令完成此类文件的创建及用户管理,格式

htpasswd [options] /path/to/dir username passwd -c 自动创建此处制定文件,仅应该在此文件不存在时使用-m:md5格式加密-s:sha格式加密-D:删除指定用户-b:在命令行中一并输入用户名和密码而不是根据提示输入密码-p:明文密码默认md5加密 -m

htpasswd -b -c /tmp/test.users tom 123456
创建用户tom,密码1234567,并创建密码文件test.users

添加组:

[root@k8s-node-02 apache]# cat /usr/local/apache/conf/users.group
testgrp: tom jason		#每一行定义一个组,组中的用户用空格分开

配置文件:
httpd支持自定义配置文件,即不必把所有配置文件都写入主配置文件

user/group:进程安全上下文,一个进程是否能访问某个文件,取决于2者:

1.运行这个进程的用户身份,
2.文件的属主属组

指定以那个用户的身份运行httpd服务进程

       /etc/httpd/httpd.conf        user apachegroup apache

配置文件中指定user为apache
Suexec:访问服务器其他非apache用户权限,只是一个解决方案,并不安全

3.1.2 basic认证配置示例:

基于用户搭建

1. 添加用户

[root@k8s-node-02 conf]# htpasswd -c -b ./users.passwd tom 123456
Adding password for user tom
[root@k8s-node-02 conf]# cat users.passwd
tom:$apr1$oyXRu1eD$PFtacQ2r/ioGiwZ9yJ4k8/

2. 添加网页文件

[root@k8s-node-02 apache]# cat htdocs/doc/d.html
<h1>hello python!</h1>

3. 定义安全域

<Directory "/usr/local/apache/htdocs/doc/">Options NoneAllowOverride NoneAuthType BasicAuthName "input account and passwd"AuthUserFile "/usr/local/apache/conf/users.passwd"#Require valid-userRequire user tom</Directory>

允许帐号文件中的所有用户登陆访问;
Require valid-user

4. 修改父目录权限

如果仅添加控制块并不能起作用,因为父目录的权限是允许全部访问,而子目录继承父目录权限。所以还应该把父目录权限进行修改,账号密码才能起作用

DocumentRoot "/usr/local/apache/htdocs"
<Directory "/usr/local/apache/htdocs">
...Options Indexes FollowSymLinks
...AllowOverride None
...Require all deniedRequire user tom
</Directory>

5. 访问效果

在这里插入图片描述

在这里插入图片描述

6. 在配置文件中定义一个".htaccess"隐藏文件

[root@k8s-node-02 apache]# cat htdocs/doc/.htaccess
AuthType Basic
AuthName "Welecon to Login"
AuthUserFile "/usr/local/apache/conf/users.passwd"
Require user jason tom

此处我们允许jason和tom用户访问,若允许账号验证文件的所有用户均有权限访问可直接写"Require valid-user"即可。
为什么".htaccess"文件客户端看不到呢?

<Files ".ht*">Require all denied
</Files>

7. 添加组

基于组帐号进行认证

<Directory "">Options NoneAllowOverride NoneAuthType BasicAuthName "String"(提示用户为什么认证)AuthUserFile "/PATH/TO/DIR"(/tmp/test.users)AuthGroupFIle "/paht/to/group_file"Require group groupname1 grpname2...
</Directory>

配置

[root@k8s-node-02 apache]# cat /usr/local/apache/conf/users.group	#添加组
testgrp: tom jason
...
<Directory "/usr/local/apache/htdocs/doc/">Options NoneAllowOverride NoneAuthType BasicAuthName "please input account and passwd"AuthUserFile "/usr/local/apache/conf/users.passwd"AuthGroupFile "/usr/local/apache/conf/users.group"			#配置组文件路径#Require valid-user#Require user tomRequire group testgrp										#设置组权限
</Directory>

3.1.3 虚拟主机

站点标识:socket

  • IP相同,端口不同;
  • IP不同,端口均为默认
  • IP和端口相同,FQDN不同

1. 构建方案

创建虚拟主机有三种实现方案:

  • 基于IP:
    为每个虚拟主机准备至少一个ip
  • 基于端口:
    为每个虚拟主机使用至少一个独立port
  • 基于FQDN:
    为每个虚拟主机使用至少一个FQDN

注意:http2.2 一般虚拟主机不要与中心主机户混用,要使用虚拟主机,先禁用main主机
禁用方法:注释中心主机的DocumentRoot指令即可

2. 基于IP的虚拟主机示例

① 在本机添加三个IP,并制作网页

ip address add 192.168.0.10/24 dev ens33
ip address add 192.168.0.11/24 dev ens33
ip address add 192.168.0.12/24 dev ens33
mkdir /www;cd /www;mkdir {10..12};
echo 'welcome 10.com' > 10/index.html
echo 'welcome 10.com' > 11/index.html
echo 'welcome 10.com' > 12/index.html

② 修改主配置文件,取消对virtual host的配置文件路径注释

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

③ 编辑conf/extra/httpd-vhosts.conf

[root@k8s-node-02 conf]# cat extra/httpd-vhosts.conf
<VirtualHost 192.168.0.10:80>ServerName "www.10.com"			#域名DocumentRoot "/www/10/htdocs"	#文档路径<Directory "/www/10/htdocs">	#授权Options NoneRequire all granted</Directory>
</VirtualHost><VirtualHost 192.168.0.11:80>ServerName www.11.comDocumentRoot "/www/11/htdocs"<Directory "/www/11/htdocs">Options NoneRequire all granted</Directory></VirtualHost><VirtualHost 192.168.0.12:80>ServerName www.12.comDocumentRoot "/www/12/htdocs"<Directory "/www/12/htdocs">Options NoneRequire all granted</Directory></VirtualHost>

④ 检查语法并重启httpd

httpd -t
systemctl restart httpd

⑤ 测试

[root@k8s-node-02 conf]# curl 192.168.0.10
welcome 10.com
[root@k8s-node-02 conf]# curl 192.168.0.11
welcome 11.com
[root@k8s-node-02 conf]# curl 192.168.0.12
welcome 12.com

3. 基于端口的虚拟主机

添加监听端口:Listen 8082

[root@k8s-node-02 extra]# cat httpd-vhosts.conf
Listen 8082
Listen 8083
<VirtualHost *:80>ServerName "www.10.com"DocumentRoot "/www/10/htdocs"<Directory "/www/10/htdocs">Options NoneRequire all granted</Directory>ErrorLog "logs/www.10.com-error_log"CustomLog "logs/www.10.com_log" common
</VirtualHost>
<VirtualHost *:8082>ServerName www.11.comDocumentRoot "/www/11/htdocs"<Directory "/www/11/htdocs">Options NoneRequire all granted</Directory></VirtualHost>
<VirtualHost *:8083>ServerName www.12.comDocumentRoot "/www/12/htdocs"<Directory "/www/12/htdocs">Options NoneRequire all granted</Directory></VirtualHost>

笔者基于端口配置不好用,鼓捣半天也没解决,先躺着,回头再来解决。

4. 基于FQDN的虚拟主机

修改ServerName,配置/etc/hosts

[root@k8s-node-02 extra]# cat httpd-vhosts.conf
<VirtualHost 192.168.0.10:80>ServerName "www.10.com"DocumentRoot "/www/10/htdocs"<Directory "/www/10/htdocs">Options NoneRequire all granted</Directory>ErrorLog "logs/www.10.com-error_log"CustomLog "logs/www.10.com_log" common
</VirtualHost>
<VirtualHost 192.168.0.10:80>ServerName www.11.comDocumentRoot "/www/11/htdocs"<Directory "/www/11/htdocs">Options NoneRequire all granted</Directory></VirtualHost>
<VirtualHost 192.168.0.10:80>ServerName www.12.comDocumentRoot "/www/12/htdocs"<Directory "/www/12/htdocs">Options NoneRequire all granted</Directory></VirtualHost>
[root@k8s-node-02 extra]# cat /etc/hosts
192.168.0.10 www.10.com
192.168.0.10 www.11.com
192.168.0.10 www.12.com
[root@k8s-node-02 extra]# curl www.10.com
welcome 10.com
[root@k8s-node-02 extra]# curl www.11.com
welcome 11.com
[root@k8s-node-02 extra]# curl www.12.com
welcome 12.com

5. 开启status功能

1.加载mod_status.so模块

①编辑httpd.conf文件vim /usr/local/apache/conf/httpd.conf
②查看行 LoadModuls status_module modules/mod_status.so 前是否有注释符号#,如果有则去掉,如果没有则直接进行下一步操作。

2.加载status模块的配置文件

①编辑httpd.conf文件vim /usr/local/apache/conf/httpd.conf
②查看行 Include conf/extra/httpd-info.conf 前是否有注释符号#,如果有则去掉,如果没有则直接进行下一步操作。

3.开启详细状态功能

①编辑httpd-info.conf文件vim /usr/local/apache/conf/extra/httpd-info.conf
②查看行 ExtendedStatus On 前是否有注释符号#,如果有则去掉,如果没有则直接进行下一步操作。

设置完这些,重启apache服务后我们就可以通过域名/server-status查看apache允许状态了,接下来我们来配置针对status页面做认证

关于httpd-info.conf配置内容
① http2.2

            <Location /server-status>SetHandler server-statusOrder allow,denyAllow from 172.16</Location>

② http2.4

            <Location /server-status>SetHandler server-statusRequire ip 172.16</Location>

3.2 httpd的功能特性:

3.2.1 CGI:Common gateway interface

CGI脚本由服务器调用, 基于浏览器的数据输入. 其工作原理如下:

1 一个URL指向一个CGI脚本. 一个CGI脚本的URL能如普通的URL一样出现,区别于.htm/.html静态URL,CGI的URL是动态URL。如http://xxxx.com/cgiurl
2 服务器CGI接收浏览器的请求, 按照那个URL指向对应的脚本文件(注意文件的位置和扩展名),执行CGI脚本.
3 CGI脚本执行基于输入数据的操作,包括查询数据库、计算数值或调用系统中其他程序.
4 CGI脚本产生某种Web服务器能理解的输出结果.
5 服务器接收来自脚本的输出并且把它传回浏览器,让用户了解处理结果

3.2.2 ScriptAlias 指令,配置脚本执行目录

将URL映射到文件系统位置,并将目标指定为CGI脚本。例:Script Alias "cgi-bin" "/usr/local/apache/cgi-bin/" 表示访问 ​ ​http://www.itwish.cn/cgi-bin/test​​ 时,目录映射地址为/usr/local/apache/cgi-bin/test

语法1:ScriptAlias [URL-path] file-path|directory-path

# 定义/cgi-bin/ 目录映射到 /web/cgi-bin/ 目录 ,1)功能等同于2) ,注意结尾的"/"
1)
ScriptAlias "/cgi-bin/" "/web/cgi-bin/"       
2)
Alias "/cgi-bin/" "/web/cgi-bin/"
<Location "/cgi-bin">SetHandler cgi-scriptOptions +ExecCGI
</Location>

主配置文件:

[root@VM httpd]# vi httpd.conf    # 调整配置文件
<IfModule mpm_prefork_module>LoadModule cgi_module modules/mod_cgi.so	#根据不同工作模式,打开不同的cgi模块
</IfModule><IfModule alias_module>#ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"      # 定义目录/cgi-bin/ 目录映射到 /usr/local/apache/cgi-bin/ 目录 
</IfModule><Directory "/usr/local/apache/cgi-bin">    # 定义目录属性 AllowOverride noneOptions noneRequire all granted
</Directory>

创建测试脚本

[root@VM cgi-bin]# vi   test1      # 在cgi-bin目录中创建test1 bash 脚本 
#!/bin/bash
cat << EOF
Content-Type: text/html# 注意改行为空行 
<pre>
<h1>The hostname is `hostname`. </h1>     # 显示主机名 ,使用bash命令 hostname 实现 
The time is `date`.                    # 显示当前访问日期 ,使用bash命令 date 实现
</pre># 改行为空行 
EOF[root@VM cgi-bin]# vi test2           # 在cgi-bin目录中创建test2   perl 脚本 
#!/usr/bin/perl
print "content-type: text/html","\n\n";
print "<HTML>","\n";
print "<HEAD>","\n";
print "<TITLE>Perl</TITLE>","\n";
print "</HEAD>","\n";
print "<BODY>","\n";
print "<H1>Hello World</H1>","\n";
print "</BODY>","\n";
print "</HTML>","\n";[root@VM ]# chmod o+x /usr/local/apache/cgi-bin/{test1,test2}     # 注意 ,一定要给与脚本执行权限  [root@VM cgi-bin]# curl http://192.168.71.253/cgi-bin/test1            # 测试 test1 脚本执行状况
<pre>
<h1>The hostname is VM. </h1>
The time is Wed Aug 15 19:26:56 CST 2018.
</pre>[root@k8s-node-02 apache]# curl http://192.168.71.253/cgi-bin/test2	#  测试test2  perl脚本执行状况
<HTML>
<HEAD>
<TITLE>Perl</TITLE>
</HEAD>
<BODY>
<H1>Hello World</H1>
</BODY>
</HTML>

在这里插入图片描述

3.2.3 使用mod_deflate模块压缩页面优化传输速率

使用场景:

1.节约带宽
2.压缩适合于压缩的资源

        SetOutputFilter DEFLATE 设置过滤器AddOutputFIlterByType DEFLATE text/html...DeflateCompressionLevel 9    压缩比BrowserMatch ^Mozilla/4 gizp-only-text/htmlBrowserMatch ^Mozilla/4\.0[678] no-gzip

3.2.4 https(http over ssl),使用mod_ssl支持https

ssl会话简化流程:

  1. 客户端发送可供选择的加密方式,并向服务器请求证书
  2. 服务器端发送证书以及选定的加密方式给客户端
  3. 客户端取得证书并进行证书验证
    如果信任给其发证书CA:
    a,验证证书来源的合法性,用CA的公钥解密证书上的数字签名
    b,验证证书内容的合法性;完整性
    c,检查证书的有效期限
    d,检查证书是否被吊销
    e,证书中拥有者的名字,与访问的目标主机要一致
  4. 客户端生成临时会话密钥(对称密钥),并使用服务器的公钥加密此数据发送给服务器,完成密钥交换
  5. 服务器用此密钥加密用户请求的资源,响应客户端

注意:ssl会话是基于ip地址创建;所以单ip的主机上,仅可以使用一个https虚拟主机

            yum install mod_ssl

术语:PKI CA CRL X.509(V1,v2,v3)
配置httpd支持https:

  1. 为服务器申请数字证书
    测试:通过私建CA发证书

a,创建私有ca
b,在服务器创建证书签署请求
c,ca签证

  1. 配置httpd支持使用ssl,及使用证书
    配置文件:/etc/httpd/conf.d/ssl.conf

DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile

  1. 测试基于https访问相应的主机
openssl s_client [-connect host:port][-cert filename][-CApath directroy][-CAfile filename]

3.3 常用命令、工具

3.3.1 常用命令

部分命令仅限yum安装使用

yum install httpd –y				#安装httpd
yum info httpd						#查看httpd安装包信息
yum list all http*					
rpm -ql httpd-tools
yum repolist
yum clean all
yum install httpd-manual
httpd -t 							#httpd语法测试
配置文件:/etc/httpd/conf
log:/var/log/httpd
网页文件:/var/www/html,默认根
ss -ntl : port 80
默认页:/etc/httpd/conf.d/welcome.conf
loadmodule
httpd -M |grep mpm
httpd.worker -M切换模式
httpd -l 列出模块

3.3.2 常用工具

http 2.4命令行客户端工具

  1. curl命令
    curl - transfer a URLcurl [options] [URL...]options:-A:-A, --user-agent STRING模拟自己是什么用户代理的 *--basic使用http基本认证--tcp-nodelay使用TCP_NODELAY-e/--referer<url>:上一跳 * --cacert<file> ca证书(ssl)--compressed要求返回是压缩格式 *-H/--header<line>自定义首部信息传递给服务器-I/--head 只显示响应报文首部信息--limit-rate<rate>设置传输速率-u/--user[:password]设置服务器的用户密码-0(零)/--http1.0 使用http1.0
  1. elinks:
        elinks [options] url-dump 一次显示,直接结束,不进入交互模式
  1. httpd自带的工具等

htpasswd
apachectl
rotatelogs:日志滚动工具dd
suexec:访问某些有特殊权限配置的资源时,临时切换至指定用户运行
ab:apache bench

  1. httpd的压力测试工具

ab,webbench,http_load,selge
jmeter loadrunner
tcpcopy

  1. 网站指标:

css:级别样式表
pv:page view,一次页面访问,一个页面有10个资源,100W次的资源请求,=10W次页面访问
uv:user view,独立的用户浏览量,
ip:ip地址 ,每个ip地址访问量,小于uv

相关文章:

CHAPTER 3 Web Server - httpd配置(二)

Web Server - httpd配置二3.1 httpd配置3.1.1 基于用户的访问控制3.1.2 basic认证配置示例&#xff1a;1. 添加用户2. 添加网页文件3. 定义安全域4. 修改父目录权限5. 访问效果6. 在配置文件中定义一个".htaccess"隐藏文件7. 添加组3.1.3 虚拟主机1. 构建方案2. 基于…...

VSCode 连接 SSH 服务器

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/129133964 配置VSCode 下载VSCode:https://code.visualstudio.com/ 安装 Remote - SSH: 点击右下角蓝色图标: 连接服务器: 即可。 默认连接:ssh chen…...

如何选择靠谱的插画培训课程

如何选择靠谱的插画培训课程&#xff0c;今天教你3个维度选择一个靠谱的插画培训班&#xff01; 插画培训机构课程&#xff1a; 1.选择插画培训班时&#xff0c;要先考察课程&#xff0c;看看课程内容是否符合自己的需求&#xff0c;是否有助于提高插画技术。课程设置应该灵活…...

剑指 Offer 28. 对称的二叉树

剑指 Offer 28. 对称的二叉树 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 请实现一个函数&#xff0c;用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样&#xff0c;那么它是对称的。 例如&#xff0c;二叉树 [1,2,2,3,4,4,3] 是对称的。 但是下…...

深入Spring底层透析后置处理器之豁然开朗篇

目录前言Spring的后置处理器Bean工厂后置处理器Bean后置处理器自定义Component实现注解开发前言 看这篇文章之前&#xff0c;需要了解Bean创建的过程&#xff0c;本篇文章是接着bean创建的基本流程的续写 Bean创建的基本过程&#xff1a;http://t.csdn.cn/1lK2d Spring的后置处…...

软件测试(基础定义篇)

测试基础 1、什么是软件测试&#xff1f;2、常见的测试分类3、质量模型 4、软件测试流程 5、测试用例 6、测试用例设计方法 )1、什么是软件测试&#xff1f; 1、什么是软件&#xff1f; 答&#xff1a;软件是控制计算机硬件工作的工具。 2、软件的组成&#xff1f; 3、什么是…...

华为OD机试 - 寻找目标字符串 | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...

使用echart绘制中国地图并显示人数

文章目录引言效果如图所示vue中echarts4.9版本&#xff0c;地图的使用引言 在做毕设的过程中&#xff0c;有一个需求&#xff1a;根据用户的ip&#xff0c;在前端展示出中国地图&#xff0c;然后展现出每个省有多少人这样子 经过百度后&#xff0c;发现可以使用echart来完成该…...

Git的常用命令

1&#xff1a;软件安装1.1&#xff1a;Git下载与安装百度上搜索Git官网&#xff1a;https://git-scm.com/下载&#xff1a;https://git-scm.com/download/win下载Git安装程序&#xff0c;双击安装 Git-2.9.3.2-64-bit.exe配置环境变量path 使用git --version查看 git 是否安装成…...

AcWing1018.最低通行费

1018.最低通行费一个商人穿过一个 NN 的正方形的网格&#xff0c;去参加一个非常重要的商务活动。他要从网格的左上角进&#xff0c;右下角出。每穿越中间 1 个小方格&#xff0c;都要花费 1 个单位时间。商人必须在 (2N−1)(2−1) 个单位时间穿越出去。而在经过中间的每个小方…...

【面试题】vue中的插槽是什么?

大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库一、slot是什么在HTML中 slot 元素 &#xff0c;作为 Web Components 技术套件的一部分&#xff0c;是Web组件内的一个占位符该占位符可以在后期…...

Go语言结构体struct详解,Go空结构体的这些妙用你知道吗?

本文详解了Go语言结构体的各个知识点&#xff0c;最后介绍了空结构体的3种妙用。希望对你有帮助。 定义 结构体&#xff0c;是一种自定义的数据类型&#xff0c;由多个数据类型组合而成。用于描述一类事物相关属性。 定义方式&#xff1a; type 类型名 struct {字段名 字段类…...

华为OD机试 - 航天器(Python) | 机试题+算法思路+考点+代码解析 【2023】

航天器 题目 给航天器一侧加装长方形和正方形的太阳能板(图中的斜线区域); 需要先安装两个支柱(图中的黑色竖条); 再在支柱的中间部分固定太阳能板; 但航天器不同位置的支柱长度不同; 太阳能板的安装面积受限于最短一侧的那支支柱的长度; 现提供一组整型数组的支柱高度数据;…...

【Optional】告别丑陋判空,使用Optional类

一、概述 当项目中充斥着大量的、丑陋的判空语句&#xff0c;如下&#xff1a; if (user ! null) {Address address user.getAddress();if (address ! null) {Country country address.getCountry();if (country ! null) {String isocode country.getIsocode();if (isocod…...

魔兽世界服务端端新手搭建教程

明杰也是很久以前开始研究魔兽服务器架设&#xff0c;主要原因是亚服经常要排队6-7个小时&#xff0c;去不排除的服和单机没啥区别&#xff0c;以怀旧服玩到10级以后就开始玩335端&#xff0c;一开始也和新入手的人一样云里雾里的&#xff0c;经过长时间的学习总算有点成就,向新…...

宝塔搭建实战人才求职管理系统mobile手机端vue源码(五)

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 上一期给大家分享骑士cms会员管理member前端vue在本地运行打包、宝塔发布部署的方式&#xff0c;本期给大家分享&#xff0c;mobile移动端vue怎么在本地运行&#xff0c;打包&#xff0c;实现线上功能更新替换的方…...

生态应用:探讨 NGINX 与上下游系统集成时的开发经验

NGINX 作为一款高性能的 Web 服务器和反向代理服务器&#xff0c;在各种应用场景中广泛应用。随着业务的发展&#xff0c;我们在使用 NGINX 时&#xff0c;可能需要将其与其他系统进行集成&#xff0c;以实现更加复杂的业务需求。 本文将结合实际应用场景&#xff0c;探讨 NGI…...

ArcGIS批量拼接大量栅格遥感影像:Mosaic工具

本文介绍在ArcGIS下属的ArcMap软件中&#xff0c;基于Mosaic工具&#xff0c;批量对大量栅格遥感影像文件加以拼接、镶嵌的方法。 在GIS应用中&#xff0c;我们时常需要对大量栅格遥感影像数据加以批量拼接的工作。这一步骤可以基于Python语言实现&#xff0c;具体可以参考文章…...

Flink UI部署jar包报错

错误描述&#xff1a; 通过Flink的UI中的Submit New Job菜单添加jar包的时候提示报错。报错信息的关键字是“The LocalStreamEnvironment cannot be used when submitting a program through a client, or running in a TestEnvironment context”&#xff0c;最关键的是“Loc…...

Linux就该这么学:RAID与LVM磁盘阵列技术

这里写目录标题 7.1.1 部署磁盘阵列7.1.2 损坏磁盘阵列及修复7.1.3 磁盘阵列+备份盘7.1.4 删除磁盘阵列1. 需要将所有的磁盘都设置成停用状态:2. 逐一移除出去3. 续停用整个RAID磁盘阵列7.2 LVM逻辑卷管理器7.2.1 部署逻辑卷7.2.2 扩容逻辑卷7.2.3 缩小逻辑卷7.2.4 逻辑卷快照…...

数据库同步是什么意思?数据库架构有哪些?

目录 一、数据库同步是什么 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;数据库同步的类型 &#xff08;三&#xff09;数据库同步的实现方式 二、数据库架构的类型 &#xff08;一&#xff09;单机架构 &#xff08;二&#xff09;主从复制架构 &a…...

关键字--sizeof

sizeof 是 C 中的一个编译时运算符&#xff0c;用于获取一个类型或对象在内存中所占的字节数&#xff08;单位&#xff1a;字节&#xff0c;byte&#xff09;。 用法 获取类型的大小&#xff1a; std::cout << sizeof(int) << std::endl; // 输出int类型的字节数…...

STM32外设问题总结

SPI&#xff1a; ①&#xff0e;软件SPI和硬件SPI有什么不一样&#xff1f; 答&#xff1a;软件SPI需要在代码中进行配置相关代码&#xff0c;如配置引脚等&#xff0c;而硬件SPI的话是它已经在硬件上已经配置好SPI了&#xff0c;已经可以直接实现&#xff0c;所以可以直接使…...

在 Caliper 中执行不同合约的方法

在 Caliper 中执行不同的智能合约需要通过正确配置工作负载(workload)和测试轮次(rounds),下面我将详细介绍如何执行不同的合约。 1. 通过 config.yaml 配置不同测试轮次 你可以在 config.yaml 中为不同的合约定义不同的测试轮次: rounds:- label: test-helloworlddescript…...

React - 组件通信

组件通信 概念&#xff1a;组件通信就是组件之间数据传递&#xff0c;根据组件嵌套关系不同&#xff0c;有不同的通信方法 父传子 —— 基础实现 实现步骤 父组件传递数据 - 在子组件标签上绑定属性子组件接收数据 - 子组件通过props参数接收数据 声明子组件并使用 //声明子…...

口罩佩戴检测算法AI智能分析网关V4工厂/工业等多场景守护公共卫生安全

一、引言​ 在公共卫生安全日益受到重视的当下&#xff0c;口罩佩戴成为预防病毒传播、保障人员健康的重要措施。为了高效、精准地实现对人员口罩佩戴情况的监测&#xff0c;AI智能分析网关V4口罩检测方案应运而生。该方案依托先进的人工智能技术与强大的硬件性能&#xff0c;…...

第1章_数据分析认知_知识点笔记

来自&#xff1a;数据分析自学课程-戴戴戴师兄 逐字稿&#xff1a;【课程4.0】第1章_分析认知_知识点笔记 【课程4.0】第1章 分析认知 知识点总结 数据分析的核心价值不是工具&#xff0c;而是用数据驱动业务增长。 一、数据分析的本质认知 数据分析是什么&#xff1f; 不是酷…...

高精度滚珠导轨在医疗设备中的多元应用场景

在医疗行业不断追求高效、精准与安全的今天&#xff0c;医疗设备的性能优化至关重要。每一个精密部件都像是设备这个庞大“生命体”中的细胞&#xff0c;共同维持着设备的稳定运行。滚珠导轨&#xff0c;这一看似不起眼却功能强大的传动元件&#xff0c;正悄然在医疗设备领域发…...

transformer和 RNN以及他的几个变体区别 改进

Transformer、RNN 及其变体&#xff08;LSTM/GRU&#xff09;是深度学习中处理序列数据的核心模型&#xff0c;但它们的架构设计和应用场景有显著差异。以下从技术原理、优缺点和适用场景三个维度进行对比分析&#xff1a; 核心架构对比 模型核心机制并行计算能力长序列依赖处…...

设计模式杂谈-模板设计模式

在进入正题之前&#xff0c;先引入这样一个场景&#xff1a; 程序员A现在接到这样一个需求&#xff1a;这个需求有10个接口&#xff0c;这些接口都需要接收前端的传参&#xff0c;以及给前端返回业务状态信息。出于数据保密的要求&#xff0c;不管是前端传参还是最终参数返回都…...