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

25_05_19Linux实战篇、第一章_01若依前后端部署之路(后端)

Linux_实战篇

欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神!

题目:若依前后端动静分离(后端 )

版本号: 1.0,0
作者: @老王要学习
日期: 2025.05.20
适用环境: Rocky9.5

文档说明

本文围绕 Linux 实战展开,涵盖环境准备、软件安装部署及若依项目配置等内容。介绍硬件与软件要求,阐述关闭防火墙、修改 IP 等操作。详细讲解 MySQL、Redis 等安装,以及若依前后端部署步骤,为在 Linux 环境开展项目提供指导

环境准备

硬件要求

  • 服务器: 2核CPU、4GB内存,20GB硬盘空间
  • 网络: 确保服务器具有固定的IP地址,并且防火墙允许FTP端口(默认22端口)的通信

软件要求

  • 操作系统:Rocky9.5
  • FTP软件:SecureCRT
  • 软件包1:apache-maven-3.8.8
  • 软件包2:apache-tomcat-9.0.105
  • 软件包3:jdk-8u131-linux-x64
  • 软件包4:mysql-8.0.42-linux-glibc2.17-x86_64-minimal
  • 软件包5:nginx-1.28.0
  • 软件包6:node-v22.15.1-linux-x64
  • 软件包7:redis-6.0.6

零、环境准备

0.1环境介绍

在这里插入图片描述

服务器环境IP地址软件部署
web前端 2G192.168.174.5NGINX
java后端 2G192.168.174.6Tomcat9 jdk1.8
动态缓存 4G192.168.174.10Redis6.0.6
数据存储 4G192.168.174.10MySQL8.0.42
项目管理 2G192.168.174.100Maven jdk1.8 node-v22

0.2关闭防火墙

systemctl stop firewalld && systemctl disable firewalldsed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/configreboot

0.3修改网卡IP

# NGINX
nmcli connection modify ens160 ipv4.addresses 192.168.174.5/24
nmcli connection up ens160# Tomcat
nmcli connection modify ens160 ipv4.addresses 192.168.174.6/24
nmcli connection up ens160# db
nmcli connection modify ens160 ipv4.addresses 192.168.174.10/24
nmcli connection up ens160# maven
nmcli connection modify ens160 ipv4.addresses 192.168.174.100/24
nmcli connection up ens160

0.4修改主机名

# nginx_5
hostnamectl set-hostname nginx_5
bash# tomcat_6
hostnamectl set-hostname tomcat_6
bash# db_10
hostnamectl set-hostname db_10
bash# maven_100
hostnamectl set-hostname maven_100
bash

一、安装与部署

MySQL+Redis

1.1下载安装包

# 进入目录
cd /usr/local/src# mysql(174.10)
curl https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.42-linux-glibc2.17-x86_64-minimal.tar.xz# redis(174.10)
curl https://download.redis.io/releases/redis-6.0.6.tar.gz# jdk-8u451-linux-x64.tar.gz((174.6)我用的旧版本下不到了下载这个)
https://www.oracle.com/cn/java/technologies/downloads/#java8# tomcat9(174.6)
curl https://mirrors.aliyun.com/apache/tomcat/tomcat-9/v9.0.105/bin/apache-tomcat-9.0.105.tar.gz# NGINX1.28.0(174.5)
curl https://nginx.org/download/nginx-1.28.0.tar.gz# Maven3.8.8(174.100)
curl https://mirrors.aliyun.com/apache/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz# node-v22.15.1(174.100)
curl https://npmmirror.com/mirrors/node/v22.15.1/node-v22.15.1-linux-x64.tar.xz

1.2部署MySQL(174.10)

# 解压软件包
tar xf mysql-8.0.42-linux-glibc2.17-x86_64-minimal.tar.xz # 创建用户
useradd -r -s /bin/false -M mysql# 修改文件名称与位置
mv mysql-8.0.42-linux-glibc2.17-x86_64-minimal /usr/local/mysql# 创建data并赋权
mkdir /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/# 写入配置文件
cat >/etc/my.cnf<<LW
[mysqld]
user=mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysqld.pid
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/mysql.err
LW# 初始化MySQL
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data# 写入启动脚本
cat >>/usr/lib/systemd/system/mysqld.service<<LW
[Unit]
Description=DB server daemon
After=network.target[Service]
Type=focking
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize
KillMode=process[Install]
WantedBy=multi-user.target
LW# 重载重启
systemctl daemon-reload 
systemctl start mysqld# 查看端口状态
ss -anltp | grep mysqld
#启动服务输出如下: 
LISTEN 0      151                *:3306             *:*    users:(("mysqld",pid=1845,fd=24))
LISTEN 0      70                 *:33060            *:*    users:(("mysqld",pid=1845,fd=21))# 写入环境变量
echo "export MYSQL_HOME=/usr/local/mysql" >> /etc/profileecho "export PATH=\$PATH:\$MYSQL_HOME/bin" >> /etc/profilesource /etc/profile# 安装依赖关系
dnf -y install epel-release 
dnf -y makecache 
dnf -y install ncurses-compat-libs-6.2-8.20210508.1.el9.x86_64 # 查看初始密码
grep password /usr/local/mysql/mysql.err
#输出如下: 
2025-05-19T08:09:27.636039Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: y3DhTw;;ZRWW# 登录MySQL并修改密码
mysql -uroot -p
alter user root@localhost identified by '123';

1.3部署Redis(174.10)

