云计算百科
云计算领域专业知识百科平台

若依前后端分离项目部署阿里云centos7服务器(超详细)

若依前后端分离项目部署阿里云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 java1.8

你会看到类似以下的结果:

java1.8.0openjdk.x86_64 : OpenJDK Runtime Environment 8
java1.8.0openjdkdevel.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 java1.8.0openjdkdevel

如果只需要运行时环境(JRE),可以运行:

sudo yum install y java1.8.0openjdk

步骤 4:验证安装

安装完成后,检查 JDK 版本以确认安装成功:

java version

输出类似以下内容,表示安装成功:

openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312b07)
OpenJDK 64Bit Server VM (build 25.312b07, mixed mode)

安装mysql5.7

1. 检查系统环境

更新系统软件包:

sudo yum update y

检查是否已经安装了 MySQL 或 MariaDB:

rpm qa | grep mysql
rpm qa | grep mariadb

如果已有 MariaDB 或 MySQL,请先卸载它们:

sudo yum remove mariadblibs mysql* y

2. 配置 MySQL 官方 Yum 源

MySQL 的官方 Yum 源提供了 MySQL 5.5、5.6 和 5.7 等版本。

下载并添加 MySQL Yum Repository:

wget https://dev.mysql.com/get/mysql57communityreleaseel711.noarch.rpm

安装 Yum Repository:

sudo rpm ivh mysql57communityreleaseel711.noarch.rpm

检查已安装的 Yum 源:

yum repolist enabled | grep mysql

输出类似以下内容:

mysqlconnectorscommunity/x86_64 MySQL Connectors Community
mysqltoolscommunity/x86_64 MySQL Tools Community
mysql57community/x86_64 MySQL 5.7 Community Server

禁用 MySQL 5.7 源并启用 MySQL 5.6 或 MySQL 5.5(根据需求选择):

启用 MySQL 5.6:

sudo yumconfigmanager disable mysql57community
sudo yumconfigmanager enable mysql56community

启用 MySQL 5.5:

sudo yumconfigmanager disable mysql57community
sudo yumconfigmanager enable mysql55community

验证当前启用的 MySQL 源:

yum repolist enabled | grep mysql

3. 安装 MySQL

安装 MySQL:

sudo yum install mysqlcommunityserver 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

输出示例:

20250108T07: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 的版本:

redisserver version

如果未安装,继续以下步骤。

2. 安装 Redis

使用默认 Yum 源安装(适合快速安装) 通过 CentOS 默认的 EPEL 源安装 Redis:

sudo yum install epelrelease y
sudo yum install redis y

安装完成后,检查 Redis 版本:

redisserver version

验证安装 安装完成后,检查 Redis 版本:

redisserver 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:

rediscli

输入以下命令:

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 epelrelease 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://<yourserverip>

****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/devicedist; # 前端静态文件目录
index index.html index.htm; # 默认首页文件
try_files $uri $uri/ /index.html; # 单页应用支持
}

# 后端 API 代理配置
location /prodapi/ {
proxy_pass http://127.0.0.1:8080/; # Spring Boot 服务
proxy_set_header Host $http_host;
proxy_set_header XRealIP $remote_addr;
proxy_set_header REMOTEHOST $remote_addr;
proxy_set_header XForwardedFor $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: n 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 ruoyiadmin.jar

运行成功如下图 请添加图片描述

将 java -jar ruoyi-admin.jar 运行的 Java 程序设置为 Linux 系统的服务

可以通过 Systemd 服务管理工具实现,这样可以方便地启动、停止和管理服务,并在服务器重启后自动启动。

1. 创建 Systemd 服务文件

使用 vi 或其他编辑器创建一个服务文件:

sudo vi /etc/systemd/system/ruoyiadmin.service

添加以下内容到服务文件中:

[Unit]
Description=RuoYi Admin Service
After=network.target

[Service]
User=root # 或者指定运行服务的用户,建议不要用 root,推荐普通用户
Group=root
WorkingDirectory=/path/to/your/app # 你的 ruoyiadmin.jar 文件所在的目录
ExecStart=/usr/bin/java jar /path/to/your/app/ruoyiadmin.jar
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=ruoyiadmin

[Install]
WantedBy=multiuser.target

配置项说明: User 和 Group:指定运行该服务的用户和组。为了安全,推荐创建一个普通用户(例如 ruoyi)来运行服务,而不是使用 root。 WorkingDirectory:指定应用运行的工作目录。 ExecStart:启动命令,这里运行 Java 程序。 Restart:如果服务崩溃,自动重启服务。 SyslogIdentifier:服务的标识符,用于系统日志。

2. 重新加载 Systemd 配置

每次创建或修改服务文件后,都需要让 Systemd 加载新的配置:

sudo systemctl daemonreload

3. 启动服务

使用以下命令启动服务:在这里插入代码片

sudo systemctl start ruoyiadmin

4. 设置开机自启动

让服务在系统重启时自动启动:

sudo systemctl enable ruoyiadmin

5. 验证服务状态

可以使用以下命令检查服务是否正在运行:

sudo systemctl status ruoyiadmin

输出示例:

● ruoyiadmin.service RuoYi Admin Service
Loaded: loaded (/etc/systemd/system/ruoyiadmin.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 20250108 10:00:00 CST; 1min 30s ago
Main PID: 12345 (java)
CGroup: /system.slice/ruoyiadmin.service
└─12345 /usr/bin/java jar /path/to/your/app/ruoyiadmin.jar

如果显示 Active: active (running),说明服务正在运行。

6. 日志查看

服务的输出会被记录到系统日志中,可以通过以下命令查看日志:

sudo journalctl u ruoyiadmin

7. 管理服务

以下是常用的服务管理命令:

启动服务:
sudo systemctl start ruoyiadmin

停止服务:
sudo systemctl stop ruoyiadmin

重启服务:
sudo systemctl restart ruoyiadmin

查看服务状态:
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地址"

解决方法:

  • 查看云服务器8080端口是否放开 2.
  • 给项目部署位置授权
  • 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打包正常部署

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 若依前后端分离项目部署阿里云centos7服务器(超详细)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!