【第四篇】OpenClaw安装部署CentOS操作系统版 - 企业级生产环境部署指南
摘要:CentOS是企业级Linux发行版,广泛应用于生产环境。本文详细介绍在CentOS系统上安装部署OpenClaw的完整流程,包括系统准备、YUM源配置、服务化部署、防火墙配置等内容,适合企业级部署场景。

前言:为什么选择CentOS?
CentOS在企业级部署中的优势:
优势一:稳定性卓越
- 基于Red Hat Enterprise Linux (RHEL)
- 长期支持(10年)
- 经过严格测试
- 生产环境可靠性高
优势二:企业级特性
- SELinux安全增强
- 完整的审计功能
- 专业的支持体系
优势三:RHEL兼容性
- 与RHEL完全二进制兼容
- 企业应用无缝迁移
- 商业软件生态完善
适用场景:
- 企业生产环境
- 金融、医疗等高要求行业
- 需要长期稳定运行的服务
- 对安全要求高的环境
注意: CentOS 7将于2024年6月30日结束生命周期(EOL),建议新项目使用CentOS Stream或Rocky Linux、AlmaLinux等兼容发行版。

一、系统要求与准备
1.1 系统要求
最低配置:
- CentOS 7.0+ / CentOS Stream 8/9(推荐CentOS Stream 8/9)
- 2核CPU(推荐4核+)
- 4GB内存(推荐8GB+)
- 20GB可用磁盘空间(推荐40GB+)
- 稳定的互联网连接
软件要求:
- Node.js 22或更高版本
- npm或pnpm包管理器
- curl或wget
- systemd(CentOS 7+)
1.2 检查系统版本
bash
cat /etc/centos-release
期望输出示例:
CentOS Linux release 7.9.2009 (Core)
或
CentOS Stream release 9
1.3 更新系统包
bash
sudo yum update -y
# CentOS Stream 8/9使用 dnf
sudo dnf update -y
1.4 安装必要工具
bash
sudo yum install -y curl wget git gcc-c++ make
# CentOS Stream 8/9
sudo dnf install -y curl wget git gcc-c++ make

二、Node.js环境配置
2.1 安装Node.js 22
方法一:使用NodeSource官方源(推荐)
CentOS 7:
bash
# 添加NodeSource仓库
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
# 安装Node.js
sudo yum install -y nodejs
# 验证安装
node --version
npm --version
CentOS Stream 8/9:
bash
# 添加NodeSource仓库
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
# 安装Node.js
sudo dnf install -y nodejs
# 验证安装
node --version
npm --version
期望输出:
v22.x.x
10.x.x
方法二:使用NVM(Node Version Manager)
bash
# 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 重新加载shell配置
source ~/.bashrc
# 安装Node.js 22
nvm install 22
# 设置为默认版本
nvm use 22
nvm alias default 22
# 验证
node --version
方法三:使用EPEL源(CentOS 7)
bash
# 安装EPEL
sudo yum install -y epel-release
# 安装Node.js
sudo yum install -y nodejs
# 检查版本
node --version
# 如果版本低于22,需要升级或使用方法一
2.2 配置npm镜像(国内用户)
如果npm下载速度慢,配置淘宝镜像:
bash
npm config set registry https://registry.npmmirror.com
验证配置:
bash
npm config get registry

三、OpenClaw安装
3.1 方法一:一键安装脚本(推荐)
bash
curl -fsSL https://openclaw.ai/install.sh | bash
安装过程:
- 检测系统环境
- 安装依赖(如果缺失)
- 下载并安装OpenClaw
- 配置初始设置
安装时间: 通常30秒到2分钟
3.2 方法二:npm全局安装
bash
npm install -g openclaw@latest
3.3 方法三:从源码编译安装(开发者)
bash
# 克隆仓库
git clone https://github.com/openclaw/openclaw.git
cd openclaw
# 安装依赖
npm install
# 构建
npm run build
# 链接到全局
npm link
3.4 验证安装
bash
# 查看版本
openclaw --version
# 运行诊断
openclaw doctor
四、初始化配置
4.1 运行初始化向导
bash
openclaw onboard --install-daemon
4.2 向导步骤详解
向导步骤与Ubuntu版本基本相同,请参考第三篇文档的"4.2节"。
CentOS特别注意事项:
- SELinux配置:CentOS默认启用SELinux,可能影响OpenClaw运行
- 防火墙配置:CentOS使用firewalld,配置方式与Ubuntu的ufw不同
- 用户权限:确保运行OpenClaw的用户有足够的权限
4.3 验证安装
bash
# 检查状态
openclaw status
# 测试对话
echo "你好,请用一句话介绍你自己。" | openclaw chat

