JSH-ERP 传统部署 + Nginx 反向代理 + 统一日志收集完整实施文档

发布时间:2026/10/10 4:48:01

JSH-ERP 传统部署 + Nginx 反向代理 + 统一日志收集完整实施文档 一、项目说明与考核标准1. 服务器环境部署节点10.8.0.10ERP 业务主节点MySQL/Redis/JDK/Maven/Node/Nginx/ERP 后端 / Filebeat 全部部署于此 日志存储检索节点10.8.0.11部署 ElasticsearchKibana统一归集全量日志 辅助节点10.8.0.12、10.8.0.13预留扩展本次仅部署单机 ERP 系统CentOS 7.9 x86_64 资源2 核 8G磁盘 50G2. 技术栈清单后端SpringBoot 2.0.0、JDK8、Maven3.8.6数据库MySQL8.0.46缓存Redis6.2.14源码编译前端Vue2、Node16.20.2、npmWeb 反向代理Nginx1.26.1日志方案Filebeat (采集) Elasticsearch (存储) Kibana (检索可视化)二、第一部分基础系统环境初始化10.8.0.10 执行2.1 安装基础工具bashyum install -y wget git vim net-tools lrzsz tree unzip2.2 统一时区Asia / 上海bashtimedatectl set-timezone Asia/Shanghai timedatectl2.3 防火墙放行 80 端口仅对外端口bashsystemctl enable --now firewalld firewall-cmd --permanent --add-port80/tcp # 日志节点开放ES/Kibana端口10.8.0.11执行 firewall-cmd --permanent --add-port9200/tcp firewall-cmd --permanent --add-port5601/tcp firewall-cmd --reload firewall-cmd --list-all2.4 关闭 SELinux实验环境bashsetenforce 0 sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config getenforce2.5 创建业务所需固定目录bash# ERP总目录 mkdir -p /usr/local/jsh-erp /usr/local/jsh-erp/web /usr/local/jsh-erp/logs # 应用上传/导出/临时目录 mkdir -p /opt/tmp/tomcat /opt/jshERP/upload /opt/jshERP/export # Redis、Maven、Node安装目录 mkdir -p /usr/local/redis /usr/local/maven /usr/local/node # 日志备份、数据库备份目录 mkdir -p /backup/mysql /usr/local/logs_all三、第二部分ERP 系统部署3.1 部署 MySQL 8.03.1.1 安装 MySQL 官方 YUM 源 修复 2023 公钥bashcd /usr/local/src wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm rpm -ivh mysql80-community-release-el7-7.noarch.rpm # 导入新版GPG密钥 wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023 https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023 sed -i s|gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022|\nfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2023| /etc/yum.repos.d/mysql-community.repo # 安装MySQL服务端 yum install -y mysql-community-server systemctl enable --now mysqld mysql --version优先做标红部分3.1.2 修改 Root 密码分步兼容策略bash# 查看临时密码 grep temporary password /var/log/mysqld.log # 登录替换临时密码 mysql -uroot -p临时密码 --connect-expired-password # 执行SQL ALTER USER rootlocalhost IDENTIFIED BY Aa123qwe!; SET GLOBAL validate_password.policyLOW; SET GLOBAL validate_password.length6; ALTER USER rootlocalhost IDENTIFIED BY 123456; FLUSH PRIVILEGES; exit;3.1.3 验证 MySQL 连通性bashmysqladmin -uroot -p123456 ping mysql -uroot -p123456 -h127.0.0.1 -e SELECT VERSION();3.2 编译部署 Redis 6.2.143.2.1 安装高版本 GCC 编译环境bashyum install -y centos-release-scl # 替换SCL源为阿里云vault镜像 sed -i s|^mirrorlisthttp://mirrorlist.centos.org|#| /etc/yum.repos.d/CentOS-SCLo-scl.repo /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo sed -i s|^# *baseurlhttp://mirror.centos.org/centos/7/sclo/$basearch/sclo/|baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/$basearch/sclo/| /etc/yum.repos.d/CentOS-SCLo-scl.repo sed -i s|^# *baseurlhttp://mirror.centos.org/centos/7/sclo/$basearch/rh/|baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/sclo/$basearch/rh/| /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo yum clean all yum install -y devtoolset-9-gcc devtoolset-9-gcc-c devtoolset-9-binutils make3.2.2 下载编译 Redisbashcd /usr/local/src wget https://download.redis.io/releases/redis-6.2.14.tar.gz tar xzf redis-6.2.14.tar.gz cd redis-6.2.14 scl enable devtoolset-9 make -j2 make install PREFIX/usr/local/redis3.2.3 配置 redis.conf仅本地访问 密码bashmkdir -p /usr/local/redis/conf /var/log/redis /var/lib/redis cp /usr/local/src/redis-6.2.14/redis.conf /usr/local/redis/conf/redis.conf cd /usr/local/redis/conf sed -i s/^# bind 127.0.0.1 -::1/bind 127.0.0.1/ redis.conf sed -i s/^daemonize no/daemonize yes/ redis.conf sed -i s|^logfile |logfile /var/log/redis/redis.log| redis.conf sed -i s|^dir ./|dir /var/lib/redis| redis.conf sed -i s/^# requirepass foobared/requirepass 1234abcd/ redis.conf3.2.4 配置 systemd 托管 Redisbashcat /usr/lib/systemd/system/redis.service EOF [Unit] DescriptionRedis persistent key-value database Afternetwork.target [Service] Typeforking ExecStart/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf ExecStop/usr/local/redis/bin/redis-cli -a 1234abcd shutdown Restarton-failure LimitNOFILE65536 [Install] WantedBymulti-user.target EOF systemctl daemon-reload systemctl enable --now redis # 验证 /usr/local/redis/bin/redis-cli -a 1234abcd ping ss -lntp | grep 63793.3 JDK8 Maven3.8.6 安装3.3.1 JDK8bashyum install -y java-1.8.0-openjdk-devel java -version # 写入全局环境变量 cat /etc/profile EOF export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export PATH$JAVA_HOME/bin:$PATH EOF source /etc/profile3.3.2 Maven3.8.6bashcd /usr/local/src wget https://mirrors.huaweicloud.com/apache/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz tar xzf apache-maven-3.8.6-bin.tar.gz -C /usr/local/ mv /usr/local/apache-maven-3.8.6 /usr/local/maven # 环境变量 cat /etc/profile EOF export MAVEN_HOME/usr/local/maven export PATH$MAVEN_HOME/bin:$PATH EOF source /etc/profile mvn -version # 配置阿里云Maven镜像 perl -0777 -pe s| /mirrors| mirror\nidaliyunmaven/id\nmirrorOf*/mirrorOf\nnamealiyun public repo/name\nurlhttps://maven.aliyun.com/repository/public/url\n/mirror\n /mirrors| /usr/local/maven/conf/settings.xml /tmp/settings_new.xml mv /tmp/settings_new.xml /usr/local/maven/conf/settings.xml3.4 拉取 ERP 源码并修改配置3.4.1 浅克隆源码避免 gitee 网络报错bashgit clone --depth 1 https://gitee.com/jishenghua/JSH_ERP.git /tmp/jsh_clone cp -a /tmp/jsh_clone/. /usr/local/jsh-erp/ ls /usr/local/jsh-erp/3.4.2 修改 application.yml 数据库连接参数bashcd /usr/local/jsh-erp/jshERP-boot/src/main/resources cp application.yml{,.bak} sed -i s|useSSLfalse$|useSSLfalse\serverTimezoneAsia/Shanghai\allowPublicKeyRetrievaltrue| application.yml # 查看修改后的JDBC地址 grep url: application.yml3.4.3 初始化 MySQL 业务库并导入 SQLbashmysql -uroot -p123456 -e CREATE DATABASE IF NOT EXISTS jsh_erp DEFAULT CHARACTER SET utf8mb4; mysql -uroot -p123456 jsh_erp /usr/local/jsh-erp/jshERP-boot/docs/jsh_erp.sql # 验证表数量预期32张 mysql -uroot -p123456 -e SELECT COUNT(*) FROM information_schema.tables WHERE table_schemajsh_erp;3.5 SpringBoot 后端打包 systemd 托管启动3.5.1 Maven 打包跳过测试bashsource /etc/profile cd /usr/local/jsh-erp/jshERP-boot mvn clean package -Dmaven.test.skiptrue # 确认产物 ls -lh target/jshERP.jar3.5.2 创建后端服务单元bashcat /usr/lib/systemd/system/jsh-erp.service EOF [Unit] DescriptionJSH ERP Spring Boot Service Afternetwork.target mysqld.service redis.service [Service] Typesimple EnvironmentJAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk WorkingDirectory/usr/local/jsh-erp/jshERP-boot ExecStart/usr/bin/java -jar /usr/local/jsh-erp/jshERP-boot/target/jshERP.jar Restarton-failure RestartSec5 SuccessExitStatus143 [Install] WantedBymulti-user.target EOF systemctl daemon-reload systemctl enable --now jsh-erp # 查看启动日志 journalctl -u jsh-erp -f # 验证端口9999监听 ss -lntp | grep 9999 # 接口访问测试 curl http://127.0.0.1:9999/jshERP-boot/doc.html3.6 前端 Vue 打包部署3.6.1 安装 Node16.20.2CentOS7 兼容版本bashcd /usr/local/src wget https://cdn.npmmirror.com/binaries/node/v16.20.2/node-v16.20.2-linux-x64.tar.xz tar xJf node-v16.20.2-linux-x64.tar.xz -C /usr/local/ mv /usr/local/node-v16.20.2-linux-x64 /usr/local/node ln -sf /usr/local/node/bin/node /usr/bin/node ln -sf /usr/local/node/bin/npm /usr/bin/npm node -v npm config set registry https://registry.npmmirror.com3.6.2 安装依赖 构建 distbashcd /usr/local/jsh-erp/jshERP-web npm install --legacy-peer-deps npm run build # 部署静态文件 cp -r dist/* /usr/local/jsh-erp/web/ chmod -R 755 /usr/local/jsh-erp/web四、第三部分Nginx 反向代理配置4.1 安装 Nginx 官方源bashcat /etc/yum.repos.d/nginx.repo EOF [nginx-stable] namenginx stable repo baseurlhttps://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key EOF yum install -y nginx nginx -v4.2 ERP 专属站点配置/etc/nginx/conf.d/erp.confbashcat /etc/nginx/conf.d/erp.conf EOF server { listen 80; server_name localhost; gzip on; gzip_min_length 100; gzip_types text/plain text/css application/xml application/javascript; gzip_vary on; # 前端静态页面 location / { root /usr/local/jsh-erp/web; index index.html index.htm; try_files $uri $uri/ /index.html; # 解决刷新404 } # 后端接口反向代理 location /jshERP-boot/ { proxy_pass http://127.0.0.1:9999/jshERP-boot/; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; } } EOF # 删除默认站点 rm -f /etc/nginx/conf.d/default.conf # 校验配置启动 nginx -t systemctl enable --now nginx # 验证前端访问 curl http://127.0.0.1 # 验证代理接口 curl http://127.0.0.1/jshERP-boot/doc.html4.3 ERP 系统验收测试浏览器访问http://10.8.0.10登录页面正常加载超管账号admin / 123456租户账号jsh / 123456采购 / 销售 / 库存菜单正常打开新增业务数据可保存入库深层路由刷新无 404 报错五、第四部分统一日志收集 ELK 部署架构说明采集端10.8.0.10Filebeat采集 MySQL/Redis/Nginx/ERP 后端日志存储检索端10.8.0.11Elasticsearch7.17 Kibana7.17统一存储、关键字检索5.1 日志服务端部署10.8.0.11 执行5.1.1 安装 ESKibanabash# 导入ELK公钥 rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch cat /etc/yum.repos.d/elastic.repo EOF [elastic-7.x] nameElastic repository for 7.x packages baseurlhttps://artifacts.elastic.co/packages/7.x/yum gpgcheck1 gpgkeyhttps://artifacts.elastic.co/GPG-KEY-elasticsearch enabled1 autorefresh1 typerpm-md EOF yum install -y elasticsearch kibana5.1.2 Elasticsearch 配置bashvim /etc/elasticsearch/elasticsearch.yml # 修改核心参数 network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node # 调整内存2G vim /etc/elasticsearch/jvm.options -Xms2g -Xmx2g # 启动ES systemctl enable --now elasticsearch curl http://127.0.0.1:92005.1.3 Kibana 配置bashvim /etc/kibana/kibana.yml server.host: 0.0.0.0 elasticsearch.hosts: [http://127.0.0.1:9200] systemctl enable --now kibana # 访问地址http://10.8.0.11:56015.2 采集端 Filebeat 部署10.8.0.10 执行5.2.1 安装 Filebeatbashyum install -y filebeat5.2.2 完整采集配置 /etc/filebeat/filebeat.ymlyamlfilebeat.inputs: # 1. ERP SpringBoot后端日志 - type: log enabled: true paths: - /usr/local/jsh-erp/logs/jsh-erp.log tags: [erp-backend] fields: service: jsh-erp host_ip: 10.8.0.10 fields_under_root: true # 2. Nginx访问日志 - type: log enabled: true paths: - /var/log/nginx/access.log tags: [nginx-access] fields: service: nginx host_ip: 10.8.0.10 fields_under_root: true # 3. Nginx错误日志 - type: log enabled: true paths: - /var/log/nginx/error.log tags: [nginx-error] fields: service: nginx host_ip: 10.8.0.10 fields_under_root: true # 4. MySQL日志 - type: log enabled: true paths: - /var/log/mysqld.log tags: [mysql] fields: service: mysql8 host_ip: 10.8.0.10 fields_under_root: true # 5. Redis日志 - type: log enabled: true paths: - /var/log/redis/redis.log tags: [redis6] fields: service: redis host_ip: 10.8.0.10 fields_under_root: true # 输出到远端ES服务端 output.elasticsearch: hosts: [10.8.0.11:9200] index: erp-logs-%{YYYY.MM.dd} setup.kibana: host: 10.8.0.11:56015.2.3 启动 Filebeat 并验证采集bash# 校验配置文件 filebeat test config # 测试日志连通ES filebeat test output # 开机自启 systemctl enable --now filebeat # 实时查看采集日志 journalctl -u filebeat -f5.3 日志检索验收标准访问http://10.8.0.11:5601创建索引模式erp-logs-*可按 service 字段过滤service:jsh-erp、service:nginx、service:mysql8支持关键字全文检索如搜索error、Exception、502、login实时刷新日志可查看完整堆栈、接口请求、数据库报错信息区分主机 IP多节点扩展后可统一汇总检索六、启停顺序与开机自启6.1 启动顺序正序bash# 1.数据库 systemctl start mysqld # 2.缓存 systemctl start redis # 3.ERP后端 systemctl start jsh-erp # 4.Nginx前端入口 systemctl start nginx # 5.日志采集 systemctl start filebeat # 日志服务端10.8.0.11 systemctl start elasticsearch systemctl start kibana6.2 停止顺序逆序bashsystemctl stop nginx systemctl stop jsh-erp systemctl stop redis systemctl stop mysqld systemctl stop filebeat # 日志服务端 systemctl stop kibana systemctl stop elasticsearch6.3 开机自启全部已配置bashsystemctl list-unit-files | grep -E mysqld|redis|jsh-erp|nginx|filebeat|elasticsearch|kibana七、数据库定时备份脚本附加运维规范bash# 创建备份脚本 cat /backup/mysql_backup.sh EOF #!/bin/bash DATE$(date %F) # 全量备份保留7天 mysqldump -uroot -p123456 --single-transaction --routines --triggers jsh_erp | gzip /backup/mysql/jsh_erp_${DATE}.sql.gz find /backup/mysql -name *.sql.gz -mtime 7 -delete EOF chmod x /backup/mysql_backup.sh # 定时任务 每日凌晨2点 echo 0 2 * * * /backup/mysql_backup.sh /var/spool/cron/root crontab -l # 恢复示例 # gunzip /backup/mysql/jsh_erp_2026-08-15.sql.gz | mysql -uroot -p123456 jsh_erp八、常见故障排查清单后端报Public Key Retrieval is not allowedapplication.yml 追加allowPublicKeyRetrievaltrue页面 502 Bad Gateway检查 jsh-erp 服务是否启动、9999 端口监听、proxy_pass 路径完整前端刷新 404确认 erp.conf 存在try_files $uri $uri/ /index.html;Filebeat 无日志检查文件路径权限、ES 地址连通性、防火墙 9200 端口放行Kibana 检索不到日志核对 index 索引名称、Filebeat tags/fields 配置正确MySQL 连接失败确认 root 密码 123456、数据库 jsh_erp 已创建、SQL 导入完成
延伸阅读

