HZERO PaaS平台安装笔记(二)安装中间件
本文是H-ZERO 安装部署笔记,出于学习研究目的,刚开始按照开放平台->社区与合作伙伴->文档中心- 《HZERO 轻量版》技术文档进行部署实践,选择快速开始->微服务版进行安装; 但作为初学者, 水平太低, 由于轻量版合并了多个微服务,要改各种配置,过程中遇到多个困难,没有搞定🙂, 后来按照 开放平台->社区与合作伙伴->文档中心- 《HZERO汉得企业级PaaS平台》 技术文档进行 标准版(没有合并微服务的版本) 安装部署实践 ,安装部署成功了。本系列文章记录了这个过程。
需要说明的是,如果不是出于学习研究目的,是不需要这么麻烦的,技术中心有发发行版,可以一键安装,一小时不到可以全部安装完成。
本文是出于学习研究目的,按照技术文档从制品库里面拿各种零件进行组装,所以过程会比较繁琐,供学习研究参考。
实践系统环境:windows自带的Linux虚拟机 WSL ,linux版本在微软应用商店选择 Ubuntu22.04
二、安装中间件
MySQL安装
root@desktop-jacksen:/d02/hzero# mysql -version
Command ‘mysql’ not found
root@desktop-jacksen:/d02/hzero# sudo apt install mysql-server
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
The following additional packages will be installed:
……
Done!
检查状态:
root@desktop-jacksen:/d02/hzero# sudo service mysql status
● mysql.service – MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-06-26 13:36:01 CST; 5min ago
Process: 9699 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 9707 (mysqld)
Status: “Server is operational”
Tasks: 37 (limit: 23831)
Memory: 374.9M
CGroup: /system.slice/mysql.service
└─9707 /usr/sbin/mysqld
登录MySQL,创建远程登录管理用户hzero
root@desktop-jacksen:/d02/hzero# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.42-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> CREATE USER ‘hzero’@’%’ IDENTIFIED BY ‘hzero’;
Query OK, 0 rows affected (0.03 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘hzero’@’%’ WITH GRANT OPTION;
Query OK, 0 rows affected (0.02 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql>
调整数据库默认配置, 进入/etc/mysql/mysql.conf.d/mysqld.cnf配置文件,添加如下配置项
root@desktop-jacksen:/etc/mysql/mysql.conf.d# vi mysqld.cnf
在[mysqld] 章节最后添加:
#
#
max_connections=2000
max_allowed_packet=32M
# lower_case_tabel_names default is 0 , change to 1 well cause service restart failue
# lower_case_table_names=1
character_set_server=utf8mb4
collation_server=utf8mb4_bin
原安装文档中要求 lower_case_table_names=1
原但会导致MySQL服务重启失败,所以这个配置没改; 原因是:
数据目录权限问题(Linux 默认行为:lower_case_table_names=1 要求 MySQL 将表名统一转换为小写存储,但 Linux 文件系统默认区分大小写。若数据目录中的表文件(如 User.frm)与转换后的表名(如 user.frm)冲突,会导致启动失败。)
已有数据库兼容性问题(若数据库中已存在大小写不同但实际是同一表名的对象(如 User 和 user),启用此参数会导致命名冲突。)
文件系统限制(若 MySQL 数据目录挂载在区分大小写的文件系统(如 ext4)上,而表名在磁盘上以混合大小写存储,会导致无法找到表文件。)
但这个配置必须且重要的,由于历史原因,H-ZERO 早期并没有对数据库对象命名的大小写做严格的规范,所以如果这个配置不改掉,会导致运行错误。
应用程序要求mysql配置 lower_case_table_names=1, 这个配置一旦Mysql启动之后就改不了,需要在安装完MySQL SERver后,未启动前就把这个配置改掉。 我现在需要分四步走:
第一步,把现有安装的mysql 卸载掉;
第二步,重新安装Mysql ,但不要立马启动服务;
第三步,更改配置 lower_case_table_names=1
第四步,启动Mysql 服务
把这段提示词给到chatgpt,会给你正确的指导,按指导可以很快完成;但如果给到豆包或者腾讯元宝,会把你带到沟里去。
mysql> SHOW VARIABLES LIKE ‘lower_case_table_names’;
+————————+——-+
| Variable_name | Value |
+————————+——-+
| lower_case_table_names | 1 |
+————————+——-+
1 row in set (0.01 sec)
mysql>
sudo systemctl restart mysql
附:chatgpt的指导
你这个需求非常合理,因为 lower_case_table_names=1 这个配置必须在 初始化数据目录前 设置,MySQL 一旦初始化完成就无法更改这个参数,除非删库重来。因此我们需要控制 MySQL 安装过程,确保配置在初始化前就已设置好。
✅ 你的目标步骤简述如下:
- 卸载现有 MySQL 安装和数据;
- 重新安装 MySQL,但阻止其立即启动;
- 修改配置文件,设置 lower_case_table_names=1;
- 手动初始化数据目录;
- 启动 MySQL 服务。
下面是完整可执行步骤。
🔁 第一步:卸载 MySQL 并清理数据
sudo systemctl stop mysql
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql
sudo apt autoremove –purge
sudo apt autoclean
确保 MySQL 的相关数据与配置被干净移除。
🧱 第二步:安装但不启动 MySQL
安装 MySQL 服务器但阻止自动启动服务。
sudo apt update
sudo apt install mysql-server -y
安装完成后立即停止服务防止自动初始化(非常关键!):
sudo systemctl stop mysql
sudo systemctl disable mysql
sudo rm -rf /var/lib/mysql # 清除刚自动生成的数据目录
✍️ 第三步:配置 lower_case_table_names=1
编辑配置文件:
bash
复制编辑
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在 [mysqld] 段中添加或修改:
[mysqld]
lower_case_table_names=1
保存并退出。
🔧 第四步:手动初始化数据库
使用如下命令初始化(会根据配置写入 lowercase 设置):
sudo mysqld –initialize –user=mysql
这一步会生成数据目录和 root 的临时密码,记录在日志中:
sudo grep ‘temporary password’ /var/log/mysql/error.log
🚀 第五步:启动 MySQL 服务
sudo systemctl start mysql
sudo systemctl enable mysql
首次登录:
sudo mysql -u root -p# 输入日志中看到的临时密码
然后立即修改 root 密码:
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘YourNewPassword!’;
✅ 验证配置是否生效
登录后:
SHOW VARIABLES LIKE ‘lower_case_table_names’;
应返回:
| Variable_name | Value |+————————+——-+
| lower_case_table_names | 1 |+————————+——-+
🧠 补充说明
lower_case_table_names=1 是在 Linux 下实现 不区分大小写表名 的唯一方式;
注意这会影响开发团队的 SQL 编码规范(表名全部小写更稳妥);
MySQL 初始化成功后,该参数不能再改,除非你删除数据目录重新初始化。
Redis安装
root@desktop-jacksen:/d02/hzero# redis-server –version
Command ‘redis-server’ not found, but can be installed with:
apt install redis-server
root@desktop-jacksen:/d02/hzero# sudo apt install redis-server
Reading package lists… Done
……
root@desktop-jacksen:/d02/hzero# redis-server –version
Redis server v=6.0.16 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=a3fdef44459b3ad6
查看状态:
root@desktop-jacksen:/d02/hzero# sudo systemctl status redis-server
● redis-server.service – Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-06-26 15:10:31 CST; 7min ago
设置开机自动启动:
root@desktop-jacksen:/d02/hzero# sudo systemctl enable redis-server
Synchronizing state of redis-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable redis-server
root@desktop-jacksen:/d02/hzero#
Minio 安装
1. 下载 MinIO 服务器
root@desktop-jacksen:/d02/hzero# wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
2. 创建数据目录
root@desktop-jacksen:/# sudo mkdir -p /data/minio
root@desktop-jacksen:/# sudo chown -R $USER:$USER /data/minio
3. 配置环境变量
创建 /etc/default/minio 文件:添加一下内容:
MINIO_VOLUMES=”/data/minio”
MINIO_OPTS=”–address :9000 –console-address :9001″
MINIO_ROOT_USER=hzero.admin
MINIO_ROOT_PASSWORD=hzero.hand.2020.
MINIO_ACCESS_KEY=hzero.admin
MINIO_SECRET_KEY=hzero.hand.2020.
4. 创建 systemd 服务
sudo nano /etc/systemd/system/minio.service,添加一下内容:
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
5. 启动并设置开机自启
sudo systemctl daemon-reloadsudo
systemctl enable miniosudo
systemctl start miniosudo
systemctl status minio # 检查服务状态
1、验证安装
打开浏览器,访问 http:服务器IP:9001/,使用配置的用户名和密码登录。
root@desktop-jacksen:/usr/local/bin# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.14.48 netmask 255.255.240.0 broadcast 172.18.15.255
inet6 fe80::215:5dff:fec4:f69b prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:c4:f6:9b txqueuelen 1000 (Ethernet)
备注:关机前先停服务,尽量避免信息丢失:
sudo systemctl stop mysql redis nginx minio
启动时也用systemctl启动, systemctl会检查状态,如果开机已经自启动,它会忽略,不会重复启动,也不会报错;
sudo systemctl start mysql redis nginx minio
关于作者:
| 昵称:Jack.shang 档案信息:jack.shang 一位从技术走向管理,再从管理走向市场的普通行者 联系方式:你可以通过syfvb@hotmail.com联系作者 点击查看Jack.shang发表过的所有文章... 本文永久链接: http://blog.retailsolution.cn/archives/4380 |
对本文的评价:
