若依前后端分离项目部署阿里云centos7服务器(超详细,含401无法认证报错解决)
- 服务器前期配置
-
- 安装jdk8
-
- 步骤 1:更新系统包
- 步骤 2:检查 JDK 8 是否在仓库中可用
- 步骤 3:安装 JDK 8
- 步骤 4:验证安装
- 安装mysql5.7
-
- 1. 检查系统环境
- 2. 配置 MySQL 官方 Yum 源
- 3. 安装 MySQL
- 4. 配置 MySQL
-
- 4.1 获取初始 root 密码
- 4.2 登录 MySQL 并修改 root 密码
- 5. 验证安装
- 6. 放开3306端口
- 安装redis
-
- 1. 检查系统环境
- 2. 安装 Redis
- 3. 配置 Redis
- 5. 设置 Redis 为后台运行
- 安装并配置nginx
-
- 1. 安装 Nginx
-
- 步骤 1:更新系统软件包
- 步骤 2:安装 EPEL 源
- 步骤 3:安装 Nginx
- 步骤 4:启动 Nginx
- 步骤 5:设置开机自启动
- 步骤 6:检查 Nginx 服务状态
- 步骤 7:验证 Nginx 是否工作
- ****2. 配置 Nginx
-
- 2.1 配置 Nginx
- 2.2 测试 Nginx 配置
- 2.3 重启 Nginx
- 3. 配置防火墙
- 项目打包
-
- 1.前端打包
-
- windows上传文件夹
- 2.后端配置修改
- 3.后端打包
- 部署
-
- 1.前端部署
- 2.后端部署
-
- 将 java -jar ruoyi-admin.jar 运行的 Java 程序设置为 Linux 系统的服务
-
- 1. 创建 Systemd 服务文件
- 2. 重新加载 Systemd 配置
- 3. 启动服务
- 4. 设置开机自启动
- 5. 验证服务状态
- 6. 日志查看
- 7. 管理服务
- 可能出现的问题
-
- 问题1.访问若依登录页面时循环显示登录过期,请求超时
- 问题2:认证失败,code:401
- 问题3:NoSuchMethodError
服务器前期配置
为了省事我全部选择yum安装
安装jdk8
步骤 1:更新系统包
首先,确保你的系统包是最新的:
sudo yum update –y
步骤 2:检查 JDK 8 是否在仓库中可用
运行以下命令检查是否有 JDK 8 可用:
sudo yum search java–1.8
你会看到类似以下的结果:
java–1.8.0–openjdk.x86_64 : OpenJDK Runtime Environment 8
java–1.8.0–openjdk–devel.x86_64 : OpenJDK Development Environment 8
java-1.8.0-openjdk:仅包含运行时环境(JRE),适用于运行 Java 程序。 java-1.8.0-openjdk-devel:包含开发工具(如 javac 编译器),适用于开发和运行 Java 应用程序。
步骤 3:安装 JDK 8
安装包含开发工具的 java-1.8.0-openjdk-devel:
sudo yum install –y java–1.8.0–openjdk–devel
如果只需要运行时环境(JRE),可以运行:
sudo yum install –y java–1.8.0–openjdk
步骤 4:验证安装
安装完成后,检查 JDK 版本以确认安装成功:
java –version
输出类似以下内容,表示安装成功:
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312–b07)
OpenJDK 64–Bit Server VM (build 25.312–b07, mixed mode)
安装mysql5.7
1. 检查系统环境
更新系统软件包:
sudo yum update –y
检查是否已经安装了 MySQL 或 MariaDB:
rpm –qa | grep mysql
rpm –qa | grep mariadb
如果已有 MariaDB 或 MySQL,请先卸载它们:
sudo yum remove mariadb–libs mysql* –y
2. 配置 MySQL 官方 Yum 源
MySQL 的官方 Yum 源提供了 MySQL 5.5、5.6 和 5.7 等版本。
下载并添加 MySQL Yum Repository:
wget https://dev.mysql.com/get/mysql57–community–release–el7–11.noarch.rpm
安装 Yum Repository:
sudo rpm –ivh mysql57–community–release–el7–11.noarch.rpm
检查已安装的 Yum 源:
yum repolist enabled | grep mysql
输出类似以下内容:
mysql–connectors–community/x86_64 MySQL Connectors Community
mysql–tools–community/x86_64 MySQL Tools Community
mysql57–community/x86_64 MySQL 5.7 Community Server
禁用 MySQL 5.7 源并启用 MySQL 5.6 或 MySQL 5.5(根据需求选择):
启用 MySQL 5.6:
sudo yum–config–manager —disable mysql57–community
sudo yum–config–manager —enable mysql56–community
启用 MySQL 5.5:
sudo yum–config–manager —disable mysql57–community
sudo yum–config–manager —enable mysql55–community
验证当前启用的 MySQL 源:
yum repolist enabled | grep mysql
3. 安装 MySQL
安装 MySQL:
sudo yum install mysql–community–server –y
启动 MySQL 服务:
sudo systemctl start mysqld
设置 MySQL 开机自启动:
sudo systemctl enable mysqld
验证 MySQL 是否运行成功:
systemctl status mysqld
输出类似以下内容表示 MySQL 已成功运行:
● mysqld.service – MySQL Community Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since ...
4. 配置 MySQL
4.1 获取初始 root 密码
安装 MySQL 后,默认会生成一个随机的 root 密码,存储在日志文件中。通过以下命令查看:
sudo grep 'temporary password' /var/log/mysqld.log
输出示例:
2025–01–08T07:51:00.123456Z 1 [Note] A temporary password is generated for root@localhost: p@ssword123
这里 p@ssword123 就是初始密码。
4.2 登录 MySQL 并修改 root 密码
登录 MySQL:
mysql –u root –p
输入刚刚获取的初始密码。
修改 root 密码(MySQL 5.7 及以上要求密码至少包含大小写字母、数字和特殊字符):
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
如果 MySQL 提示密码策略限制太严格,可以放宽密码规则:
SET GLOBAL validate_password_policy=LOW;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
5. 验证安装
检查 MySQL 版本:
mysql —version
输出类似以下内容:
mysql Ver 14.14 Distrib 5.6.51, for Linux (x86_64) using EditLine wrapper
登录 MySQL 并运行简单命令:
mysql –u root –p
登录成功后,查看数据库:
SHOW DATABASES;
6. 放开3306端口
云服务器防火墙设置
安装redis
1. 检查系统环境
更新系统软件包 首先,确保系统的所有软件包都是最新的:
sudo yum update –y
检查是否已有 Redis 如果系统上已安装 Redis,先检查 Redis 的版本:
redis–server —version
如果未安装,继续以下步骤。
2. 安装 Redis
使用默认 Yum 源安装(适合快速安装) 通过 CentOS 默认的 EPEL 源安装 Redis:
sudo yum install epel–release –y
sudo yum install redis –y
安装完成后,检查 Redis 版本:
redis–server —version
验证安装 安装完成后,检查 Redis 版本:
redis–server —version
3. 配置 Redis
修改 Redis 配置文件 Redis 的配置文件通常位于 /etc/redis.conf 或 /etc/redis/redis.conf。你可以根据需要进行修改:
sudo vi /etc/redis.conf
常见的修改内容:
允许外部访问: 找到 bind 127.0.0.1,将其改为 bind 0.0.0.0,允许所有 IP 地址访问。 设置 Redis 密码: 找到 # requirepass foobared,取消注释并设置密码,例如:
requirepass your_password
启动 Redis
如果使用 Yum 安装:
sudo systemctl start redis
sudo systemctl enable redis
验证 Redis 是否启动成功 使用 redis-cli 测试 Redis:
redis–cli
输入以下命令:
127.0.0.1:6379> ping
如果返回 PONG,说明 Redis 已成功运行。
5. 设置 Redis 为后台运行
修改 Redis 配置文件:
sudo vi /etc/redis.conf
找到以下行,将 no 改为 yes:
daemonize yes
重启 Redis:
sudo systemctl restart redis
安装并配置nginx
1. 安装 Nginx
步骤 1:更新系统软件包
首先,确保系统的所有软件包都是最新的:
sudo yum update –y
步骤 2:安装 EPEL 源
Nginx 软件包通常在 EPEL 源中提供,安装 EPEL 源:
sudo yum install epel–release –y
步骤 3:安装 Nginx
通过 Yum 安装 Nginx:
sudo yum install nginx –y
步骤 4:启动 Nginx
安装完成后,启动 Nginx 服务:
sudo systemctl start nginx
步骤 5:设置开机自启动
sudo systemctl enable nginx
步骤 6:检查 Nginx 服务状态
确认 Nginx 是否运行成功:
sudo systemctl status nginx
输出类似以下内容表示 Nginx 正在运行:
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since ...
步骤 7:验证 Nginx 是否工作
在浏览器中访问你的服务器 IP 地址,确保能看到默认的 Nginx 欢迎页面。
http://<your–server–ip>
****2. 配置 Nginx
Nginx 的配置文件位于 /etc/nginx/ 目录下:
主配置文件:/etc/nginx/nginx.conf 站点配置文件:/etc/nginx/conf.d/*.conf 默认站点配置文件:/etc/nginx/conf.d/default.conf
2.1 配置 Nginx
我直接改主配置文件 /etc/nginx/nginx.conf。
sudo vi /etc/nginx/nginx.conf
insert键输入
server {
listen 80;
server_name localhost;
# 静态文件配置
location / {
root /project/program/ui/device–dist; # 前端静态文件目录
index index.html index.htm; # 默认首页文件
try_files $uri $uri/ /index.html; # 单页应用支持
}
# 后端 API 代理配置
location /prod–api/ {
proxy_pass http://127.0.0.1:8080/; # Spring Boot 服务
proxy_set_header Host $http_host;
proxy_set_header X–Real–IP $remote_addr;
proxy_set_header REMOTE–HOST $remote_addr;
proxy_set_header X–Forwarded–For $proxy_add_x_forwarded_for;
# 超时时间配置
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
gzip on;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
esc键 :wq保存并退出。
2.2 测试 Nginx 配置
在重启 Nginx 之前,测试配置文件是否正确:
sudo nginx –t
输出如下表示配置正确:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
2.3 重启 Nginx
配置文件修改完成后,重新加载 Nginx:
sudo systemctl reload nginx
3. 配置防火墙
如果防火墙开启,需要允许 HTTP 和 HTTPS 流量通过。
开放 HTTP(80端口)和 HTTPS(443端口)依然是通过云服务器开放端口
项目打包
1.前端打包
找到ruoyi-ui 下bin文件夹下的build.bat点击运行 运行完成后ruoyi-ui下生成会生成dist文件夹,将其移动至nginx中配置的静态文件目录
windows上传文件夹
把dist打包成dist.zip 云服务器安装unzip
sudo yum install unzip –y
# 验证是否成功安装:
unzip –v
上传zip后解压命令
unzip xxx.zip –d 目标的文件夹名(不存在会创建)
2.后端配置修改
application.yml: applicaiton-druid.yml
3.后端打包
先点击IDEA右侧Maven的ruoyi-master(host)文件夹下的Lifecycle文件夹中的clean,再点击ruoyi-admin下的package即可 BUILD SUCCESS即成功
ruoyi-admin下target文件下的ruoyi-admin.jar即为打好的包
部署
1.前端部署
打好的dist包放到与nginx.conf中相同的指定位置即可
2.后端部署
随便放一个非root文件位置 运行命令
java –jar ruoyi–admin.jar
运行成功如下图
将 java -jar ruoyi-admin.jar 运行的 Java 程序设置为 Linux 系统的服务
可以通过 Systemd 服务管理工具实现,这样可以方便地启动、停止和管理服务,并在服务器重启后自动启动。
1. 创建 Systemd 服务文件
使用 vi 或其他编辑器创建一个服务文件:
sudo vi /etc/systemd/system/ruoyi–admin.service
添加以下内容到服务文件中:
[Unit]
Description=RuoYi Admin Service
After=network.target
[Service]
User=root # 或者指定运行服务的用户,建议不要用 root,推荐普通用户
Group=root
WorkingDirectory=/path/to/your/app # 你的 ruoyi–admin.jar 文件所在的目录
ExecStart=/usr/bin/java –jar /path/to/your/app/ruoyi–admin.jar
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=ruoyi–admin
[Install]
WantedBy=multi–user.target
配置项说明: User 和 Group:指定运行该服务的用户和组。为了安全,推荐创建一个普通用户(例如 ruoyi)来运行服务,而不是使用 root。 WorkingDirectory:指定应用运行的工作目录。 ExecStart:启动命令,这里运行 Java 程序。 Restart:如果服务崩溃,自动重启服务。 SyslogIdentifier:服务的标识符,用于系统日志。
2. 重新加载 Systemd 配置
每次创建或修改服务文件后,都需要让 Systemd 加载新的配置:
sudo systemctl daemon–reload
3. 启动服务
使用以下命令启动服务:在这里插入代码片
sudo systemctl start ruoyi–admin
4. 设置开机自启动
让服务在系统重启时自动启动:
sudo systemctl enable ruoyi–admin
5. 验证服务状态
可以使用以下命令检查服务是否正在运行:
sudo systemctl status ruoyi–admin
输出示例:
● ruoyi–admin.service – RuoYi Admin Service
Loaded: loaded (/etc/systemd/system/ruoyi–admin.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2025–01–08 10:00:00 CST; 1min 30s ago
Main PID: 12345 (java)
CGroup: /system.slice/ruoyi–admin.service
└─12345 /usr/bin/java –jar /path/to/your/app/ruoyi–admin.jar
如果显示 Active: active (running),说明服务正在运行。
6. 日志查看
服务的输出会被记录到系统日志中,可以通过以下命令查看日志:
sudo journalctl –u ruoyi–admin
7. 管理服务
以下是常用的服务管理命令:
启动服务:
sudo systemctl start ruoyi–admin
停止服务:
sudo systemctl stop ruoyi–admin
重启服务:
sudo systemctl restart ruoyi–admin
查看服务状态:
sudo systemctl status ruoyi-admin
禁用开机启动:
sudo systemctl disable ruoyi-admin
可能出现的问题
问题1.访问若依登录页面时循环显示登录过期,请求超时
首先查看nginx有无报错
tail -f /var/log/nginx/error.log
报错类似如下
2025/01/07 13:46:55 [crit] 2176#2176: *140 stat() "/root/program/ui/device-dist/index.html" failed (13: Permission denied), client: 34.140.58.13, server: ip地址, request: "GET / HTTP/1.1", host: "ip地址"
2025/01/07 13:46:55 [error] 2176#2176: *140 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 34.140.58.13, server: ip地址, request: "GET / HTTP/1.1", host: "ip地址"
解决方法:

sudo chmod -R 777 前端放置路径(/project/ui/dist)
sudo chmod -R 777 后端放置路径
注意,如果项目位置放置在/root下则需直接换到其他目录下。因为/root 是超级用户(root 用户)的主目录,可能会有nginx无法访问的可能。
# 文件移动命令:
sudo mv 你的文件路径 目标路径
# 放开所有权限
sudo chmod -R 777 文件路径
问题2:认证失败,code:401
描述:本地开发时测试的好好的,部署到云服务器上显示不了验证码图片/无法登录。查看开发者工具返回报错{“msg”:“请求访问:/prod-api/logout,认证失败,无法访问系统资源”,“code”:401}
解决:注意nginx.conf配置文件中proxy_pass在IP地址后加/
问题3:NoSuchMethodError
问题描述:本地运行的很好,打包部署发现出问题{“msg”:“Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: com.ruoyi.device.service.IDeviceLocationService.selectLocationByDeviceId(Ljava/lang/Integer;)Lcom/ruoyi/device/domain/DeviceLocation;”,“code”:500} 缓存问题,导致打包没有添加新的方法,JVM识别不到 第一步,清理idea缓存
第二步,打包依次执行以下步骤 (尤其是maven install) 看看compile报不报错,不报错的话package打包正常部署
评论前必须登录!
注册