手工安装速查与常见问题
速查与常见问题
手工部署步骤速查表
| 阶段 | 操作 | 命令 / 配置 |
|---|---|---|
| 安装准备 | 上传安装包与授权文件 | ll /install/ |
| 安装准备 | 解压安装包 | tar -zxf halo-1.0.16.x86_64.build260811.tar.gz -C /u01/app/halo/ |
| 系统配置 | 安装缺失依赖 | dnf install -y libxcrypt-compat libpsl brotli procps-ng |
| 系统配置 | 创建 halo 用户与组 | groupadd -g 1000 halo; useradd -u 1000 -g halo halo |
| 系统配置 | 配置进程目录 | mkdir -p /var/run/halo; chown halo:halo /var/run/halo |
| 系统配置 | 配置内核参数 | sysctl -w kernel.sem="4096 4194304 32768 1024" |
| 系统配置 | 配置资源限制 | 编辑 /etc/security/limits.conf(nofile/nproc/stack/memlock/core) |
| 系统配置 | 关闭透明大页 | echo never > /sys/kernel/mm/transparent_hugepage/enabled |
| 数据库初始化 | 创建数据目录 | mkdir -p /data/halo/archivedir; chown -R halo:halo /data/halo |
| 数据库初始化 | 配置 halo 用户环境变量 | 编辑 /home/halo/.bash_profile(HALO_HOME/PGDATA/PATH/LD_LIBRARY_PATH) |
| 数据库初始化 | 拷贝授权文件 | cp license.lic /u01/app/halo/product/dbms/16/ |
| 数据库初始化 | 初始化数据库 | pg_ctl init -D /data/halo |
| 数据库初始化 | 配置参数文件 | 编辑 postgresql.conf、pg_hba.conf |
| 启动验证 | 启动数据库 | pg_ctl -D /data/halo -l /data/halo/startup.log -w start |
| 启动验证 | 验证状态 | pg_ctl status |
| 启动验证 | 查看版本 | psql -p 1921 -d halo0root -c "select version();" |
默认路径与端口
默认安装路径与端口汇总见附录 A.1。
常见问题
Q1:root 用户下执行 pg_ctl、psql 报 command not found?
A:这些命令的路径配置在 halo 用户环境变量中。请执行 su - halo 切换到 halo 用户后再执行;或在 root 下手动 export PATH=$HALO_HOME/bin:$PATH。
Q2:运行二进制报 error while loading shared libraries: libcrypt.so.1(或 libpsl、libbrotlidec)?
A:精简操作系统镜像缺少 Halo 所需的动态库。执行 dnf install -y libxcrypt-compat libpsl brotli 补齐依赖。可用 ldd <二进制路径> | grep "not found" 全量扫描缺失库。
Q3:启动数据库报 syntax error in postgresql.conf ... near token """?
A:Halo 的 postgresql.conf 解析器要求字符串值使用 单引号。将 listen_addresses = "*" 改为 listen_addresses = '*',archive_command = "..." 改为单引号包裹即可。
Q4:连接数据库报 FATAL: database "postgres" does not exist?
A:Halo 的 initdb 默认创建的数据库为 halo0root。请使用 psql -d halo0root 连接。
Q5:手工部署与一键安装脚本部署的最终产物是否一致?
A:一致。二者最终都产出一个可用的 Halo 单机数据库实例,仅过程不同——一键脚本全自动串联依赖安装、initdb、参数配置、归档、授权、启动、兼容模式、大页等步骤;手工部署则将这些步骤拆解为可逐条执行的命令,便于定制与排查。
Q6:如何持久化进程目录、内核参数、THP 关闭等配置,防止重启失效?
A:进程目录写入 /etc/rc.local(并 chmod +x /etc/rc.d/rc.local);内核参数写入 /etc/sysctl.conf 后 sysctl -p;THP 关闭与大页配置可通过 systemd 服务或 /etc/rc.local 持久化。
与一键安装脚本的差异说明
| 项目 | 一键安装脚本 | 手工部署 |
|---|---|---|
| 依赖安装 | 自动检测并安装 | 需手动 dnf install |
| halo 用户 | 自动创建或询问重建 | 手动 groupadd/useradd |
| initdb | 自动执行 | 手动 pg_ctl init |
| 参数配置 | 自动配置 pg_hba/postgresql.conf | 手动编辑追加配置 |
| 归档配置 | 交互式询问并自动配置 | 手动建目录 + 配置 archive_mode |
| 授权文件 | 自动拷贝 | 手动 cp |
| 启动 | 自动启动 | 手动 pg_ctl start |
| 大页(HugePage) | 自动配置 | 手动配置(生产建议开启) |
| 兼容模式数据库 | 交互式创建(all/oracle/mysql/...) | 默认不创建,需要时手动进行配置 |