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

centos服务器部署流程(前后端部署)

MES系统部署(服务器部署的流程相同)

由于没给我详细教程,凭我什么坑都踩的性格,浅浅记录详细部署过程,后面忘了也可以直接照抄

部署文件

image
虚拟机:Centos 7 64位

安装nginx

流程1(失败)

  1. 放入文件
    创建一个MES文件夹,将三个文件直接拖入到虚拟机Mes文件夹中,dist文件需要压缩后才能放入,不然会报错(由于后面MES文件夹打不开了,我重新使用winSCP重新上传了文件)
    image
  2. 配置nginx源
    命令: sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    image
  3. 下载nginx源
    命令: sudo yum install -y nginx
    image

失败原因: CentOS 7 已于 2024年6月30日停止维护,官方镜像源已经下线,导致 YUM 无法连接到 mirrorlist.centos.org

流程2(成功)

  1. 放入文件
    创建一个MES文件夹,将三个文件直接拖入到虚拟机Mes文件夹中,dist文件需要压缩后才能放入,不然会报错
    image
  2. 配置阿里云 CentOS 7 源
    命令: curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    image
  3. 清理缓存并重新生成
    命令: yum clean all
    命令: yum makecache
    image
  4. 安装 Nginx
    命令: sudo yum install -y nginx
    image
  5. 设置自启动
    命令: sudo systemctl start nginx.service
    命令: sudo systemctl enable nginx.service
    image
  6. 测试是否启动成功
    命令: curl localhost
    image

安装redis

流程1(成功)

  1. 配置EPEL 源
    命令: curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    image
  2. 清理缓存
    命令: yum clean all && yum makecache
    image
  3. 安装redis
    命令: sudo yum install -y redis
    image
  4. 设置自启动
    命令: sudo systemctl start redis
    命令: sudo systemctl enable redis
  5. 测试是否安装成功
    命令: redis-cli
    image

安装mysql8.0

流程1(成功)

  1. 配置官方源
    命令: sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
    image
  2. 安装mysql8.0
    命令: sudo yum install -y mysql-community-server
    image
  3. 设置自启动
    命令: sudo systemctl start mysqld
    命令: sudo systemctl enable mysqld
  4. 查看临时密码
    命令: sudo grep 'temporary password' /var/log/mysqld.log
    image
  5. 进入mysql
    命令: mysql -u root -p(密码为临时密码)
    image
    密码错误原因: 我忽视了密码最后一个>,使用了hGNH%ojky4f作为密码
    命令: mysql -u root -p"hGNH%ojky4f>"
    image
  6. 修改密码
    命令: ALTER USER 'root'@'localhost' IDENTIFIED BY '设置一个高强度密码';
  7. 关闭密码强度验证
    命令: SET GLOBAL validate_password.policy = 0;
    image
  8. 设置低强度密码
    命令: ALTER USER 'root'@'localhost' IDENTIFIED BY '设置一个低强度密码';

数据库文件导入

流程1(成功)

  1. 进入mysql
    命令: mysql -u root -p
    image
  2. 创建数据库
    命令: CREATE DATABASE IF NOT EXISTS mes_system CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    image
  3. 查看数据库
    命令: SHOW DATABASES;
    image
  4. 使用mes_system数据库
    命令: use mes_system;
    image
  5. 导入sql脚本
    sql脚本绝对路径: /root/Desktop/MES/mes_system2.sql
    命令: source /root/Desktop/MES/mes_system2.sql
    注意不能出现error
  6. 查看mes_system的表
    命令: SHOW TABLES;
    image
    导入数据成功
  7. 退出
    命令: exit

后端文件部署

流程1(失败)

若依jar包绝对路径:/root/Desktop/MES/ruoyi-admin.jar
命令: java -jar /root/Desktop/MES/ruoyi-admin.jar &
image

出现连接失败,由于这是别人给的文件,若依配置的数据库与密码均不同导致失败并且mysql8.0默认不允许公钥检索

流程2(成功)

  1. 结束运行
    快捷键: ctrl + C
  2. 进入MES文件夹
    命令: cd /root/Desktop/MES/
    image
  3. 创建 application.yml
    命令: vi application.yml
  4. 写入正确的数据库配置
    按下i进入编辑模式
