尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

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

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 导入完成
返回列表