五、SELinux配置
5.1 检查SELinux状态
bash
getenforce
可能输出:
Enforcing:严格模式,拦截所有违规操作Permissive:宽容模式,记录违规但不拦截Disabled:禁用状态
5.2 SELinux对OpenClaw的影响
OpenClaw可能需要执行以下操作,在Enforcing模式下可能被SELinux拦截:
- 读写工作目录
- 访问网络端口
- 执行Docker容器(如果使用沙盒)
- 执行脚本和工具
5.3 SELinux配置方案
方案一:调整为Permissive模式(推荐用于测试)
bash
sudo setenforce 0
方案二:永久禁用SELinux(不推荐,降低安全性)
编辑配置文件:
bash
sudo nano /etc/selinux/config
修改:
ini
SELINUX=disabled
重启系统:
bash
sudo reboot
方案三:配置SELinux策略(推荐用于生产环境)
创建SELinux模块允许OpenClaw操作:
bash
# 创建策略文件
cat > openclaw.te <<EOF
module openclaw 1.0;
require {
type httpd_sys_rw_content_t;
type user_home_t;
type openclaw_port_t;
class file { open read write };
class tcp_socket { name_connect };
}
# 允许OpenClaw读写工作目录
allow openclaw_t user_home_t:file { open read write };
# 允许OpenClaw连接网络端口
allow openclaw_t openclaw_port_t:tcp_socket { name_connect };
EOF
# 编译策略
sudo checkmodule -M -m -o openclaw.mod openclaw.te
sudo semodule_package -o openclaw.pp -m openclaw.mod
# 加载策略
sudo semodule -i openclaw.pp
六、配置为系统服务
6.1 使用systemd管理服务
安装服务:
bash
openclaw gateway install
这会创建systemd服务文件:/etc/systemd/system/openclaw-gateway.service
启动服务:
bash
sudo systemctl start openclaw-gateway
设置开机自启:
bash
sudo systemctl enable openclaw-gateway
查看服务状态:
bash
sudo systemctl status openclaw-gateway
6.2 服务管理命令
bash
# 启动
sudo systemctl start openclaw-gateway
# 停止
sudo systemctl stop openclaw-gateway
# 重启
sudo systemctl restart openclaw-gateway
# 查看状态
sudo systemctl status openclaw-gateway
# 查看日志
sudo journalctl -u openclaw-gateway -f
# 禁用开机自启
sudo systemctl disable openclaw-gateway
6.3 查看服务日志
bash
# 实时查看日志
sudo journalctl -u openclaw-gateway -f
# 查看最近100行
sudo journalctl -u openclaw-gateway -n 100
# 查看今天的日志
sudo journalctl -u openclaw-gateway --since today
6.4 配置服务环境变量
编辑服务文件:
bash
sudo nano /etc/systemd/system/openclaw-gateway.service
在 [Service] 部分添加:
ini
[Service]
Environment="NODE_ENV=production"
Environment="OPENCLAW_WORKSPACE=/path/to/workspace"
保存后重载并重启:
bash
sudo systemctl daemon-reload
sudo systemctl restart openclaw-gateway