# 进入目录解压软件包
cd /usr/local/src/
tar zxf redis-6.0.6.tar.gz 
mkdir /usr/local/redis/{conf,bin,data,log} -p# 安装
cd /usr/local/src/redis-6.0.6/src
make# 拷贝文件
cp /usr/local/src/redis-6.0.6/src/redis* /usr/local/redis/bin/
cp /usr/local/src/redis-6.0.6/redis.conf /usr/local/redis/conf/# 删除如下文件
rm /usr/local/redis/bin/*.c *.d *.o *.h -f
ll /usr/local/redis/bin
#输出如下: 
total 41768
-rwxr-xr-x 1 root root 4375864 May 19 16:46 redis-benchmark
-rwxr-xr-x 1 root root 8447592 May 19 16:46 redis-check-aof
-rwxr-xr-x 1 root root 8447592 May 19 16:46 redis-check-rdb
-rwxr-xr-x 1 root root 4583856 May 19 16:46 redis-cli
-rwxr-xr-x 1 root root 8447592 May 19 16:46 redis-sentinel
-rwxr-xr-x 1 root root 8447592 May 19 16:46 redis-server
-rwxr-xr-x 1 root root    3600 May 19 16:46 redis-trib.rb# 修改配置文件(vim ../conf/redis.conf)
sed -i 's|bind 127.0.0.1|bind 127.0.0.1 192.168.174.10|' ../conf/redis.confsed -i 's|daemonize no|daemonize yes|' ../conf/redis.confsed -i 's|pidfile /var/run/redis_6379.pid|pidfile /usr/local/redis/log/redis.pid|' ../conf/redis.confsed -i 's|logfile ""|logfile  "/usr/local/redis/log/redis.log"|' ../conf/redis.confsed -i 's|dir \./|dir /usr/local/redis/data|' ../conf/redis.conf# 添加环境变量
sed -i 's|export PATH=$PATH:$MYSQL_HOME/bin|export REDIS_HOME=/usr/local/redis|' /etc/profileecho "export PATH=\$PATH:\$MYSQL_HOME/bin:\$REDIS_HOME/bin" >>/etc/profilesource /etc/profile# 启动Redis服务
redis-server /usr/local/redis/conf/redis.conf # 查看端口是否启动
ss -antpl | grep redis
#输出如下: 
LISTEN 0      511         127.0.0.1:6379       0.0.0.0:*    users:(("redis-server",pid=6559,fd=6))
LISTEN 0      511    192.168.174.10:6379       0.0.0.0:*    users:(("redis-server",pid=6559,fd=7))# 初始状态检查
127.0.0.1:6379> keys *
#输出如下: 
(empty array)# 成功设置和获取值
127.0.0.1:6379> set test 123
OK
127.0.0.1:6379> get test
"123"# 关闭Redis服务
redis-cli SHUTDOWN# 写入Redis服务文件
cat >>/usr/lib/systemd/system/redis/service<<LW
[Unit]
Description=DB Cache server daemon
After=network.target[Service]
Type=focking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecStop=/usr/local/redis/bin/redis-cil shutdown
KillMode=process[Install]
WantedBy=multi-user.target
LW# 重载并启动
systemctl daemon-reload 
systemctl start redis.service# 查看端口启动
ss -antpl | grep redis
#输出如下: 
LISTEN 0      511         127.0.0.1:6379       0.0.0.0:*    users:(("redis-server",pid=6691,fd=6))
LISTEN 0      511    192.168.174.10:6379       0.0.0.0:*    users:(("redis-server",pid=6691,fd=7))# 设置开机自启
systemctl enable mysqld.service 
systemctl enable redis.service 

1.4部署jdk(174.6)

# 解压软件包
cd /usr/local/src/
tar zxf jdk-8u131-linux-x64.tar.gz 
mv jdk1.8.0_131/ /usr/local/java# 写入环境变量
echo "export JAVA_HOME=/usr/local/java" >> /etc/profileecho "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profilesource /etc/profile# 已安装以下 Java 相关组件
rpm -qa |grep java
#输出如下: 
javapackages-filesystem-6.0.0-7.el9_5.noarch
tzdata-java-2025a-1.el9.noarch
java-1.8.0-openjdk-headless-1.8.0.442.b06-2.el9.x86_64# 卸载现有 OpenJDK 8
dnf -y remove java-1.8.0-openjdk-headless-1:1.8.0.442.b06-2.el9.x86_64# 查看当前java版本
java -version
#输出如下: 
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

1.5安装Tomcat9(174.6)

# 解压并修改文件目录
cd /usr/local/src
tar zxf apache-tomcat-9.0.105.tar.gz 
mv apache-tomcat-9.0.105 /usr/local/tomcat# 修改环境变量
sed -i 's|export PATH=$JAVA_HOME/bin:$PATH|export CATALINA_HOME=/usr/local/tomcat|' /etc/profileecho "export PATH=\$JAVA_HOME/bin:\$CATALINA_HOME/bin:\$PATH" >> /etc/profilesource /etc/profile# 查看端口号
ss -antpl |grep java
#输出如下: 
LISTEN 0      100                     *:8080            *:*    users:(("java",pid=33886,fd=56))
LISTEN 0      1      [::ffff:127.0.0.1]:8005            *:*    users:(("java",pid=33886,fd=64))# 向本地主机的8080端口发送一个 HTTP 请求
curl localhost:8080# 停止Tomcat服务
catalina.sh stop# 写入Tomcat服务文件
cat >/usr/lib/systemd/system/tomcat.service<<LW
[Unit]
Description=JAVA server daemon
After=network.target[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/stutdown.sh
KillMode=process[Install]
WantedBy=multi-user.target
LW

1.6安装NGINX1.28.0(174.5)

# 安装NGINX相关依赖
dnf -y install pcre-devel zlib-devel openssl-devel# 解压文件并创建用户
cd /usr/local/src/
tar zxf nginx-1.28.0.tar.gz 
cd nginx-1.28.0/
useradd -r -s /bin/false -M nginx # 编译
./configure --prefix=/usr/local/nginx --group=nginx --user=nginx --with-http_stub_status_module # 安装编译依赖
make && make install# 启动NGINX服务
/usr/local/nginx/sbin/nginx # 查看端口状态
ss -antpl | grep nginx
#输出如下: 
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=41397,fd=6),("nginx",pid=41396,fd=6))# 关闭NGINX服务
/usr/local/nginx/sbin/nginx -s stop# 写入NGINX服务文件
cat >>/usr/lib/systemd/system/nginx.service<<LW
[Unit]
Description=Web server daemon
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecStop=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s stop
ExecReload=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload
KillMode=process[Install]
WantedBy=multi-user.target
LW# 重载并启动NGINX服务
systemctl daemon-reload 
systemctl start nginx# 查看NGINX端口状态
ss -antpl | grep nginx
#输出如下: 
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=41461,fd=6),("nginx",pid=41460,fd=6))

1.7部署jdk(174.100)

# 解压软件包
cd /usr/local/src/
tar zxf jdk-8u131-linux-x64.tar.gz 
mv jdk1.8.0_131/ /usr/local/java# 写入环境变量
echo "export JAVA_HOME=/usr/local/java" >> /etc/profileecho "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profilesource /etc/profile# 已安装以下 Java 相关组件
rpm -qa |grep java
#输出如下: 
javapackages-filesystem-6.0.0-7.el9_5.noarch
tzdata-java-2025a-1.el9.noarch
java-1.8.0-openjdk-headless-1.8.0.442.b06-2.el9.x86_64# 卸载现有 OpenJDK 8
dnf -y remove java-1.8.0-openjdk-headless-1:1.8.0.442.b06-2.el9.x86_64# 查看当前java版本
java -version
#输出如下: 
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

1.8安装maven3.8.8(174.100)

# 解压并修改文件目录
cd /usr/local/src
tar zxf apache-maven-3.8.8-bin.tar.gz 
mv apache-maven-3.8.8 /usr/local/maven
mkdir /usr/local/maven/repo# 修改Maven 的全局配置文件如下三处:
vim /usr/local/maven/conf/settings.xml 
# 修改1:56   <localRepository>/usr/local/maven/repo</localRepository># 修改2:
160         <mirror>
161                 <id>alimaven</id>
162                 <mirrorOf>central</mirrorOf>
163                 <name>aliyun maven</name>
164                 <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
165         </mirror>
166 </mirrors># 修改3:
254      <profile>
255       <id>java1.8</id>
256       <activation>
257         <activeByDefault>true</activeByDefault>
258       </activation>
259       <properties>
260         <maven.compiler.source>1.8</maven.compiler.source>
261         <maven.compiler.target>1.8</maven.compiler.target>
262         <maven.compiler.release>1.8</maven.compiler.release>
263       </properties>
264     </profile>
265   </profiles># 写入环境变量
sed -i 's|PATH=$JAVA_HOME/bin:$PATH|export MAVEN_HOME=/usr/local/maven|' /etc/profileecho "export PATH=\$JAVA_HOME/bin:\$MAVEN_HOME/bin:\$PATH" >> /etc/profilesource /etc/profile# 查看 Maven 版本信息
mvn -v
#输出如下: 
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /usr/local/maven
Java version: 1.8.0_131, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.14.0-503.26.1.el9_5.x86_64", arch: "amd64", family: "unix"# 显示当前构建环境的系统属性和环境变量
mvn help:system
#输出如下: (最后6行如下)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.629 s
[INFO] Finished at: 2025-05-21T10:11:59+08:00
[INFO] ------------------------------------------------------------------------

二、安装部署ruoyi(174.100后端)

2.1下载克隆ruoyi代码

# 清空当前目录克隆ruoyi
rm -rf *
git clone https://gitee.com/y_project/RuoYi-Vue.git
#输出如下: 
Cloning into 'RuoYi-Vue'...remote: Enumerating objects: 18555, done.
remote: Counting objects: 100% (408/408), done.
remote: Compressing objects: 100% (282/282), done.
remote: Total 18555 (delta 162), reused 171 (delta 64), pack-reused 18147 (from 1)
Receiving objects: 100% (18555/18555), 4.33 MiB | 2.40 MiB/s, done.
Resolving deltas: 100% (9417/9417), done.# 文件下载内容
[root@maven100 src]# ll
total 4
drwxr-xr-x. 14 root root 4096 May 21 10:16 RuoYi-Vue

2.2修改ruolyi配置文件

# 修改ruoyi-admin/pom.xml文件
sed -i 's|<packaging>jar</packaging>|<packaging>war</packaging>|' /usr/local/src/RuoYi-Vue/ruoyi-admin/pom.xml# 修改ruoyi-common/pom.xml文件
vim /usr/local/src/RuoYi-Vue/ruoyi-common/pom.xml 
#修改如下: 27         <dependency>28             <groupId>org.springframework</groupId>29             <artifactId>spring-web</artifactId>30                         <exclusions>31                  <exclusion>32                      <groupId>org.springframework.boot</groupId>33                      <artifactId>spring-boot-starter-tomcat</artifactId>34                  </exclusion>35              </exclusions>36         </dependency># 修改Spring Boot 项目的主配置文件
mkdir -p /usr/local/ruoyi/uploadPathsed -i 's|  profile: D:/ruoyi/uploadPath|  profile: /usr/local/ruoyi/uploadPath|' /usr/local/src/RuoYi-Vue/ruoyi-admin/src/main/resources/application.ymlsed -i 's|    host: localhost|    host: 192.168.174.10|' /usr/local/src/RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml 

2.3拷贝数据到MySQL

# 拷贝数据库数据库初始化脚本到174.10
scp quartz.sql ry_20250417.sql 192.168.174.10:/tmp
#输出如下: 
The authenticity of host '192.168.174.10 (192.168.174.10)' can't be established.
ED25519 key fingerprint is SHA256:wzPz75oXZg5dfaVhp6GhWON3AUwFDM9nmQbhE4T3jIk.
This host key is known by the following other names/addresses:~/.ssh/known_hosts:2: 192.168.174.6
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.174.10' (ED25519) to the list of known hosts.
root@192.168.174.10's password: 
quartz.sql                                          100%   12KB  15.7MB/s   00:00    
ry_20250417.sql                                     100%   56KB  17.7MB/s   00:00 

2.4修改Druid 数据库连接池配置

# 修改application-druid.yml指定数据源
vim /usr/local/src/RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml
#修改如下: 
9                 url: jdbc:mysql://192.168.174.10:3306/ry-vue?useUnicode=true&chara    cterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GM    T%2B8 10                 username: ruoyi11                 password: 123

2.5进入db10MySQL创建ruoyi用户

# 进入到db10创建ruoyi用户
create user ruoyi@'192.168.174.%' identified by '123';
create database `ry-vue` charset utf8mb4;
grant all on *.* to ruoyi@'192.168.174.%';

2.6编译打包

# 清理项目并编译打包
cd /usr/local/src/RuoYi-Vue/
mvn clean package
#输出如下:

在这里插入图片描述

2.7拷贝文件到Tomcat

# 拷贝文件到Tomcat
scp /usr/local/src/RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.war 192.168.174.6:/usr/local/tomcat/webapps/
#输出如下: 
The authenticity of host '192.168.174.6 (192.168.174.6)' can't be established.
ED25519 key fingerprint is SHA256:wzPz75oXZg5dfaVhp6GhWON3AUwFDM9nmQbhE4T3jIk.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.174.6' (ED25519) to the list of known hosts.
root@192.168.174.6's password: 
ruoyi-admin.war                                     100%   80MB  85.7MB/s   00:00  

2.8导入MySQL数据库中

# 导入库(db10174.10)
mysql -uruoyi -p123 -h192.168.174.10 ry-vue </tmp/quartz.sql
#输出如下: 
mysql: [Warning] Using a password on the command line interface can be insecure.mysql -uruoyi -p123 -h192.168.174.10 ry-vue </tmp/ry_20250417.sql 
#输出如下: 
mysql: [Warning] Using a password on the command line interface can be insecure.

2.9进入Tomcat(174.6)

# 重动Tomcat
catalina.sh  stop
catalina.sh  start# 服务器访问查看
http://192.168.174.6:8080/ruoyi-admin/

在这里插入图片描述

三、安装部署ruoyi(174.100后 端)

3.1安装node-v22.15.1

# 进入目录压缩并修改文件位置
cd /usr/local/src
tar xf node-v22.15.1-linux-x64.tar.xz 
mv node-v22.15.1-linux-x64 /usr/local/nodejs
cd /usr/local/nodejs/bin/# 写入环境变量
sed -i 's|export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH|export NODEJS_HOME=/usr/local/nodejs|' /etc/profileecho "export PATH=\$JAVA_HOME/bin:\$MAVEN_HOME/bin:\$NODEJS_HOME/bin:\$PATH" >> /etc/profilesource /etc/profile# 验证安装
node -v    # 输出 v22.15.1
npm -v     # 输出 10.9.2# 查看当前 npm 使用的包注册中心地址
npm config get registry
#输出如下: 
https://registry.npmjs.org/# npm设置为国内源(淘宝)
npm config set registry https://registry.npmmirror.comnpm config get registry
#输出如下: 
https://registry.npmmirror.com

3.2安装npm依赖并打包

# 安装npm依赖
cd /usr/local/src/RuoYi-Vue/ruoyi-ui
npm install
#输出如下: (最后4行)
added 1471 packages in 1m150 packages are looking for fundingrun `npm fund` for details# npm进行打包
npm run build:prod
#输出如下: dist/static/css/chunk-698a5ba1.f2078e2    0.37 KiB         0.26 KiB8.cssImages and other types of assets omitted.DONE  Build complete. The dist directory is ready to be deployed.INFO  Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html

3.3传送打好的包

# 进入NGINX创建ruoyi目录(174.5)
mkdir /ruoyi/ruoyi-ui -p# 回到maven传送包(174.10)
scp -r ./dist/ 192.168.174.5:/ruoyi/ruoyi-ui# 进入NGINX查看包传送是否成功()
ll /ruoyi/ruoyi-ui/dist
#输出如下: 
total 36
-rw-r--r-- 1 root root  5663 May 19 23:40 favicon.ico
drwxr-xr-x 2 root root    39 May 19 23:40 html
-rw-r--r-- 1 root root 12440 May 19 23:40 index.html
-rw-r--r-- 1 root root  4101 May 19 23:40 index.html.gz
-rw-r--r-- 1 root root    26 May 19 23:40 robots.txt
drwxr-xr-x 6 root root    51 May 19 23:40 static
drwxr-xr-x 3 root root    25 May 19 23:40 styles

3.4进入NGINX配置文件修改(174.5)

vim /usr/local/nginx/conf/nginx.conf
#修改如下: 43         location / {44             root   /ruoyi/ruoyi-ui/dist/;45             index  index.html index.htm;46         }47         location /prod-api/ {48                         proxy_set_header Host $http_host;49                         proxy_set_header X-Real-IP $remote_addr;50                         proxy_set_header  REMOTE-HOST $remote_addr;51                         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_fo    r;                  52                         proxy_pass http://192.168.174.6:8080/ruoyi-admin/;53         }# 测试语法是否正确
/usr/local/nginx/sbin/nginx -t
#输出如下: 
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful# 重启NGINX服务
systemctl restart nginx# 浏览器服务网页
http://192.168.174.5/
# 看到图片得知是从后端生成的

在这里插入图片描述

3.5查看Redis热数据(174.10)

[root@db10 tmp]# redis-cli
127.0.0.1:6379> keys *
#输出如下: 1) "login_tokens:e6e90216-e1d8-4793-bbb5-7b7621146419"2) "sys_config:sys.account.registerUser"3) "sys_config:sys.user.initPassword"4) "sys_dict:sys_oper_type"5) "sys_config:sys.index.skinName"6) "sys_dict:sys_notice_type"7) "sys_dict:sys_yes_no"8) "sys_config:sys.account.captchaEnabled"9) "sys_dict:sys_user_sex"
10) "sys_dict:sys_job_group"
11) "sys_dict:sys_normal_disable"
12) "sys_dict:sys_common_status"
13) "sys_dict:sys_notice_status"
14) "sys_dict:sys_job_status"
15) "sys_config:sys.login.blackIPList"
16) "test"
17) "sys_config:sys.index.sideTheme"
18) "sys_dict:sys_show_hide"
127.0.0.1:6379> 

相关文章:

25_05_19Linux实战篇、第一章_01若依前后端部署之路(后端)

Linux_实战篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;若依前后端动静分离(后端 ) 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.20 适用环境: Rocky9.5 文档说明 本文围绕 Linux 实战展开&#x…...

Python慕课学习记录

中国大学MOOC&#xff08;慕课&#xff09;观看记录&#xff1a; Python123课后相应的练习、考试记录...

2025年渗透测试面试题总结-快手[实习]安全工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 快手[实习]安全工程师 一面问题分析与详细回答 1. 自我介绍 4. 项目问题与解决 7. 防止SQL注入&…...

【iOS(swift)笔记-10】利用类的继承来实现不同地区语言的显示

XCode项目原生开发有自带的可区分语言的功能体系&#xff0c;建议采用原生开发&#xff0c;此处利用类的继承来实现不同地区语言的显示是为了方便&#xff0c;而且在unity游戏开发中采用此法也挺灵活适用。 // 定义一个语言控制类 class LanguageController { // 根据系统切换…...

C语言中的弱符号 __attribute__((weak)) 的使用方法

以下是一个脱离 CallStack.h 的极简 C 语言示例&#xff0c;通过 弱符号覆盖 和 运行时检查 两个场景&#xff0c;展示 __attribute__((weak)) 的核心用法&#xff1a; 一、代码实现 1. 弱符号定义与覆盖&#xff08;weak_demo.c&#xff09; // weak_demo.c #include <st…...

禁止window安全中心乱删文件

将文件/文件夹添加到 Defender 排除列表 如果你确定文件安全&#xff0c;可以将其添加到 排除列表&#xff0c;防止 Defender 误删&#xff1a; Windows 安全中心 → “病毒和威胁防护” → “管理设置”。 下拉找到 “排除项” → “添加或删除排除项”。 点击 “ 添加排除…...

【JavaScript异步编程终极指南】从回调地狱到Async/Await的实战突围

目录 &#x1f30d; 前言&#xff1a;技术背景与价值&#x1f494; 当前技术痛点&#x1f6e0; 解决方案概述&#x1f465; 目标读者说明&#x1f50d; 一、技术原理剖析&#x1f9e0; 核心作用讲解&#x1f9e9; 关键技术模块说明⚖️ 技术选型对比 &#x1f4bb; 二、实战演示…...

【算法专题十五】BFS解决最短路问题

文章目录 1.最短路问题简介&#xff08;边权为1的最短路问题&#xff09;2.迷宫中离入口最近的出口2.1 题目2.2 思路2.3 代码 3.最小基因变化3.1 题目3.2 思路3.3 代码 4.单词接龙4.1 题目4.2 思路4.3 代码 5.为高尔夫比赛砍树5.1 题目5.2 思路5.3 代码 1.最短路问题简介&#…...

upload-labs通关笔记-第16关 文件上传之exif_imagetype绕过(图片马)

目录 一、exif_imagetype 二、开启exif模块 1、phpstudy设置勾选php_exif模块 2、php.ini文件配置开启php_exif模块 三、源码分析 四、图片马 1、图片马概念 2、图片马制作 五、渗透实战 1、上传图片马 2、利用文件包含访问图片马 &#xff08;1&#xff09;jpg …...

力扣-两数之和

1.题目描述 2.题目链接 LCR 006. 两数之和 II - 输入有序数组 - 力扣&#xff08;LeetCode&#xff09; 3.题目代码 class Solution {public int[] twoSum(int[] numbers, int target) {int[]retnew int[2];int left0,rightnumbers.length-1;while(left<right){if(numbe…...

什么是大数据?

大数据的详细定义 大数据是来自计算机、移动设备和机器传感器的海量数据&#xff08;数万亿字节&#xff09;。企业利用这些数据推动决策、改进流程和政策&#xff0c;并打造以客户为中心的产品、服务和体验。大数据之所以被定义为 “大”&#xff0c;不仅在于其体量&#xff…...

25_05_19Linux实战篇、第一章_02若依前后端部署之路(前端)

Linux_实战篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;若依前后端动静分离(前端) 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.21 适用环境: Rocky9.5 文档说明 环境准备 硬件要求 服务器&…...

SuperVINS:应对挑战性成像条件的实时视觉-惯性SLAM框架【全流程配置与测试!!!】【2025最新版!!!!】

一、项目背景及意义 SuperVINS是一个改进的视觉-惯性SLAM&#xff08;同时定位与地图构建&#xff09;框架&#xff0c;旨在解决在挑战性成像条件下的定位和地图构建问题。该项目基于经典的VINS-Fusion框架&#xff0c;但通过引入深度学习方法进行了显著改进。 视觉-惯性导航系…...

【后端】【UV】【Django】 `uv` 管理的项目中搭建一个 Django 项目

&#x1f680; 一步步搭建 Django 项目&#xff08;适用于 uv pyproject.toml 项目结构&#xff09; &#x1f9f1; 第 1 步&#xff1a;初始化一个 uv 项目&#xff08;如果还没建好&#xff09; uv init django-project # 创建项目&#xff0c;类似npm create vue⚙️ 第 …...

sqlsugar查看表结构并导出word文档

前提 SqlSugar 5.1.4 MiniWord 0.9.2 使用 using MiniSoftware; using SqlSugar;namespace ConsoleApp5 {internal class Program{/// <summary>/// 导出数据库表结构和字段信息/// https://www.donet5.com/Home/Doc?typeId1203/// </summary>/// <param n…...

【机器学习】支持向量机(SVM)

目录 一、支持向量机基本概念 1.1 定义 1.2 支持向量&#xff1a;距离超平面最近的样本点&#xff0c;决定了超平面的位置。 二、线性支持向量机 2.1 硬间隔支持向量机 2.2 软间隔支持向量机 三、非线性支持向量机 3.1 核函数 3.2 常用核函数 3.2.1 线性核&#xff1a…...

[Java实战]Spring Boot整合MinIO:分布式文件存储与管理实战(三十)

[Java实战]Spring Boot整合MinIO&#xff1a;分布式文件存储与管理实战&#xff08;三十&#xff09; 一、MinIO简介与核心原理 MinIO 是一款高性能、开源的分布式对象存储系统&#xff0c;兼容 Amazon S3 API&#xff0c;适用于存储图片、视频、日志等非结构化数据。其核心特…...

SpringBoot微服务编写Dockerfile流程及问题汇总

背景 跟 Docker 磕了两天&#xff0c;将一个包含 N 个微服务的应用部署包改造&#xff0c;使其能够生成 Docker 镜像&#xff0c;并在 Docker 容器中运行。几年前玩过 Docker&#xff0c;隐约记得几个命令「Dockerfile 命令&#xff1a;黑卡饮料、山楂果费、哦SUV&#xff0c;…...

PostgreSQL使用

一、PostgreSQL语法 PostgreSQL表、模式、库三者之间的关系 库 -> 模式 -> 表、视图、函数等等对象。 在postgresql的交互式终端psql中&#xff0c;“\”开头的命令称为元命令&#xff08;类似mysql的show语句&#xff09;&#xff0c;用于快速管理数据库。 常见元命令&…...

现代化SQLite的构建之旅——解析开源项目Limbo

现代化SQLite的构建之旅——解析开源项目Limbo 在当今飞速发展的技术世界中&#xff0c;轻量级且功能强大的数据库已成为开发者的得力助手。当我们谈论轻量级数据库时&#xff0c;SQLite无疑是一个举足轻重的名字。然而&#xff0c;随着技术的进步&#xff0c;我们对数据库的需…...

MySQL 主从复制搭建全流程:基于 Docker 与 Harbor 仓库

一、引言 在数据库管理中&#xff0c;MySQL 主从复制是一种非常重要的技术&#xff0c;它可以实现数据的备份、读写分离&#xff0c;减轻主数据库的压力。本文将详细介绍如何使用 Docker 和 Harbor 仓库来搭建 MySQL 主从复制环境&#xff0c;适合刚接触数据库和 Docker 的新手…...

网页表格转换为markdown

网页表格到Markdown&#xff1a;一键转换&#xff0c;复制即用&#xff01; 在日常工作中&#xff0c;我们经常需要从网页上复制表格数据&#xff0c;并将其转换成Markdown格式&#xff0c;以便在文档、邮件或论坛中使用。然而&#xff0c;手动转换不仅耗时&#xff0c;还容易…...

MySQL字符串拼接方法全解析

目录 常用字符串处理函数 方法一&#xff1a;CONCAT基础拼接 方法二&#xff1a;CONCAT_WS带分隔符拼接 方法三&#xff1a;GROUP_CONCAT分组拼接 方法四&#xff1a;算术运算符拼接&#xff08;仅限数字&#xff09; 常用字符串处理函数 方法一&#xff1a;CONCAT基础拼接…...

零基础教程:用 Docker + pgloader 将 MySQL 数据库迁移到 PostgreSQL

在日常开发中&#xff0c;可能会遇到从 MySQL 迁移到 PostgreSQL 的需求。你也许是&#xff1a; 正在准备从传统架构转向云原生&#xff1b;想使用 PostgreSQL 更强的事务与 JSON 支持&#xff1b;想统一团队数据库技术栈&#xff1b;纯粹为了尝试学习不同的数据库系统。 别担…...

影刀Fun叉鸟-2048

文章目录 仅为自动化演示&#xff0c;实际2048判定逻辑需要更加严谨 参考代码 # 使用提醒: # 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能 # 2. package包提供访问当前应用数据的功能&#xff0c;如获取元素、访问全局变量、获取资源文件等功能 # 3. 当此模块作…...

uni-app(2):页面

1 页面简介 uni-app项目中&#xff0c;一个页面就是一个符合Vue SFC规范的 vue 文件。 在 uni-app js 引擎版中&#xff0c;后缀名是.vue文件或.nvue文件。 这些页面均全平台支持&#xff0c;差异在于当 uni-app 发行到App平台时&#xff0c;.vue文件会使用webview进行渲染&…...

【spring】spring学习系列之十一:spring的事件监听

系列文章目录 文章目录 系列文章目录前言一、使用二、整体流程三、EventListenerMethodProcessor和DefaultEventListenerFactory1.EventListenerMethodProcessor2.DefaultEventListenerFactory3.ApplicationListenerDetector4.initApplicationEventMulticaster5.registerListen…...

代码随想录打卡|Day45 图论(孤岛的总面积 、沉没孤岛、水流问题、建造最大岛屿)

图论part03 孤岛的总面积 代码随想录链接 题目链接 视频讲解链接 思路&#xff1a;既然某个网格在边界上的岛屿不是孤岛&#xff0c;那么就把非 孤岛的所有岛屿变成海洋&#xff0c;最后再次统计还剩余的岛屿占据的网格总数即可。 dfs&#xff1a; import java.util.Scanner…...

AI人工智能——Matplotlib绘制各种数据可视化图表的基础方法

一、绘制图像基础 import matplotlib.pyplot as plt# 1、创建画布 plt.figure(figsize(20, 8), dpi100) # 2、绘制图像 x [1, 2, 3, 4, 5, 6] y [3, 5, 4, 3, 6, 1] plt.plot(x, y) # 3、显示图像 plt.show() 二、图像保存 import matplotlib.pyplot as plt# 1、创建画布 p…...

亚马逊AWS跑不动了?

5月2日&#xff0c;亚马逊公布了2025年第一季度的财报。财报数据显示&#xff0c;云计算业务增速放缓以及第二季度的指引低于预期。事实上&#xff0c;这并不是亚马逊AWS第一次增速放缓。 亚马逊AWS作为全球第一大云计算服务公司&#xff0c;这些年跟微软云、谷歌云等其他云计…...

PyTorch中cdist和sum函数使用详解

torch.cdist 是 PyTorch 中用于计算**两个张量之间的成对距离&#xff08;pairwise distance&#xff09;**的函数&#xff0c;常用于点云处理、图神经网络、相似性度量等场景。 基本语法 torch.cdist(x1, x2, p2.0)参数说明&#xff1a; 参数说明x1一个形状为 [B, M, D] 或 …...

PyTorch的基本操作

前言 为了方便大家学习&#xff0c;我整理了PyTorch全套学习资料&#xff0c;包含配套教程讲义和源码 除此之外还有100G人工智能学习资料 包含数学与Python编程基础、深度学习机器学习入门到实战&#xff0c;计算机视觉自然语言处理大模型资料合集&#xff0c;不仅有配套教程…...

分类算法 Kmeans、KNN、Meanshift 实战

任务 1、采用 Kmeans 算法实现 2D 数据自动聚类&#xff0c;预测 V180,V260 数据类别&#xff1b; 2、计算预测准确率&#xff0c;完成结果矫正 3、采用 KNN、Meanshift 算法&#xff0c;重复步骤 1-2 代码工具&#xff1a;jupyter notebook 视频资料 无监督学习&#xff…...

aws平台s3存储桶夸域问题处理

当我们收到开发反馈s3存在跨域问题 解决步骤&#xff1a; 配置 S3 存储桶的 CORS 设置&#xff1a; 登录到 AWS 管理控制台。转到 S3 服务。选择你存储文件的 存储桶。点击 权限 标签页。在 跨域资源共享&#xff08;CORS&#xff09;配置 部分&#xff0c;点击 编辑。 登陆…...

在Windows上安装Pygame 2.1.3:解决常见问题

在Windows系统上安装Pygame 2.1.3时&#xff0c;可能会遇到各种问题&#xff0c;例如网络问题或依赖安装失败。本文将详细介绍如何在Windows上成功安装Pygame 2.1.3&#xff0c;并解决常见的安装问题。 1. 前提条件 在开始安装之前&#xff0c;确保你的系统中已经安装了Pytho…...

linux中安装jdk(Java环境),tomcat

安装时候选择 tomcat 软件版本要与程序开发使用的版本一致。jdk 版本要进行与 tomcat 保持一致。 1. 系统环境说明 [root@bogon ~]# getenforce Disabled [root@bogon ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon …...

DeepSeek源码解构:从MoE架构到MLA的工程化实现

文章目录 **一、代码结构全景&#xff1a;从模型定义到分布式训练****二、MoE架构&#xff1a;动态路由与稀疏激活的工程化实践****1. 专家路由机制&#xff08;带负载均衡&#xff09;****数学原理&#xff1a;负载均衡损失推导** **三、MLA注意力机制&#xff1a;低秩压缩与解…...

国产linux系统(银河麒麟,统信uos)使用 PageOffice实现PDF文件加盖印章和签字功能

PageOffice 国产版 &#xff1a;支持信创系统&#xff0c;支持银河麒麟V10和统信UOS&#xff0c;支持X86&#xff08;intel、兆芯、海光等&#xff09;、ARM&#xff08;飞腾、鲲鹏、麒麟等&#xff09;、龙芯&#xff08;Mips、LoogArch&#xff09;芯片架构。 PageOffice支持…...

第四十三节:人脸检测与识别-人脸识别基础 (Eigenfaces, Fisherfaces, LBPH)

引言 人脸识别技术是计算机视觉领域最具应用价值的方向之一,广泛应用于安防监控、身份认证、人机交互等领域。本文将通过OpenCV框架,深入解析人脸检测与识别的核心算法(Eigenfaces/Fisherfaces/LBPH),并提供完整的代码实现。 第一部分:人脸检测基础 1.1 人脸检测原理 …...

面向恶劣条件的道路交通目标检测----大创自用(当然你也可以在里面学到很多东西)

全部内容梳理 目标检测的两个任务&#xff1a; 预测标签 边界框 语义分割 实力分割 一个是类别 一个是实例级别 分类任务把每个图像当作一张图片看待 所有解决方法是先生成候选区域 再进行分类 置信度&#xff1a; 包括对类别和边界框预测的自信程度 输出分类和IOU分数的…...

物联网相关词汇

物联网&#xff08;英文&#xff1a;Internet of Things&#xff0c;缩写&#xff1a;IoT&#xff09; specs 英[speks] 美[speks] 规格说明 topology 英[təpɒlədʒɪ] 拓扑结构 vertical 美 [ˈvɜrtɪk(ə)l] 英 [ˈvɜː(r)tɪk(ə)l] n.垂直线&#xff1b;垂直位…...

【net6】一文跑通前后端以及数据库,简单的天气系统管理(保姆入门)

一、前言 使用Vue3为前端&#xff0c;.net6为后端&#xff0c;连接postgreSQL数据库&#xff0c;连通前后端与数据库&#xff0c;实现最基础的天气管理系统的增删改查。 二、内容 目录 一、前言 二、内容 2.1 后端部分 2.1.1 在VS里面使用此模板创建项目 2.1.2 安装下列…...

宝塔安装的 MySQL 无法连接的情况及解决方案

宝塔安装的 MySQL 无法连接的情况及解决方案 宝塔面板是一款流行的服务器管理工具&#xff0c;其中集成的 MySQL 数据库有时会出现连接问题。本文详细介绍两种最常见的 MySQL 连接错误&#xff1a;“1130 - Host is not allowed to connect” 和 “1045 - Access denied”&…...

【iOS】分类、扩展、关联对象

分类、扩展、关联对象 前言分类扩展扩展和分类的区别关联对象key的几种用法流程 总结 前言 最近的学习中笔者发现自己对于分类、扩展相关知识并不是很熟悉&#xff0c;刚好看源码类的加载过程中发现有类扩展与关联对象详解。本篇我们来探索一下这部分相关知识&#xff0c;首先…...

计算机网络学习(一)—— OSI vs TCP/IP网络模型

一、OSI模型&#xff08;开放系统互联参考模型&#xff09; OSI&#xff08;Open Systems Interconnection&#xff09;模型由ISO&#xff08;国际标准化组织&#xff09;在1984年提出&#xff0c;用于标准化网络通信&#xff0c;它将网络通信分为七个层次&#xff1a; 层级名…...

【MySQL成神之路】MySQL查询用法总结

MySQL查询语句全面指南 一、基础查询语句 MySQL中select的基本语法形式 select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属性名[asc|desc]] [limit <offset>,row count] 说明&#xff1a; where子句&…...

攻防世界——Web题 fakebook

首先测试网站的功能&#xff0c;当我注册一个账号时&#xff0c;发现这里的链接&#xff1a; 点进去看到URL&#xff1a; 感觉no这个地方可以尝试一下sql注入 推测应该是数字型注入 发现果然可以进行sql注入&#xff0c; 最终测得列数应该是4列&#xff0c;但当我尝试sql注入…...

【Java微服务组件】异步通信P2—Kafka与消息

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 目录 引言Kafka与消息生产者发送消息到Kafka批处理发送设计消息的幂等信息确保消息送达acks配置…...

AI数字人一体机和智慧屏方案:开启智能交互新纪元

在当今这个信息化飞速发展的时代&#xff0c;AI技术正以前所未有的速度改变着我们的生活方式和工作模式。特别是在人机交互领域&#xff0c;AI数字人的出现不仅极大地丰富了用户体验&#xff0c;也为各行各业提供了前所未有的创新解决方案。本文将重点介绍由广州深声科技有限公…...

10-码蹄集600题基础python篇

题目如上&#xff1a; 这题就是ASCII的转换&#xff0c;直接使用ord就可以 下面是代码&#xff1a; def main():#code here# a1,a2input().split(",")# print(f"The ASCII code of {a1} is {ord(a1)}")# print(f"The ASCII code of {a2} is {ord(a2…...