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

服务器前期配置

为了省事我全部选择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:
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 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地址"

解决方法:

  1. 查看云服务器8080端口是否放开
    2.
  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打包正常部署

### 部署若依前后端分离版于Docker环境 #### 安装 Docker 和 Docker Compose 为了在 Docker 中部署若依前后端分离版,需先确保已安装 Docker 及 Docker Compose。对于 CentOS 用户而言,可以通过如下命令配置阿里云镜像源并完成 Docker 的安装: ```bash yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ``` 更新 yum 软件包索引至最新状态: ```bash yum makecache fast ``` 随后执行以下指令来安装 Docker 引擎及其 CLI 工具、containerd.io 以及 docker-compose 插件[^2]: ```bash yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ``` 启动 Docker 并验证其版本信息以确认安装成功。 ```bash systemctl start docker && docker version ``` #### 准备 若依 前后端分离项目的 Dockerfile 文件 针对前端部分,通常会有一个 `Dockerfile` 来构建 Nginx 映像文件用于服务静态资源;而后端则可能基于 Java 或其他语言框架编写,同样需要对应的映像定义文件。假设已有合适的 `Dockerfile` 文件,则可以直接跳过此步操作。 #### 编写 docker-compose.yml 文件 创建一个名为 `docker-compose.yml` 的组合编排文件,该文件描述了多个容器之间的关系和服务依赖情况。下面是一个简单的例子,其中包含了 MySQL 数据库服务器、Redis 缓存实例和两个应用节点(分别代表前、后台应用程序)[^1]。 ```yaml version: '3' services: mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: rootpassword volumes: - ./data/mysql:/var/lib/mysql redis: image: redis:alpine command: ["redis-server", "--appendonly", "yes"] volumes: - ./data/redis:/data backend: build: ./backend depends_on: - mysql - redis ports: - "8080:8080" frontend: build: ./frontend depends_on: - backend ports: - "80:80" volumes: data: ``` 上述 YAML 片段中指定了四个主要的服务组件:MySQL、Redis、Backend (Java 应用程序) 和 Frontend (Nginx Web Server),并通过 `depends_on` 字段明确了它们之间存在的先后顺序约束条件。 #### 构建与运行 当所有的准备工作完成后,就可以通过一条简单的命令让整个架构跑起来啦! ```bash docker-compose up -d --build ``` 这条命令将会按照指定的方式自动拉取所需的官方基础镜像,并依据本地提供的上下文路径去定制化生成最终的应用映像,最后依次启动各个关联的服务进程。 #### 更新 NGINX 配置而不重启容器 有时仅希望刷新反向代理规则而不想完全停止再重新开启 web server 进程的话,那么可以尝试发送信号给正在运行中的 nginx 实例来进行平滑重载配置的操作[^3]。 ```bash [root@VM-8-7-centos html]# docker exec -it aed99f4c5a55 nginx -s reload ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值