设备管理平台项目全流程部署指南:从环境到ELK日志监控
文章目录
- 一、部署前准备:环境规划与核心说明
- 1.1 节点与服务分配
- 1.2 前置操作(所有节点必做)
- 二、分步部署:从核心服务到前端
- 2.1 第一步:部署MySQL(数据存储)
- 1. 上传压缩包
- 2. 解压并安装RPM包
- 3. 初始化配置
- 4. 配置业务账号密码
- 5. 导入业务SQL并验证
- 2.2 第二步:部署Redis(缓存服务)
- 1. 上传并解压安装包
- 2. 配置Redis服务
- 3. 允许外部访问
- 2.3 第三步:部署Java微服务
- 1. 安装OpenJDK
- 2. 启动微服务
- 2.4 第四步:部署Nginx(前端+反向代理)
- 1. 上传安装包
- 2. 安装依赖与Nginx
- 3. 配置Nginx系统服务(自启动)
- 4. 部署前端页面
- 5. 配置反向代理(关键)
- 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 前置操作(所有节点必做)
- 关闭防火墙和SELinux:避免端口被拦截,命令如下:
# 关闭防火墙(永久) systemctl stop firewalld && systemctl disable firewalld # 关闭SELinux(临时+永久) setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- 资源配置:所有节点最低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包
# 解压压缩包
tar zxvf mysql5720_rpms.tar.gz
# 进入解压目录
cd mysql5720_rpms
# 本地安装(自动处理依赖)
yum localinstall -y *.rpm
3. 初始化配置
- 启动MySQL服务:
systemctl start mysqld && systemctl enable mysqld
- 获取初始密码并修改:MySQL安装后会生成临时密码,存放在日志中:
# 提取初始密码并修改为 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收集日志):
在vim /etc/my.cnf
[mysqld]
节点下新增:# 降低密码强度(仅检查长度) 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
- 创建日志目录并授权:
mkdir -p /var/log/mysql chown -R mysql:mysql /var/log/mysql # 重启生效 systemctl restart mysqld
4. 配置业务账号密码
微服务需用 root/123456
访问MySQL,因此修改密码:
mysql -uroot -pAdmin@123 -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';"
5. 导入业务SQL并验证
# 导入SQL脚本
mysql -uroot -p123456 < /opt/yl_app.sql# 验证是否成功(执行后应看到23张表)
mysql -uroot -p123456 -e "use yl_app; show tables;"
若输出 mv_devices
、sys_user
等23张表,说明MySQL部署完成。
2.2 第二步:部署Redis(缓存服务)
Redis用于微服务缓存,重点配置“允许外部访问”和服务自启动。
1. 上传并解压安装包
将 redis-5.0.7.tar.gz
上传到 172.16.0.12
的 /opt
目录,执行:
# 解压到/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服务
- 执行安装脚本:自动生成配置文件和服务脚本:
此时需手动输入Redis可执行文件路径:cd /opt/redis-5.0.7/utils ./install_server.sh # 全程按回车,直到提示“Enter path to executable”
/usr/local/redis/bin/redis-server
,后续继续回车。 - 创建符号链接:让系统全局识别Redis命令:
ln -s /usr/local/redis/bin/* /usr/local/bin/
3. 允许外部访问
编辑Redis配置文件 /etc/redis/6379.conf
:
vim /etc/redis/6379.conf
修改以下两处:
- 第70行:
bind 0.0.0.0
(允许所有IP访问) - 第89行:
protected-mode no
(关闭保护模式)
重启Redis生效:
/etc/init.d/redis_6379 restart
2.3 第三步:部署Java微服务
Java节点需先装JDK,再启动微服务Jar包。
1. 安装OpenJDK
yum install -y java
# 验证(输出1.8+版本即正常)
java -version
2. 启动微服务
将 yl_application-1.0-SNAPSHOT.jar
上传到 172.16.0.11
的 /opt
目录,执行:
# 后台启动(设置内存:初始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
# 安装编译依赖
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系统服务(自启动)
创建服务文件:
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
设置权限并启动:
chmod 754 /lib/systemd/system/nginx.service
systemctl daemon-reload
systemctl start nginx.service && systemctl enable nginx.service
4. 部署前端页面
解压前端压缩包到Nginx的HTML目录:
unzip /opt/dist.zip -d /usr/local/nginx/html
5. 配置反向代理(关键)
备份原配置文件,再修改:
# 备份
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak# 编辑配置
vim /usr/local/nginx/conf/nginx.conf
修改 server
节点内容如下(核心是 /ylApp
路径转发到Java微服务):
server {listen 80;server_name 172.16.0.10; # Nginx节点IPcharset 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生效:
systemctl restart nginx
6. 验证前端访问
打开浏览器,输入 http://172.16.0.10
,应看到设备管理平台的登录页,默认账号可使用文档中的 admin/123456
(具体以实际业务配置为准)。