设备管理平台项目全流程部署指南:从环境到ELK日志监控

文章目录

    • 一、部署前准备:环境规划与核心说明
      • [1.1 节点与服务分配](#1.1 节点与服务分配)
      • [1.2 前置操作(所有节点必做)](#1.2 前置操作(所有节点必做))
    • 二、分步部署:从核心服务到前端
      • [2.1 第一步:部署MySQL(数据存储)](#2.1 第一步:部署MySQL(数据存储))
        • [1. 上传压缩包](#1. 上传压缩包)
        • [2. 解压并安装RPM包](#2. 解压并安装RPM包)
        • [3. 初始化配置](#3. 初始化配置)
        • [4. 配置业务账号密码](#4. 配置业务账号密码)
        • [5. 导入业务SQL并验证](#5. 导入业务SQL并验证)
      • [2.2 第二步:部署Redis(缓存服务)](#2.2 第二步:部署Redis(缓存服务))
        • [1. 上传并解压安装包](#1. 上传并解压安装包)
        • [2. 配置Redis服务](#2. 配置Redis服务)
        • [3. 允许外部访问](#3. 允许外部访问)
      • [2.3 第三步:部署Java微服务](#2.3 第三步:部署Java微服务)
        • [1. 安装OpenJDK](#1. 安装OpenJDK)
        • [2. 启动微服务](#2. 启动微服务)
      • [2.4 第四步:部署Nginx(前端+反向代理)](#2.4 第四步:部署Nginx(前端+反向代理))
        • [1. 上传安装包](#1. 上传安装包)
        • [2. 安装依赖与Nginx](#2. 安装依赖与Nginx)
        • [3. 配置Nginx系统服务(自启动)](#3. 配置Nginx系统服务(自启动))
        • [4. 部署前端页面](#4. 部署前端页面)
        • [5. 配置反向代理(关键)](#5. 配置反向代理(关键))
        • [6. 验证前端访问](#6. 验证前端访问)

在运维工作中,一套清晰的项目部署流程能极大减少踩坑概率。最近刚完成某设备管理平台的部署,涉及MySQL、Redis、Java微服务、Nginx反向代理和ELK日志收集,过程中踩了不少细节坑,整理成这篇实操指南,希望能帮到有类似需求的同学。

一、部署前准备:环境规划与核心说明

在动手部署前,先明确整体架构和节点分配------这套平台需要5个核心节点,分别承载不同服务,重点注意IP固定规则和资源配置要求,避免后续踩"IP变动导致服务失联"的坑。

1.1 节点与服务分配

节点名称 IP地址 部署服务 关键说明
mysql 172.16.0.100 MySQL + Filebeat IP不可变,存储业务数据
nginx 172.16.0.10 Nginx + Filebeat + Kibana 前端部署+反向代理+日志收集
java 172.16.0.11 OpenJDK + Filebeat 运行Java微服务
redis 172.16.0.12 Redis IP不可变,缓存服务
elk 172.16.0.13 Elasticsearch + Logstash 日志存储与解析(资源要求高)

1.2 前置操作(所有节点必做)

  1. 关闭防火墙和SELinux :避免端口被拦截,命令如下:

    bash 复制代码
    # 关闭防火墙(永久)
    systemctl stop firewalld && systemctl disable firewalld
    # 关闭SELinux(临时+永久)
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  2. 资源配置 :所有节点最低1核2G,ELK节点建议2核4G以上(ES和Logstash对内存消耗较大)。

二、分步部署:从核心服务到前端

按照"数据存储→缓存→微服务→前端"的顺序部署,每一步都做好验证,确保前序服务正常再推进下一步。

2.1 第一步:部署MySQL(数据存储)

MySQL是业务数据核心,需注意初始密码修改、配置优化和SQL导入验证。

1. 上传压缩包

mysql5720_rpms.tar.gz(MySQL安装包)和 yl_app.sql(业务SQL脚本)上传到 172.16.0.100/opt 目录(可通过scp命令上传,例:scp 本地文件路径 root@172.16.0.100:/opt/)。

2. 解压并安装RPM包
bash 复制代码
# 解压压缩包
tar zxvf mysql5720_rpms.tar.gz
# 进入解压目录
cd mysql5720_rpms
# 本地安装(自动处理依赖)
yum localinstall -y *.rpm
3. 初始化配置
  • 启动MySQL服务

    bash 复制代码
    systemctl start mysqld && systemctl enable mysqld
  • 获取初始密码并修改 :MySQL安装后会生成临时密码,存放在日志中:

    bash 复制代码
    # 提取初始密码并修改为 Admin@123
    mysql -uroot -p$(grep "password" /var/log/mysqld.log | awk '{print $NF}') --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';"
  • 优化配置文件 :编辑 /etc/my.cnf,新增密码策略、日志配置(方便后续ELK收集日志):

    bash 复制代码
    vim /etc/my.cnf

    [mysqld] 节点下新增:

    ini 复制代码
    # 降低密码强度(仅检查长度)
    validate_password_policy=LOW
    # 最小密码长度6位
    validate_password_length=6
    # 错误日志路径
    log_error = /var/log/mysql/mysql_error.log
    # 开启慢查询日志(超过2秒记录)
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/mysql_slow.log
    long_query_time = 2
    # 记录未使用索引的查询(便于优化)
    log_queries_not_using_indexes = ON
  • 创建日志目录并授权

    bash 复制代码
    mkdir -p /var/log/mysql
    chown -R mysql:mysql /var/log/mysql
    # 重启生效
    systemctl restart mysqld
4. 配置业务账号密码

微服务需用 root/123456 访问MySQL,因此修改密码:

bash 复制代码
mysql -uroot -pAdmin@123 -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';"
5. 导入业务SQL并验证
bash 复制代码
# 导入SQL脚本
mysql -uroot -p123456 < /opt/yl_app.sql

# 验证是否成功(执行后应看到23张表)
mysql -uroot -p123456 -e "use yl_app; show tables;"

若输出 mv_devicessys_user 等23张表,说明MySQL部署完成。

2.2 第二步:部署Redis(缓存服务)

Redis用于微服务缓存,重点配置"允许外部访问"和服务自启动。

1. 上传并解压安装包

redis-5.0.7.tar.gz 上传到 172.16.0.12/opt 目录,执行:

bash 复制代码
# 解压到/opt
tar zxvf redis-5.0.7.tar.gz -C /opt/
# 进入目录编译安装
cd /opt/redis-5.0.7/
make && make PREFIX=/usr/local/redis install
2. 配置Redis服务
  • 执行安装脚本 :自动生成配置文件和服务脚本:

    bash 复制代码
    cd /opt/redis-5.0.7/utils
    ./install_server.sh  # 全程按回车,直到提示"Enter path to executable"

    此时需手动输入Redis可执行文件路径:/usr/local/redis/bin/redis-server,后续继续回车。

  • 创建符号链接 :让系统全局识别Redis命令:

    bash 复制代码
    ln -s /usr/local/redis/bin/* /usr/local/bin/
3. 允许外部访问

编辑Redis配置文件 /etc/redis/6379.conf

bash 复制代码
vim /etc/redis/6379.conf

修改以下两处:

  • 第70行:bind 0.0.0.0(允许所有IP访问)
  • 第89行:protected-mode no(关闭保护模式)

重启Redis生效:

bash 复制代码
/etc/init.d/redis_6379 restart

2.3 第三步:部署Java微服务

Java节点需先装JDK,再启动微服务Jar包。

1. 安装OpenJDK
bash 复制代码
yum install -y java
# 验证(输出1.8+版本即正常)
java -version
2. 启动微服务

yl_application-1.0-SNAPSHOT.jar 上传到 172.16.0.11/opt 目录,执行:

bash 复制代码
# 后台启动(设置内存:初始512M,最大2G)
nohup java -Xms512m -Xmx2g -jar yl_application-1.0-SNAPSHOT.jar &

# 查看日志(确认启动成功,无报错即可)
tail -f /opt/logs/yulin-2025-09-30.0.log

2.4 第四步:部署Nginx(前端+反向代理)

Nginx负责部署前端页面,并将API请求转发到Java微服务。

1. 上传安装包

nginx-1.20.2.tar.gz(Nginx安装包)和 dist.zip(前端压缩包)上传到 172.16.0.10/opt 目录。

2. 安装依赖与Nginx
bash 复制代码
# 安装编译依赖
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel unzip

# 创建Nginx运行用户(无登录权限)
useradd -M -s /sbin/nologin nginx

# 解压并编译安装
cd /opt
tar zxvf nginx-1.20.2.tar.gz -C /opt/
cd nginx-1.20.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

# 编译安装
make && make install

# 全局识别Nginx命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
3. 配置Nginx系统服务(自启动)

创建服务文件:

bash 复制代码
cat > /lib/systemd/system/nginx.service <<EOF
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

设置权限并启动:

bash 复制代码
chmod 754 /lib/systemd/system/nginx.service
systemctl daemon-reload
systemctl start nginx.service && systemctl enable nginx.service
4. 部署前端页面

解压前端压缩包到Nginx的HTML目录:

bash 复制代码
unzip /opt/dist.zip -d /usr/local/nginx/html
5. 配置反向代理(关键)

备份原配置文件,再修改:

bash 复制代码
# 备份
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

# 编辑配置
vim /usr/local/nginx/conf/nginx.conf

修改 server 节点内容如下(核心是 /ylApp 路径转发到Java微服务):

nginx 复制代码
server {
    listen 80;
    server_name 172.16.0.10;  # Nginx节点IP
    charset utf-8;
    index index.html index.htm;
    root /usr/local/nginx/html/dist;  # 前端页面路径

    # 反向代理到Java微服务(Java节点IP:8090)
    location /ylApp {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://172.16.0.11:8090;  # 注意:原文档此处IP错写为100,已修正!
        proxy_redirect off;
    }

    # 错误页面
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

重启Nginx生效:

bash 复制代码
systemctl restart nginx
6. 验证前端访问

打开浏览器,输入 http://172.16.0.10,应看到设备管理平台的登录页,默认账号可使用文档中的 admin/123456(具体以实际业务配置为准)。

相关推荐
雲帝5 小时前
爱发电nginx转发企业微信webhook
nginx
星光一影12 小时前
【OA办公系统】神点企业OA办公助手/全开源
mysql·nginx·开源·php·源代码管理
matlab的学徒17 小时前
nginx+springboot+redis+mysql+elfk
linux·spring boot·redis·nginx
NicolasCage1 天前
解决苍穹外卖WebSocket连接失败的问题
nginx
维尔切2 天前
Nginx 反向代理与负载均衡
运维·nginx·负载均衡
Justin_193 天前
nginx反向代理与缓存功能
运维·nginx
苹果醋33 天前
数据结构其一 线性表
java·运维·spring boot·mysql·nginx
java干货3 天前
我用Nginx做了负载均衡,还需要API网关吗?
运维·nginx·负载均衡
東雪蓮☆3 天前
LNMP 环境部署 WordPress
linux·运维·mysql·nginx·php