day40-tomcat

1.每日復盤與今日內容

1.1復盤

  • keepalived高可用配置
  • 搶占式與非搶占式
  • 腦裂
  • keepalived處理Nginx掛掉

1.2今日內容

  • 部署、安裝、配置tomcat(systemctl)
  • Tomcat主配置文件
  • 部署靜態頁
  • 部署zrlog🍟🍟🍟🍟🍟
  • 接入負載均衡
  • 掛載到NFS

2.部署Tomcat

tomcat--處理動態

Nginx--處理靜態

  • 官網

主流

依賴

Tomcat11

依賴JDK17版本

Tomcat10

依賴JDK11版本

Tomcat9

依賴JDK8版本

#WEB01部署JDK
上傳JDK8安裝
先將文件拖入之后安裝
[root@web01 ~]# rpm -ivh jdk-8u181-linux-x64.rpm 
warning: jdk-8u181-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...1:jdk1.8-2000:1.8.0_181-fcs        ################################# [100%]#檢查
[root@web01 ~]# rpm -qa|grep jdk
jdk1.8-1.8.0_181-fcs.x86_64#下載Tomcat9
[root@web01 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.108/bin/apache-tomcat-9.0.108.tar.gz[root@web01 ~]# mkdir /soft#解壓到/soft
[root@web01 ~]# tar xf apache-tomcat-9.0.108.tar.gz -C /soft/
[root@web01 ~]# ll /soft/
total 0
drwxr-xr-x 9 root root 220 Aug 22 08:58 apache-tomcat-9.0.108[root@web01 ~]# ln -s /soft/apache-tomcat-9.0.108/ /soft/tomcat
[root@web01 ~]# ll /soft/
total 0
drwxr-xr-x 9 root root 220 Aug 22 08:58 apache-tomcat-9.0.108
lrwxrwxrwx 1 root root  28 Aug 22 08:58 tomcat -> /soft/apache-tomcat-9.0.108/#運行Tomcat
[root@web01 bin]# #./startup.sh 		# 相對路徑啟動Tomcat
[root@web01 bin]# #/soft/tomcat/bin/startup.sh # 絕對路徑啟動Tomcat[root@web01 bin]# /soft/tomcat/bin/startup.sh #默認運行端口8080
[root@web01 bin]# netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1504/php-fpm: maste 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6909/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      980/sshd: /usr/sbin 
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      6909/nginx: master  
tcp6       0      0 :::8080                 :::*                    LISTEN      18473/java   

3.配置systemctl方式啟動Tomcat

[root@web01 ~]# cat >/usr/lib/systemd/system/tomcat.service<<'EOF'
> [Unit]
> Description=Apache Tomcat Server
> After=network.target remote-fs.target nss-lookup.target
> ? 
> [Service]
> Type=forking
> ExecStart=/soft/tomcat/bin/startup.sh
> ExecStop=/soft/tomcat/bin/shutdown.sh
> ExecRestart=/soft/tomcat/bin/shutdown.sh  && sleep2  && /soft/tomcat/bin/startup.sh
> ? 
> [Install]
> WantedBy=multi-user.target
> EOF#重新加載systemctl
[root@web01 ~]# systemctl daemon-reload#同一時間只能用一種方式來管理啟動方式要么是用命令、要么是用systemctl,不要用命令開啟,systemctl關閉,不然關不掉。#停止tomcat
[root@web01 ~]# /soft/tomcat/bin/shutdown.sh#使用systemctl 運行 tomcat
[root@web01 ~]# systemctl start tomcat
[root@web01 ~]# netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1504/php-fpm: maste 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      980/sshd: /usr/sbin 
tcp6       0      0 :::8080                 :::*                    LISTEN      18708/java          
tcp6       0      0 :::22                   :::*                    LISTEN      980/sshd: /usr/sbin 
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      18708/java          
udp        0      0 127.0.0.1:323           0.0.0.0:*                           671/chronyd         
udp6       0      0 ::1:323                 :::*                                671/chronyd 

4.Tomcat主配置文件

整體結構說明
server.xml 采用嵌套結構,從外到內定義了 Tomcat 的運行時容器:
Server -> Service -> Connector(s) + Engine -> Host -> Context#類似nginx的核心區塊-->http區塊-->server區塊-->location區塊[root@web01 conf]# cat /soft/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.startup.VersionLoggerListener" /><Listener className="org.apache.catalina.core.AprLifecycleListener" /><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /><GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxParameterCount="1000"/><Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm><Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host></Engine></Service>
</Server>

5.快速部署靜態頁面

1.配置虛擬主機
cd /soft/tomcat/conf/
vim server.xml
...<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>
<!--復制一份Host自定義為diy.oldboy.com 代碼目錄指向/code/diy--><Host name="diy.oldboy.com"  appBase="/code/diy/"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="diy.oldboy.com" suffix=".log"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host></Engine></Service>
</Server>
~                                                                                                                     
"server.xml" 51L, 1985C written                                                        
#重啟生效
[root@web01 conf]# systemctl restart tomcat
[root@web01 conf]# echo diy... > /code/diy/index.html
[root@web01 conf]# mkdir /code/diy/ROOT
[root@web01 conf]# mv /code/diy/index.html /code/diy/ROOT
[root@web01 conf]# ll /code/diy/ROOT
total 4
-rw-r--r-- 1 root root 7 Aug 22 10:15 index.html

Tomcat的文件頁內容需放在指向目錄的/ROOT下才能生效

  • context
類似nginx的location作用
#下面的context作用 如果訪問diy.oldboy.com/tt 則給用戶返回/code/tt/下的內容
#注意如果context下的目錄如果不提前創建、則tomcat無法運行<Host name="diy.oldboy.com"  appBase="/code/diy/"unpackWARs="true" autoDeploy="true"><Context docBase="/code/tt" path="/tt" reloadable="true" /><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="diy.oldboy.com" suffix=".log"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>[root@web01 conf]# systemctl restart tomcat
[root@web01 conf]# mkdir /code/tt
[root@web01 conf]# echo context... > /code/tt/index.html
[root@web01 conf]# cat /code/tt/index.html
context... 

  • 管理自帶的管理界面
Tomcat自帶的管理頁面管理功能監控功能
?
1.所有的管理頁面,都將權限賦予給了角色,而角色的名稱是固定的:   manager-gui  admin-gui
2.需要添加一個用戶,將用戶捆綁至對應的角色,這樣用戶就可以訪問到對應的頁面
?
#將3行內容復制到倒數第1行的上面
[root@web01 conf]# tail -4 /soft/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="manager-gui,admin-gui"/>
</tomcat-users>3.由于項目默認允許127.0.0.1訪問,所以配置好了角色和用戶也無法正常訪問:
[root@web01 ROOT]# vim /soft/tomcat/webapps/host-manager/META-INF/context.xml
[root@web01 ROOT]# vim /soft/tomcat/webapps/manager/META-INF/context.xml默認狀態,
<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
?
修改后的狀態:10\.0\.0\.\d
<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="10\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
重啟生效     
[root@web01 conf]# systemctl restart tomcat   

6.Tomcat部署zrlog博客

#第一步 配置server
[root@web01 ~]# cd /soft/tomcat/conf/
[root@web01 conf]# vim server.xml
...<Host name="diy.oldboy.com"  appBase="/code/diy/"unpackWARs="true" autoDeploy="true"><Context docBase="/code/tt" path="/tt" reloadable="true" /><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="diy.oldboy.com" suffix=".log"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host><Host name="www.zrlog.com"  appBase="/code/zrlog/"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="zrlog" suffix=".log"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host></Engine></Service>
</Server>#重啟生效
[root@web01 conf]# systemctl restart tomcat
[root@web01 conf]# cd /code/zrlog/
[root@web01 zrlog]# wget https://dl.zrlog.com/release/javax-war/zrlog.war
#修改名稱為ROOT.war 立刻自動解壓部署
[root@web01 zrlog]# mv zrlog ROOT
#等待自動解壓后刪除war包
[root@web01 zrlog]# rm -rf zrlog.war#創建數據庫zrlog
[root@db01 ~]# mysql -uroot -plzy123.com -e "create database zrlog;"
[root@db01 ~]# mysql -uroot -plzy123.com -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpress          |
| zh                 |
| zrlog              |
+--------------------+#windows解析
10.0.0.7 www.zrlog.com#安裝部署流程

7.Tomcat接入負載均衡

  • 單臺
[root@web01 conf.d]# cat tom.conf 
server {listen 80;server_name www.zrlog.com;location / {proxy_pass http://127.0.0.1:8080;proxy_set_header Host $http_host;}
}[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 conf.d]# systemctl restart nginx
  • 多臺
#1.WEB02部署JDK
[root@web02 ~]# scp 10.0.0.7:~/jdk* .
[root@web02 ~]# rpm -ivh jdk-8u181-linux-x64.rpm#2.WEB02部署Tomcat
[root@web02 ~]# scp -r 10.0.0.7:/soft /#3.將WEB01的代碼同步到WEB02
[root@web02 ~]# scp -r 10.0.0.7:/code/zrlog /code/#4.配置systemctl啟動方式
[root@web02 ~]# scp 10.0.0.7:/usr/lib/systemd/system/tomcat.service /usr/lib/systemd/system/[root@web02 ~]# systemctl daemon-reload#5.啟動tomcat
[root@web02 ~]# systemctl start tomcat
[root@web02 ~]# netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      961/sshd: /usr/sbin 
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      69766/php-fpm: mast 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      94884/nginx: master 
tcp6       0      0 :::22                   :::*                    LISTEN      961/sshd: /usr/sbin 
tcp6       0      0 :::8080                 :::*                    LISTEN      105456/java  #6.windows hosts解析到10.0.0.8測試zrlog#7.負載均衡配置轉發zrlog
[root@lb01 conf.d]# cat zrlog.conf 
upstream tom {server 172.16.1.7:8080;server 172.16.1.8:8080;
}
server {listen 443 ssl;server_name www.zrlog.com;ssl_certificate ssl_key/server.crt;ssl_certificate_key ssl_key/server.key;# 配置 SSL 會話緩存,提高性能ssl_session_cache shared:SSL:1m;# 設置 SSL 會話超時時間ssl_session_timeout 5m;# 自定義設置使用的TLS協議的類型以及加密套件(以下為配置示例,請您自行評估是否需要配置)ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;# 指定允許的 TLS 協議版本,TLS協議版本越高,HTTPS通信的安全性越高,但是相較于低版本TLS協議,高版本TLS協議對瀏覽器的兼容性較差ssl_protocols TLSv1.2 TLSv1.3;# 優先使用服務端指定的加密套件ssl_prefer_server_ciphers on;include lv_env;location / {proxy_pass http://tom;}}#配置將用戶訪問http請求強制跳轉https
server {listen 80;server_name www.zrlog.com;return 302 https://$server_name$request_uri;
}
[root@lb01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb01 conf.d]# systemctl restart nginx

8.靜態文件掛載NFS

#1.找到圖片的位置
Request URL: http://www.zrlog.com:8080/attached/image/20250822/20250822114746_206_thumbnail.png?h=723&w=660#2.配置NFS
[root@nfs ~]# vim /etc/exports
/data/wp  172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zh  172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zrlog  172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# chown www.www /data/zrlog
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl restart nfs#3.將上傳的圖片拷貝到NFS
[root@web02 zrlog]# scp -r /code/zrlog/ROOT/attached/image 10.0.0.31:/data/zrlog/
[root@nfs ~]# chown -R www.www /data/zrlog/
[root@nfs ~]# ll /data/zrlog/
total 0
drwxr-x--- 3 www www 19 Aug 22 11:53 attached#4.掛載相應目錄、
#如果沒有上傳attached目錄不存在需要手動創建。
[root@web01 ~]# mkdir /code/zrlog/ROOT/attached/
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/zrlog /code/zrlog/ROOT/attached/
[root@web01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 459M     0  459M   0% /dev
tmpfs                    475M     0  475M   0% /dev/shm
tmpfs                    475M   37M  438M   8% /run
tmpfs                    475M     0  475M   0% /sys/fs/cgroup
/dev/sda3                 48G  5.2G   43G  11% /
/dev/sda1                195M  122M   74M  63% /boot
tmpfs                     95M     0   95M   0% /run/user/0
172.16.1.31:/data/zrlog   48G  3.8G   45G   8% /code/zrlog/ROOT/attached[root@web02 ~]# mount -t nfs 172.16.1.31:/data/zrlog /code/zrlog/ROOT/attached/
[root@web02 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 459M     0  459M   0% /dev
tmpfs                    475M     0  475M   0% /dev/shm
tmpfs                    475M   49M  426M  11% /run
tmpfs                    475M     0  475M   0% /sys/fs/cgroup
/dev/sda3                 48G  4.8G   43G  11% /
/dev/sda1                195M  122M   74M  63% /boot
tmpfs                     95M     0   95M   0% /run/user/0
172.16.1.31:/data/wp      48G  3.8G   45G   8% /code/wordpress/wp-content/uploads
172.16.1.31:/data/zrlog   48G  3.8G   45G   8% /code/zrlog/ROOT/attached#注意Nginx默認上傳的限制
vim /etc/nginx/nginx.conf  # 寫在http區塊即可
client_max_body_size 20M;

9.今日總結

  • 部署、安裝、配置tomcat(systemctl)
  • Tomcat主配置文件
  • 部署靜態頁
  • 部署zrlog🍟🍟🍟🍟🍟
  • 接入負載均衡
  • 掛載到NFS

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/94271.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/94271.shtml
英文地址,請注明出處:http://en.pswp.cn/web/94271.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【RA-Eco-RA4E2-64PIN-V1.0 開發板】步進電機的串口控制

【RA-Eco-RA4E2-64PIN-V1.0 開發板】步進電機的串口控制 本文介紹了 RA-Eco-RA4E2-64PIN-V1.0 開發板通過串口指令實現 28BYJ-48 步進電機旋轉角度和速度的精確控制的項目設計。 項目介紹 硬件連接&#xff1a;28BYJ-48 步進電機、ULN2003 驅動板、Jlink 調試器、供電電源等&am…

PiscCode基于 Mediapipe 的人體多模態關鍵點檢測與可視化系統 —— HumanMultiLandmarker 深度解析

一、引言 在計算機視覺領域&#xff0c;人體關鍵點檢測&#xff08;Human Pose Estimation&#xff0c;HPE&#xff09;一直是研究和應用的熱點方向之一。隨著深度學習與實時圖像處理技術的發展&#xff0c;人體姿勢估計已經從傳統的 2D 檢測走向了 3D 空間建模&#xff0c;并…

文獻閱讀筆記【物理信息機器學習】:Physics-informed machine learning

文獻閱讀筆記&#xff1a;Physics-informed machine learningSummaryResearch ObjectiveBackground / Problem Statement問題背景研究現狀需解決的問題問題出現的原因分析問題解決思路Method(s)問題建模作者解決問題的方法/算法1. 觀測偏差&#xff08;Observational Biases&am…

Linux服務環境搭建指南

實驗拓撲概述**實驗拓撲&#xff1a; APPSRV&#xff1a; 主機名&#xff1a;appsrv.example.com ip地址&#xff1a;192.168.100.10 網關&#xff1a;192.168.100.254 網卡為NAT模式 STORAGESRV&#xff1a; 主機名&#xff1a;storagesrv.example.com ip地址&#xff1a;192.…

[特殊字符] 數據庫知識點總結(SQL Server 方向)

一、數據庫基礎概念數據庫&#xff08;Database&#xff09;&#xff1a;存儲和管理數據的容器。數據表&#xff08;Table&#xff09;&#xff1a;以行和列形式組織數據。行&#xff08;Row&#xff09;&#xff1a;一條記錄。列&#xff08;Column&#xff09;&#xff1a;字…

【PSINS工具箱】MATLAB例程,二維平面上的組合導航,EKF融合速度、位置和IMU數據,4維觀測量

文章目錄關于工具箱程序簡介代碼概述核心功能與步驟運行結果MATLAB代碼關于工具箱 本文所述的代碼需要基于PSINS工具箱&#xff0c;工具箱的講解&#xff1a; PSINS初學指導&#xff1a;https://blog.csdn.net/callmeup/article/details/137087932 本文為二維平面上的定位&am…

MiMo-VL 技術報告

摘要 我們開源了 MiMo-VL-7B-SFT 和 MiMo-VL-7B-RL 兩個強大的視覺語言模型,它們在通用視覺理解和多模態推理方面均展現出最先進的性能。MiMo-VL-7B-RL 在 40 項評估任務中的 35 項上優于 Qwen2.5-VL-7B,并在 OlympiadBench 上獲得 59.4 分,超越了參數量高達 780 億的模型。…

CTFshow Pwn入門 - pwn 19

先看main函數&#xff1a;fclose(_bss_start) fclose(stdout) 關閉了默認fd1的輸出&#xff0c;所以system的結果無法直接看到。 思路&#xff1a; 輸出重定向。 ls 1>&0 ls >&0 ls >&2 ###三種寫法均可將輸出重定向到能回顯的終端并獲得一個新的交互…

Redis(以Django為例,含具體操作步驟)

簡介Redis&#xff08;Remote Dictionary Server&#xff09;是一個開源的內存數據結構存儲系統&#xff0c;支持多種數據結構&#xff08;如字符串、哈希、列表、集合、有序集合等&#xff09;&#xff0c;可用作數據庫、緩存或消息隊列。其核心特點包括&#xff1a;高性能&am…

瀏覽器解析網址的過程

問題瀏覽器解析網址的過程我的回答當你在瀏覽器地址欄輸入一個URL&#xff08;比如www.example.com&#xff09;并按下回車后&#xff0c;會發生以下一系列步驟&#xff1a;首先&#xff0c;瀏覽器會解析URL結構&#xff0c;確定要訪問的協議、域名和路徑。如果你沒有輸入協議部…

NVIDIA Nsight Systems性能分析工具

* 性能分析 NVIDIA Nsight Systems (推薦)&#xff1a; 這是 NVIDIA 官方推薦的更現代、功能更強大的分析工具。 安裝 Nsight Systems在 Docker 容器中啟動程序&#xff1a;# 確保你在啟動容器時掛載了/usr/local/cuda/targets/x86_64-linux/lib/ 和 /usr/local/nvidia/lib64 #…

后臺管理系統-14-vue3之tag標簽頁的實現

文章目錄 1 tag靜態實現 1.1 CommonTag.vue(el-tag) 1.2 Main.vue(普通組件標簽) 2 tag通過pinia管理 2.1 CommonAside.vue(菜單點擊事件) 2.2 stores/index.js(selectMenu()和tags) 2.3 CommonTag.vue(計算屬性tags) 3 點擊tag之后跳轉到指定頁面 3.1 views/Mail.vue(商品) 3.…

CMake2: CMakeLists.txt的常用命令

參考鏈接: 愛編程的大丙 | CMake教程 CMakeLists指令以及常用方法 現代 CMake 教程 文章目錄1. cmake_minimum_required( )2. project( )3. add_executable( )4. set()5. aux_source_directory( )6. file( )7. include_directories( )8. add_library( )9. link_libraries()與li…

Ansible入門:自動化運維基礎

Ansible 基礎概念與安裝1. 自動化動機 (Motivation for Automation)概念解釋&#xff1a; 指為什么要用Ansible等工具來替代手動管理服務器。核心動機包括&#xff1a;效率與速度&#xff1a; 同時在上百甚至上千臺服務器上執行任務&#xff0c;秒級完成&#xff0c;遠非人工可…

【測試】基于博客系統的測試報告

前言 本篇博客對簡易的博客系統做的測試總結一份測試報告&#xff0c;包含功能測試&#xff0c;自動化測試&#xff0c;性能測試 &#x1f493; 個人主頁&#xff1a;zkf ? 文章專欄&#xff1a;測試 若有問題 評論區見&#x1f4dd; &#x1f389;歡迎大家點贊&#x1f44d;…

Oracle:配置讓插入語句時id自動輸入

Oracle:配置讓插入語句時id自動輸入無需手動指定&#xff0c;核心是利用 序列&#xff08;Sequence&#xff09; 或 自增列&#xff08;Identity Column&#xff09; 來自動生成唯一值。以下是兩種常用方案&#xff1a;方案 1&#xff1a;使用序列&#xff08;Sequence&#xf…

秒殺服務的回調方案

在秒殺場景中&#xff0c;用戶點擊“搶購”后&#xff0c;后端需要通過異步處理應對高并發&#xff08;避免請求阻塞&#xff09;&#xff0c;同時需通過實時回調機制將最終結果&#xff08;成功/失敗&#xff09;推送給客戶端并展示。核心方案是&#xff1a;“前端發起請求→后…

php apache無法接收到Authorization header

Apache 默認不傳遞 Authorization頭到后端環境&#xff08;如 PHP&#xff09;。其表現是&#xff1a;print_r($_SERVER)時&#xff0c; 沒有 [Authorization] &#xff1a;Array ([Accept-Language] > zh,en;q0.9,zh-CN;q0.8,en-US;q0.7[Accept-Encoding] > gzip, defla…

當我們想用GPU(nlp模型篇)

在個人設備上“把 GPU 真正用起來”做 NLP&#xff0c;分五步&#xff1a;準備 → 安裝 → 驗證 → 訓練/推理 → 踩坑排查。下面每一步都給出可復制命令和常見錯誤。 ────────────────── 1. 硬件準備 ? 一張 NVIDIA GPU&#xff0c;算力 ≥ 6.1&#xff08…

CryptSIPVerifyIndirectData函數分析

可以使用此函數從SIP接口對應的文件中提取簽名信息 CryptSIPVerifyIndirectData&#xff1a;將當前文件的哈希結果做為“指紋”&#xff0c;并與從CryptSIPGetSignedDataMsg中提取的簽名信息進行比較。 如果哈希結果相同&#xff0c;則意味著當前文件與之前簽名的文件相同&…