CentOS 安装部署OpenClaw实战教程(SELinux+防火墙配置)

【第四篇】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

安装过程:

  1. 检测系统环境
  2. 安装依赖(如果缺失)
  3. 下载并安装OpenClaw
  4. 配置初始设置

安装时间: 通常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特别注意事项:

  1. SELinux配置:CentOS默认启用SELinux,可能影响OpenClaw运行
  2. 防火墙配置:CentOS使用firewalld,配置方式与Ubuntu的ufw不同
  3. 用户权限:确保运行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认证已启用
  • 沙盒已启用
  • 文件权限已设置
  • (可选)审计日志已配置

企业级部署建议

  1. 使用LTS版本:CentOS Stream 8/9或Rocky Linux/AlmaLinux
  2. 启用SELinux策略:不要直接禁用,配置合适的策略
  3. 配置审计日志:记录所有操作,满足合规要求
  4. 定期备份:至少每天备份一次配置和数据
  5. 使用独立账户:不要使用root账户运行OpenClaw
  6. 监控告警:配置监控系统,及时发现问题
  7. 更新管理:建立定期更新机制,确保系统安全

下一步

恭喜你完成了OpenClaw在CentOS系统上的安装部署!


参考资料:


相关推荐
小江的记录本2 小时前
【Docker】 Docker 全平台部署(Linux / Windows / MacOS)与 前后端分离项目 容器化方案
java·linux·windows·http·macos·docker·容器
ShineWinsu2 小时前
对于Linux:进程地址空间(虚拟地址空间)的解析
linux·服务器·面试·笔试·内存·进程·虚拟空间
前端不太难2 小时前
越用越好用:OpenClaw的进化型Agent
状态模式·openclaw
wuhui21002 小时前
Kali Linux 输入法问题排查与解决记录
linux·运维·服务器
L1624762 小时前
FreeFileSync使用教程(windows与windows,windows与linux)
linux·运维·服务器
软件测试很重要2 小时前
Linux VNC 入门手册
linux·运维·服务器
摸鱼仙人~2 小时前
简约而不简单:深度解析 Linux 哲学核心
linux·运维·服务器
kaico20182 小时前
jenkins的groovy语法
运维·jenkins
网硕互联的小客服2 小时前
CentOS 8 如何重启服务与网卡?
linux·服务器·centos