保姆级教程:在CentOS 7上从零部署RuoYi-Vue前后端分离项目(含Tomcat10+Nginx配置)

张开发
2026/4/19 15:12:35 15 分钟阅读

分享文章

保姆级教程:在CentOS 7上从零部署RuoYi-Vue前后端分离项目(含Tomcat10+Nginx配置)
CentOS 7实战RuoYi-Vue全栈部署指南在当今快速迭代的软件开发领域能够独立完成一个全栈项目的部署已成为开发者的必备技能。RuoYi-Vue作为国内广泛使用的开源管理系统框架其前后端分离架构代表了现代Web开发的主流趋势。本文将带你从零开始在一台全新的CentOS 7服务器上完成整个项目的部署过程涵盖从环境搭建到服务优化的全链路实践。1. 基础环境准备部署RuoYi-Vue需要先搭建稳定的运行环境这包括Java开发环境、数据库服务和Web服务器组件。我们将使用目前主流的技术组合OpenJDK 11、MySQL 8.0、Redis 6.x、Nginx 1.20和Tomcat 10。1.1 系统初始化配置首先登录你的CentOS 7服务器执行以下基础优化# 更新系统并安装常用工具 sudo yum update -y sudo yum install -y wget curl vim git unzip设置时区同步确保时间准确sudo timedatectl set-timezone Asia/Shanghai sudo yum install -y ntp sudo systemctl start ntpd sudo systemctl enable ntpd提示生产环境建议禁用root直接登录创建专用运维账户并配置sudo权限1.2 Java环境安装RuoYi-Vue需要JDK 1.8环境我们选择OpenJDK 11sudo yum install -y java-11-openjdk-devel验证安装java -version # 应输出类似openjdk version 11.0.12 2021-07-20 LTS配置JAVA_HOME环境变量echo export JAVA_HOME$(dirname $(dirname $(readlink -f $(which java)))) ~/.bashrc source ~/.bashrc2. 数据库服务部署2.1 MySQL 8安装配置添加MySQL官方YUM源sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum install -y mysql-community-server启动服务并设置开机自启sudo systemctl start mysqld sudo systemctl enable mysqld获取初始密码并修改temp_password$(sudo grep temporary password /var/log/mysqld.log | awk {print $NF}) mysql_secure_installation -p$temp_password创建专用数据库用户CREATE USER ruoyi% IDENTIFIED BY StrongPassword123!; CREATE DATABASE ry-vue DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON ry-vue.* TO ruoyi%; FLUSH PRIVILEGES;2.2 Redis安装优化安装Redis 6.xsudo yum install -y epel-release sudo yum install -y redis修改关键配置sudo sed -i s/^bind 127.0.0.1/bind 0.0.0.0/ /etc/redis.conf sudo sed -i s/^protected-mode yes/protected-mode no/ /etc/redis.conf启动服务sudo systemctl start redis sudo systemctl enable redis验证连接redis-cli ping # 应返回 PONG3. Web服务器部署3.1 Nginx安装配置添加Nginx官方源sudo tee /etc/yum.repos.d/nginx.repo -EOF [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key EOF sudo yum install -y nginx配置系统服务sudo systemctl start nginx sudo systemctl enable nginx3.2 Tomcat 10部署下载并解压Tomcat 10wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.23/bin/apache-tomcat-10.0.23.tar.gz tar -xzf apache-tomcat-10.0.23.tar.gz -C /opt sudo ln -s /opt/apache-tomcat-10.0.23 /opt/tomcat创建专用系统用户sudo useradd -r -m -d /opt/tomcat -s /bin/false tomcat sudo chown -R tomcat:tomcat /opt/apache-tomcat-10.0.23配置服务文件/etc/systemd/system/tomcat.service[Unit] DescriptionApache Tomcat 10 Afternetwork.target [Service] Typeforking Usertomcat Grouptomcat EnvironmentCATALINA_PID/opt/tomcat/temp/tomcat.pid EnvironmentCATALINA_HOME/opt/tomcat EnvironmentCATALINA_BASE/opt/tomcat ExecStart/opt/tomcat/bin/startup.sh ExecStop/opt/tomcat/bin/shutdown.sh Restarton-failure [Install] WantedBymulti-user.target启动服务sudo systemctl daemon-reload sudo systemctl start tomcat sudo systemctl enable tomcat4. RuoYi-Vue项目部署4.1 获取项目代码克隆项目仓库git clone https://gitee.com/y_project/RuoYi-Vue.git cd RuoYi-Vue4.2 后端配置调整修改数据库连接配置ruoyi-admin/src/main/resources/application-druid.yml# 数据源配置 spring: datasource: druid: master: url: jdbc:mysql://localhost:3306/ry-vue?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: ruoyi password: StrongPassword123!调整Redis配置ruoyi-admin/src/main/resources/application.yml# redis配置 redis: host: localhost port: 6379 password: database: 0修改文件存储路径# 文件路径配置 profile: /app/ruoyi/uploadPath4.3 后端打包部署执行Maven打包mvn clean package -Dmaven.test.skiptrue部署WAR包到Tomcatsudo cp ruoyi-admin/target/ruoyi-admin.war /opt/tomcat/webapps/ROOT.war sudo chown tomcat:tomcat /opt/tomcat/webapps/ROOT.war4.4 前端构建部署安装Node.js环境curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash - sudo yum install -y nodejs构建前端项目cd ruoyi-ui npm install --registryhttps://registry.npm.taobao.org npm run build:prod部署静态文件sudo mkdir -p /app/ruoyi-ui sudo cp -r dist/* /app/ruoyi-ui/ sudo chown -R nginx:nginx /app/ruoyi-ui5. Nginx反向代理配置编辑Nginx配置文件/etc/nginx/conf.d/ruoyi.confserver { listen 80; server_name your-domain.com; # 前端静态资源 location / { root /app/ruoyi-ui; try_files $uri $uri/ /index.html; index index.html; } # 后端API代理 location /prod-api/ { proxy_pass http://localhost:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60s; proxy_read_timeout 600s; proxy_send_timeout 600s; } # 静态资源缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control public, no-transform; } }测试并重载配置sudo nginx -t sudo systemctl reload nginx6. 系统初始化与优化6.1 数据库初始化导入SQL脚本mysql -u ruoyi -p ry-vue sql/ry_20210908.sql mysql -u ruoyi -p ry-vue sql/quartz.sql6.2 服务启动验证启动所有服务sudo systemctl restart redis mysqld nginx tomcat检查服务状态sudo systemctl status redis mysqld nginx tomcat6.3 防火墙配置开放必要端口sudo firewall-cmd --permanent --add-port80/tcp sudo firewall-cmd --permanent --add-port8080/tcp sudo firewall-cmd --reload7. 常见问题排查7.1 端口冲突处理检查端口占用情况sudo netstat -tulnp | grep -E 80|80807.2 文件权限问题修正文件权限sudo chown -R tomcat:tomcat /opt/tomcat/webapps sudo chown -R nginx:nginx /app/ruoyi-ui7.3 内存不足优化调整JVM参数# 编辑Tomcat启动脚本 sudo vim /opt/tomcat/bin/setenv.sh添加内容export JAVA_OPTS-server -Xms512m -Xmx1024m -XX:MetaspaceSize128m -XX:MaxMetaspaceSize512m在实际部署过程中我发现Tomcat 10对Servlet 5.0规范的支持可能导致一些老项目兼容性问题。如果遇到类加载错误可以尝试降级到Tomcat 9或检查项目的依赖配置。另外Nginx的worker进程数应根据服务器CPU核心数进行调整一般设置为CPU核心数的1-2倍效果最佳。

更多文章