数据库配置代码
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.cj.jdbc.Driverdruid:master:url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=trueusername: 用户名password: 密码slave:enabled: falseurl:username:password:initialSize: 5minIdle: 10maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000maxEvictableIdleTimeMillis: 900000validationQuery: SELECT 1testWhileIdle: truetestOnBorrow: falsetestOnReturn: falsewebStatFilter:enabled: truestatViewServlet:enabled: trueallow:url-pattern: /druid/*login-username: ruoyilogin-password: 123456filter:stat:enabled: truelog-slow-sql: trueslow-sql-millis: 1000merge-sql: truewall:config:multi-statement-allow: true

编写完成
按下esc退出编辑模式
输入 :wq 保存退出

  1. 查看文件是否保存
    命令: ls
    image
  2. 结束原来的jar包进程
    命令: pkill -f ruoyi-admin.jar
  3. 运行若依jar包
    命令: java -jar /root/Desktop/MES/ruoyi-admin.jar &
    image
    若依启动成功,重新开一个命令窗口

前端文件部署

流程1(成功)

  1. 将前端文件拷贝到nginx文件夹下
    前端文件绝对路径: /root/Desktop/MES/dist
    nginx目录绝对路径:/usr/share/nginx/
    命令: cp -r 源目录 目标目录
  2. 修改nginx配置
    nginx配置绝对路径: /etc/nginx/conf.d/default.conf
    命令: vim /etc/nginx/conf.d/default.conf
  3. 注释以下内容
    image
    image
  4. 添加前端配置
    image
前端配置代码
location / {root /usr/share/nginx/dist;try_files $uri $uri/ /index.html;index index.html index.htm;
}
前端代码解析
location /:匹配所有以 / 开头的 URI(即所有请求),但优先级低于更具体的匹配(如 /prod-api/)。root /usr/share/nginx/dist;:指定静态文件的根目录为 /usr/share/nginx/dist。假设前端项目构建后的文件(如 index.html、JS、CSS 等)都放在这个目录下。try_files $uri $uri/ /index.html;:Nginx 会按照顺序尝试查找文件:直接访问 $uri(例如请求 /about,则尝试查找 /usr/share/nginx/dist/about 文件);
如果文件不存在,则尝试将 $uri 作为目录,查找该目录下的默认索引文件(由 index 指令指定);
如果都失败,则内部重定向到 /index.html(返回前端入口文件)。
  1. 添加后端API代理配置
    image
后端API配置代码
location /prod-api/ {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_pass http://localhost:8080/;
}
后端API代理解析
location /prod-api/:匹配所有以 /prod-api/ 开头的 URI(例如 /prod-api/user/list)。这个前缀通常在前端代码中配置为 API 请求的统一前缀。proxy_set_header 指令:在将请求转发给后端之前,修改或添加请求头,以便后端获取客户端的真实信息:Host $http_host:传递原始请求的 Host 头。X-Real-IP $remote_addr:传递客户端的真实 IP 地址(Nginx 与客户端直接连接时)。REMOTE-HOST $remote_addr:与上面类似,有些后端可能使用该头。X-Forwarded-For $proxy_add_x_forwarded_for:追加客户端的 IP 到已有的 X-Forwarded-For 链中,用于记录经过的代理。proxy_pass http://localhost:8080/;:将匹配到的请求反向代理到本地的 8080 端口(即后端 Spring Boot 应用的默认端口)。注意末尾的 / 会替换掉匹配的 /prod-api/ 前缀:例如请求 /prod-api/user/list 会被转发到 http://localhost:8080/user/list如果 proxy_pass 末尾没有 /,则会保留完整路径(如 http://localhost:8080/prod-api/user/list)
  1. 测试配置文件修改是否有语法错误
    命令: nginx -t
    image
  2. 重新加载nginx
    命令: nginx -s reload

外部访问

流程1

  1. 防火墙永久开启80端口通信
    命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
    image
命令解析
firewall-cmd:是 CentOS 7 中管理 firewalld 防火墙的命令行工具,中间没有空格。--zone=public:指定要操作的区域(zone)为 public。等号 = 前后不需要空格,也可以写成 --zone public(空格代替等号)。--add-port=80/tcp:添加一条规则,允许 TCP 协议的 80 端口通过防火墙。--permanent:表示将规则永久保存(重启后依然生效)。如果不加此选项,规则仅临时生效(重启或重新加载防火墙后丢失)。
  1. 刷新防火墙
    命令: sudo firewall-cmd --reload
    image

  2. 永久关闭关闭SELinux安全检查
    命令: vim /etc/selinux/config
    将 SELINUX=enforcing 改为 SELINUX=disabled
    image

  3. 重启服务器
    命令: sudo reboot

  4. 验证SELinux安全检查是否被关闭
    命令: getenforce
    image

  5. 启动若依服务
    命令: java -jar /root/Desktop/MES/ruoyi-admin.jar &
    出现报错,mysql拒绝连接,jBDC的ip为192.168.108.107
    但我实际所需IP为192.168.108.130,所需我所写的配置没有被读取

原因为当前工作目录不是MES,无法读取到MES目录下的application.yml,需要切换到MES目录,才能正常运行若依

image

后续使用

  1. nginx会自动启动
  2. redis会自动启动
  3. mysql会自动启动
  4. SELinux安全检测已永久关闭
  5. 防火墙80端口已永久开启
  6. 若依服务需要启动,并且保留原本jar包配置并增加指定的配置文件信息
    命令: java -jar /root/Desktop/MES/ruoyi-admin.jar --spring.config.additional-location=/root/Desktop/MES/application.yml

虚拟机部署完成

MES 3D大屏信息修改

  1. ip修改
    image
    需要将所有的localhost修改为自己虚拟机的IP地址

启动

打开cmd,切换到3d-large-screen目录下
命令: npm run dev
image
运行成功,使用的npm版本为npm 16

关闭防火墙:sudo systemctl stop firewalld

访问

前台访问地址:http://localhost:5173/
后台访问地址:http://192.168.108.130/

http://www.jsqmd.com/news/497443/

相关文章:

  • RLS历史回顾:Rust IDE工具链的演进之路
  • Open UI5 源代码解析之617:SelectionPanel.js
  • Open UI5 源代码解析之630:PersistenceProvider.js
  • 微型Lisp开源项目指南
  • PDF4QT命令行工具详解:自动化处理PDF文档的实用技巧
  • Fellow Oak DICOM网络通信实战:C-ECHO/C-STORE服务开发与调试全指南
  • The Well与Dedalus集成教程:如何用物理模拟代码生成高质量数据集
  • Open UI5 源代码解析之629:Popup.js
  • 系统颜色选择器:macOS 的色彩控制强化版
  • JRTPLIB项目推荐
  • Oracle 基础
  • Open UI5 源代码解析之628:QueryPanel.js
  • B站自动投稿功能深度解析:gh_mirrors/st/web-server如何实现无缝内容发布
  • C语言入门(占位符)
  • Visual Studio 的C++性能分析工具
  • t-rec-rs:如何用Rust打造超快速终端录制工具,5分钟生成高质量GIF动画
  • Crypter项目常见问题解决方案
  • Open UI5 源代码解析之627:SelectionController.js
  • 基于微信小程序实现家庭记账本管理系统【项目源码+论文说明】计算机毕业设计
  • 10个关键步骤:开源项目启动终极清单
  • Nord tmux主题入门:打造北极蓝光影的终端工作空间
  • 解锁Woboq CodeBrowser隐藏功能:宏展开、继承关系可视化与代码度量
  • Gradle构建优化实战:从核心原理到Android性能极限调优
  • JS知识小笔记
  • 【枚举】P6786「SWTR-6」GCDs LCMs|普及+
  • 为什么选择gh_mirrors/ex/explorer?揭秘BlockCypher APIs驱动的区块链探索工具优势
  • gowebapp完全指南:从零开始构建Go语言MVC Web应用
  • “滚动轴承故障诊断MATLAB程序:快速谱峭度与谱峭度+包络谱分析”
  • 软考 系统架构设计师系列知识点之面向服务架构设计理论与实践(1)
  • EPro-PnP v2重大更新:性能提升20%的关键改进解析