更多相关文章

2026/10/5 16:20:46

人车分流出入口管理系统整体解决方案

一、系统概述本方案以 智能一卡通平台(DAIC-YKT-SF)​ 为核心,将汽车、电动两轮车、行人三种通行主体分别纳入独立但统一的管控体系,实现:人车分流:汽车走车牌识别道闸,电动两轮车走RFID识别闸机…

2026/10/8 6:45:57

降重与降AIGC率AI工具实测

面对高校和期刊越来越严的AIGC审核,很多研究者进退两难:用大模型写效率高,但交稿时查出的AI生成比例可能超过三分之一甚至更高。直接提交容易被判为学术不端,逐句手改又浪费了AI提效的初衷。 我们试了十几款工具,发现…

2026/10/10 4:45:13

Go学长带新人前十天:从自己会到让别人也会的实战复盘

初当Go学长第十天,我是真的体会到了“带人比自己写代码累十倍”这句话的分量。十天前我被安排带一个刚接触Go的新人同学,当时想着不就是答疑嘛,结果真正上手才明白,从“自己会”到“让别人也会”,中间隔着的不是知识的…

2026/10/10 4:45:13

triton._C.libtriton找不到?PyTorch C扩展加载报错排查指南

这个报错我前后至少见了二十多次,每次都是不同的人在不同的环境里踩中。有手滑升级了一波依赖就挂的,有刚从别人那里拷来项目一跑就炸的,还有以为自己装了CUDA结果压根没装对版本的。血泪经验攒了不少,这篇就专门把这个错误连根刨…

