华为欧拉(EulerOS)系统全栈软件部署指南:从 Redis 到 MySQL 实战详解
前言
在国产化操作系统蓬勃发展的背景下,华为欧拉(EulerOS)凭借其稳定性与安全性,成为企业级服务器部署的重要选择。本文基于官方技术文档与最佳实践,详细梳理 Redis 集群、RabbitMQ、JDK、Tomcat 及 MySQL 在欧拉系统中的标准化部署流程,涵盖环境校验、依赖处理、配置优化及故障排查,为技术人员提供可复用的生产级部署方案。
一、Redis 集群(含哨兵模式)部署实战
1. 环境准备与包管理
官方源下载(经华为云镜像站校验):
bash
wget https://repo.huaweicloud.com/hce/2.0/updates/x86_64/Packages/redis6-6.2.7-1.hce2.x86_64.rpm
三节点统一操作:
bash
# 卸载旧版本(若存在)
rpm -e --nodeps $(rpm -qa | grep redis)
# 安装稳定版
rpm -ivh redis6-6.2.7-1.hce2.x86_64.rpm
# 定位配置文件
whereis redis # 输出路径:/etc/redis.conf
2. 核心配置优化(生产级模板)
主节点(Master)配置:
conf
bind 0.0.0.0 # 监听所有地址
protected-mode no # 关闭保护模式
port 6379 # 业务端口
daemonize yes # 守护进程模式
requirepass ky1! # 强密码策略
appendonly yes # 开启AOF持久化
appendfsync everysec # 兼顾性能与数据安全
从节点(Slave)差异化配置:
conf
slaveof 192.168.0.10 6379 # 指向主节点IP:端口
masterauth ky1! # 主节点密码认证
3. 哨兵(Sentinel)高可用配置
三节点统一配置:
conf
# 定位哨兵配置文件
find / -name "*sentinel.conf" # 通常路径:/etc/redis-sentinel.conf
# 核心配置段
bind 0.0.0.0
protected-mode no
port 26379 # 哨兵默认端口
daemonize yes # 后台运行
sentinel monitor mymaster 192.168.0.10 6379 2 # 监控主节点,2个哨兵同意故障转移
sentinel auth-pass mymaster ky1! # 主节点密码
sentinel down-after-milliseconds mymaster 15000 # 15秒判定节点下线
sentinel failover-timeout mymaster 180000 # 故障转移超时时间
4. 启动与状态校验
bash
# 按顺序启动(主→从→哨兵)
redis-server /etc/redis.conf &
redis-sentinel /etc/redis-sentinel.conf &
# 状态检查
ps -ef | grep redis # 确保redis-server与sentinel进程正常
redis-cli -a ky1! -p 26379 info sentinel # 验证哨兵集群状态
二、RabbitMQ 消息队列部署(含 Web 管理界面)
1. 依赖链安装(严格版本匹配)
bash
# OpenSSL 1.1.1m(欧拉官方适配版)
rpm -ivh openssl-1.1.1m-2.r51.hce2.x86_64.rpm
# Erlang 23.0.2(RabbitMQ 3.8.x兼容版)
rpm -ivh erlang-23.0.2-1.el7.x86_64.rpm
# 其他依赖
rpm -ivh socat-1.7.3.2-8.hce2.x86_64.rpm logrotate-3.18.1-1.r5.hce2.x86_64.rpm
2. 服务安装与初始化
bash
# 安装服务器端
rpm -ivh rabbitmq-server-3.8.5-1.el7.noarch.rpm
# 启动与管理
systemctl enable rabbitmq-server # 开机自启
systemctl start rabbitmq-server # 启动服务
3. 管理界面与权限配置
bash
# 启用Web管理插件
rabbitmq-plugins enable rabbitmq_management
# 创建管理员用户(生产环境禁用guest账号)
rabbitmqctl add_user admin Admin@1234 # 用户名:admin 密码:Admin@1234
rabbitmqctl set_user_tags admin administrator # 赋予最高权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" # 全权限配置
# 防火墙配置(云环境需同步安全组规则)
firewall-cmd --add-port={5672,15672}/tcp --permanent
firewall-cmd --reload
4. 访问验证
通过浏览器访问 http://服务器IP:15672
,使用 admin/Admin@1234 登录,确保看到集群状态与队列管理界面。
三、JDK 8 环境部署(生产环境最佳实践)
1. 官方二进制包安装
bash
# 下载Oracle官方RPM包(适配x86_64架构)
wget https://download.oracle.com/otn_pub/java/jdk/8u441-b07/0e0889d1833a4fbb96d02ec8c376641e/jdk-8u441-linux-x64.rpm
# 静默安装
rpm -ivh --force jdk-8u441-linux-x64.rpm
2. 环境变量配置
bash
# 编辑系统配置
vim /etc/profile
# 添加尾部内容
export JAVA_HOME=/usr/java/jdk1.8.0_441
export PATH=$JAVA_HOME/bin:$PATH
# 生效配置
source /etc/profile
# 验证安装
java -version # 应输出1.8.0_441版本信息
四、Tomcat 9 部署(两种主流方案对比)
方案一:RPM 包快速部署(适合欧拉生态)
bash
# 华为云镜像站下载
wget https://repo.huaweicloud.com/hce/2.0/updates/x86_64/Packages/tomcat-9.0.96-3.hce2.noarch.rpm
# 安装及依赖处理
yum -y localinstall --skip-broken tomcat-9.0.96-3.hce2.noarch.rpm
# 启动服务
systemctl start tomcat
systemctl enable tomcat # 开机自启
方案二:源码包自定义部署(适合定制化需求)
bash
# 下载Apache官方包
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.102/bin/apache-tomcat-9.0.102.tar.gz
# 解压到指定目录
tar -zxvf apache-tomcat-9.0.102.tar.gz -C /usr/local/
ln -s /usr/local/apache-tomcat-9.0.102 /usr/local/tomcat
# 启动与停止
/usr/local/tomcat/bin/startup.sh
/usr/local/tomcat/bin/shutdown.sh
安全增强配置
bash
# 禁用默认manager账户(生产环境必做)
vim /usr/local/tomcat/conf/tomcat-users.xml
# 添加管理员账户(示例)
<user username="tomcat-admin" password="StrongPassword123!" roles="manager-gui"/>
五、MySQL 8.0 生产环境部署(含高可用预处理)
1. 历史环境清理(彻底移除残留)
bash
# 卸载旧版本
rpm -e --nodeps $(rpm -qa | grep -E 'mysql|mariadb')
yum -y remove mysql* mariadb*
# 删除残留文件
find / -name mysql | xargs rm -rf
2. 官方 RPM Bundle 安装(推荐方案)
bash
# 下载MySQL 8.0.41 Bundle包
wget https://dev.mysql.com/get/mysql-8.0.41-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-8.0.41-1.el7.x86_64.rpm-bundle.tar
# 按顺序安装依赖
rpm -ivh mysql-community-common-8.0.41-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.41-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.41-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.41-1.el7.x86_64.rpm
3. 核心配置优化(InnoDB 引擎优化)
conf
# vim /etc/my.cnf
[mysqld]
port=3306
bind-address=0.0.0.0 # 允许远程连接
default_time_zone="+8:00" # 北京时间
character-set-server=utf8mb4 # 支持Emoji
collation-server=utf8mb4_general_ci
innodb_buffer_pool_size=4G # 建议设置为物理内存的50%-70%
max_connections=2000 # 连接数限制
slow_query_log=ON # 慢查询日志
long_query_time=2 # 慢查询阈值2秒
4. 初始化与安全设置
bash
# 初始化数据库(生成随机密码)
mysqld --initialize --console # 记录临时密码
# 启动服务
systemctl start mysqld
# 安全加固
mysql_secure_installation # 按向导设置密码策略、删除匿名用户等
5. 远程访问配置
sql
# 登录MySQL(使用临时密码)
mysql -u root -p
# 修改root用户为全IP访问
USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
EXIT;
# 防火墙配置
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
六、生产环境部署 checklist
检查项 | 标准要求 | 验证命令 | |
---|---|---|---|
Redis 哨兵集群 | 至少 2 个哨兵节点达成共识 | redis-cli info sentinel | |
RabbitMQ 用户权限 | 管理员账户具备全权限 | rabbitmqctl list_permissions | |
JDK 环境变量 | 全局生效且版本正确 | java -version | |
Tomcat 管理界面 | 非默认端口且账户强密码 | 浏览器访问验证 | |
MySQL 慢查询日志 | 已开启且阈值合理 | SHOW VARIABLES LIKE 'slow_query_log'; | |
防火墙规则 | 仅开放必要端口(如 6379/26379/5672/15672/3306) | firewall-cmd --list-all | |
服务自启动 | 所有服务配置 systemd 开机启动 | systemctl list-unit-files | grep enabled |
七、常见故障处理指南
-
Redis 哨兵无法选举:
- 检查
sentinel.conf
中主节点 IP 是否为内网真实 IP(禁止使用 127.0.0.1) - 确认各节点时间同步(ntp 服务必须运行)
- 检查
-
RabbitMQ 无法远程连接:
- 禁用
/etc/rabbitmq/rabbitmq.conf
中的 loopback_users 配置 - 检查安全组规则是否放行 5672 端口(TCP 协议)
- 禁用
-
MySQL 连接报错 1045:
- 确认
require_secure_transport
未启用(欧拉系统默认关闭) - 使用
mysql_native_password
认证方式而非 caching_sha2_password
- 确认
结语
本文提供的部署方案经华为云官方镜像站与 Oracle/MySQL 官方文档双重校验,覆盖从基础环境准备到生产级配置优化的全流程。在实际部署中,建议结合企业监控体系(如 Prometheus+Grafana)实现对各服务的实时状态监测,并通过 Ansible 等自动化工具实现多节点批量部署,提升运维效率。关注后续章节,我们将深入探讨各组件的性能调优与容灾方案设计。