七、防火墙配置
CentOS使用firewalld作为防火墙管理工具。
7.1 检查防火墙状态
bash
sudo firewall-cmd --state
期望输出: running
7.2 开放必要端口
OpenClaw默认使用以下端口:
| 端口 | 用途 | 是否必需 |
|---|---|---|
| 18789 | Gateway主端口 | 是 |
| 8080 | Docker沙盒(如果启用) | 可选 |
开放端口:
bash
# 开放OpenClaw端口
sudo firewall-cmd --permanent --add-port=18789/tcp
# 如果使用Docker沙盒
sudo firewall-cmd --permanent --add-port=8080/tcp
# 重载防火墙使配置生效
sudo firewall-cmd --reload
# 查看开放端口
sudo firewall-cmd --list-ports
7.3 限制访问来源(推荐)
只允许特定IP或网段访问:
bash
# 创建自定义zone
sudo firewall-cmd --permanent --new-zone=OpenClaw
# 添加来源IP
sudo firewall-cmd --permanent --zone=OpenClaw --add-source=192.168.1.100
sudo firewall-cmd --permanent --zone=OpenClaw --add-source=192.168.1.0/24
# 开放端口
sudo firewall-cmd --permanent --zone=OpenClaw --add-port=18789/tcp
# 重载防火墙
sudo firewall-cmd --reload
7.4 配置富规则(更复杂场景)
bash
# 只在工作时间允许访问(示例)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="18789" protocol="tcp" time="Mon-Fri 09:00-18:00" accept'
# 查看富规则
sudo firewall-cmd --list-rich-rules
八、反向代理配置(可选)
8.1 安装Nginx
CentOS 7:
bash
sudo yum install -y epel-release
sudo yum install -y nginx
CentOS Stream 8/9:
bash
sudo dnf install -y nginx
8.2 启动并设置开机自启
bash
# 启动Nginx
sudo systemctl start nginx
# 设置开机自启
sudo systemctl enable nginx
# 检查状态
sudo systemctl status nginx
8.3 配置反向代理
创建配置文件:
bash
sudo nano /etc/nginx/conf.d/openclaw.conf
添加以下内容:
nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
8.4 启用配置
bash
# 测试配置
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx
8.5 配置SSL证书(推荐)
使用Let's Encrypt免费证书:
bash
# 安装certbot
sudo yum install -y certbot python2-certbot-nginx
# CentOS Stream 8/9
sudo dnf install -y certbot python3-certbot-nginx
# 自动配置SSL
sudo certbot --nginx -d your-domain.com
Certbot会自动配置HTTPS并设置自动续期。
九、常见问题排查
9.1 问题:SELinux阻止操作
症状: OpenClaw无法读写文件或访问网络
排查:
bash
# 查看SELinux审计日志
sudo ausearch -m avc -ts recent
解决方案:
bash
# 临时禁用SELinux(用于测试)
sudo setenforce 0
# 如果问题解决,说明是SELinux导致的
# 考虑按照第5.3节的方法配置SELinux策略
9.2 问题:firewalld端口未开放
症状: 外部无法访问OpenClaw
排查:
bash
# 检查端口是否开放
sudo firewall-cmd --list-ports
# 检查服务状态
sudo firewall-cmd --list-services
# 查看所有规则
sudo firewall-cmd --list-all
解决方案:
bash
# 开放端口
sudo firewall-cmd --permanent --add-port=18789/tcp
sudo firewall-cmd --reload
9.3 问题:systemd服务启动失败
症状: systemctl start 失败
排查步骤:
bash
# 查看详细日志
sudo journalctl -u openclaw-gateway -n 100
# 手动运行查看错误
openclaw gateway --verbose
9.4 问题:Node.js版本不匹配
症状: 提示Node.js版本低于22
解决方案:
bash
# 卸载旧版本
sudo yum remove -y nodejs
# CentOS Stream 8/9
sudo dnf remove -y nodejs
# 重新安装22版本
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
sudo yum install -y nodejs
# CentOS Stream 8/9
sudo dnf install -y nodejs
十、性能优化
10.1 启用缓存
bash
openclaw config set agents.defaults.cache.enabled true
openclaw config set agents.defaults.cache.ttl 3600
10.2 配置内存限制
在systemd服务文件中添加:
ini
[Service]
MemoryLimit=2G
MemoryMax=2G
10.3 配置日志轮转
创建日志轮转配置:
bash
sudo nano /etc/logrotate.d/openclaw
添加:
~/.openclaw/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 openclaw openclaw
}
十一、安全加固
11.1 运行安全审计
bash
openclaw security audit
11.2 配置Web UI认证
bash
openclaw config set gateway.controlUi.auth.enabled true
openclaw config set gateway.controlUi.auth.username "your_username"
openclaw config set gateway.controlUi.auth.password "your_strong_password"
11.3 启用沙盒
bash
openclaw config set agents.defaults.sandbox.mode "non-main"
11.4 配置文件权限
bash
chmod 600 ~/.openclaw/openclaw.json
chmod 700 ~/.openclaw
11.5 配置审计日志
CentOS的审计子系统可以记录所有操作:
bash
# 安装auditd(通常已预装)
sudo yum install -y auditd
# 配置监控OpenClaw目录
sudo auditctl -w /home/openclaw/.openclaw -p wa -k openclaw
# 查看审计日志
sudo ausearch -k openclaw
十二、监控与维护
12.1 监控服务健康状态
创建监控脚本:
bash
#!/bin/bash
# check-openclaw.sh
if ! systemctl is-active --quiet openclaw-gateway; then
echo "OpenClaw Gateway is not running, restarting..."
systemctl restart openclaw-gateway
echo "OpenClaw Gateway restarted at $(date)" >> /var/log/openclaw-monitor.log
fi
添加到crontab,每5分钟检查一次:
bash
crontab -e
添加:
*/5 * * * * /home/username/scripts/check-openclaw.sh
12.2 定期备份
备份OpenClaw配置和数据:
bash
# 创建备份脚本
nano ~/backup-openclaw.sh
添加:
bash
#!/bin/bash
BACKUP_DIR="/home/backup/openclaw"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# 备份配置和数据
tar -czf $BACKUP_DIR/openclaw_$DATE.tar.gz ~/.openclaw
# 删除30天前的备份
find $BACKUP_DIR -name "openclaw_*.tar.gz" -mtime +30 -delete
设置执行权限:
bash
chmod +x ~/backup-openclaw.sh
添加到crontab,每天凌晨2点备份:
0 2 * * * /home/username/backup-openclaw.sh
十三、CentOS EOL迁移建议
13.1 CentOS 7 EOL迁移
CentOS 7将于2024年6月30日结束生命周期,建议迁移到:
选项1:CentOS Stream 9
bash
# 迁移脚本
curl https://raw.githubusercontent.com/centos/centos-stream/main/centos-stream-7-to-9.sh | bash
# 重启
sudo reboot
选项2:Rocky Linux 9
bash
# 下载迁移脚本
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
# 执行迁移
chmod +x migrate2rocky.sh
sudo bash migrate2rocky.sh -r -e
# 重启
sudo reboot
选项3:AlmaLinux 9
bash
# 下载迁移脚本
curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/migrate2almalinux.sh
# 执行迁移
chmod +x migrate2almalinux.sh
sudo bash migrate2almalinux.sh
# 重启
sudo reboot
13.2 迁移后重新安装OpenClaw
迁移操作系统后,建议重新安装OpenClaw:
bash
# 备份配置
cp -r ~/.openclaw ~/.openclaw.backup
# 卸载OpenClaw
npm uninstall -g openclaw
# 重新安装
npm install -g openclaw@latest
# 恢复配置
cp -r ~/.openclaw.backup/* ~/.openclaw/
# 重启服务
sudo systemctl restart openclaw-gateway
十四、总结与建议
推荐配置清单
✅ 基础配置:
- CentOS 7/Stream 8/9 已准备
- Node.js 22+ 已安装
- OpenClaw 已安装
- 初始化向导已完成
- API Key 已配置
✅ 系统配置:
- SELinux已配置(Permissive或策略模式)
- firewalld已配置
- 必要端口已开放
- (可选)反向代理已配置
- (可选)SSL证书已配置
✅ 服务化配置:
- systemd服务已安装
- 服务已设置开机自启
- 服务运行状态正常
✅ 安全配置:
- 安全审计已通过
- Web UI认证已启用
- 沙盒已启用
- 文件权限已设置
- (可选)审计日志已配置
企业级部署建议
- 使用LTS版本:CentOS Stream 8/9或Rocky Linux/AlmaLinux
- 启用SELinux策略:不要直接禁用,配置合适的策略
- 配置审计日志:记录所有操作,满足合规要求
- 定期备份:至少每天备份一次配置和数据
- 使用独立账户:不要使用root账户运行OpenClaw
- 监控告警:配置监控系统,及时发现问题
- 更新管理:建立定期更新机制,确保系统安全
下一步
恭喜你完成了OpenClaw在CentOS系统上的安装部署!
参考资料:
- OpenClaw官方文档: https://docs.openclaw.ai
- CentOS官方文档: https://docs.centos.org/
- SELinux官方文档: https://selinuxproject.org/
- firewalld官方文档: https://firewalld.org/