2026/10/10 4:45:13

Triton导入报错:二进制扩展与版本冲突排查修复

跑大模型和自定义算子的人,对 triton 应该都不陌生。这是一个用 Python 编写 GPU 内核的编译器,torch.compile在不少路径下也会把它拉进来。但就在前几天,我在一台机器上准备跑一个图像处理的模拟项目,脚本刚执行到 import 阶段&a…

2026/10/10 4:45:13

调用栈分析实战:从崩溃排查到死锁定位与性能优化

前阵子凌晨两点多,某服务的告警群突然炸了。日志里只有一条孤零零的崩溃栈,指向一个我再熟悉不过的函数,却完全看不出哪里错了。重启恢复,第二天同一时间又崩一次。这种“日志告诉我它死在哪,却没告诉我它为什么死”的…

2026/10/10 4:45:13

金融客户分群实战:DeepSeek大模型在特征工程与动态聚类的应用

简介:《DeepSeek金融客户分群与画像方案》是一份488页的深度技术文档,面向金融行业数据分析师、算法工程师及AI落地团队,系统讲解如何借助DeepSeek大模型实现客户特征自动提取、动态分群与画像建模,解决传统分群方法在时效性、精准…

2026/10/10 4:40:13

Spring Boot校园智能停车系统:从需求建模到核心代码实战

每年到毕业设计选题季,总有同学在各种系统里纠结犹豫。校园智能停车系统是我见过最能打的一组选题:业务场景真实、用户角色清晰、技术栈覆盖全面,而且停车这个事儿人人都能共情,答辩时业务说得清楚,代码也有得聊。这套…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