在本地开发环境中搭建OpenClaw(龙虾)系统,是许多从事网络爬虫和数据采集开发者的常见需求。CentOS 7作为一款稳定可靠的Linux发行版,常被选作基础运行环境。这个项目记录了我从零开始在一台全新CentOS 7虚拟机上部署OpenClaw的全过程。
OpenClaw是一款基于Python开发的分布式爬虫框架,因其模块化设计和良好的扩展性,在处理复杂爬取任务时表现出色。它支持多种数据库后端、分布式任务队列和动态插件加载,特别适合需要长期运行的大规模数据采集项目。
提示:在虚拟机环境部署时,建议分配至少4GB内存和40GB磁盘空间,避免后续组件安装时资源不足。
我使用的是VMware Workstation 16创建的虚拟机,关键配置参数如下:
安装完成后首先执行系统更新:
bash复制yum update -y && yum upgrade -y
reboot
OpenClaw依赖Python 3.6+环境,CentOS 7默认只提供Python 2.7,需要手动安装Python 3:
bash复制yum install -y epel-release
yum install -y python36 python36-devel
验证安装:
bash复制python3.6 -V
pip3.6 -V
注意:不要删除系统自带的Python 2.7,某些系统工具仍依赖它。使用python3和pip3命令明确指定版本。
OpenClaw核心依赖包括:
安装MariaDB数据库:
bash复制yum install -y mariadb-server mariadb-devel
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
Redis安装配置:
bash复制yum install -y redis
systemctl start redis
systemctl enable redis
从官方GitHub仓库克隆最新代码:
bash复制yum install -y git
git clone https://github.com/openclaw/openclaw.git
cd openclaw
创建虚拟环境:
bash复制python3.6 -m venv venv
source venv/bin/activate
安装Python依赖:
bash复制pip install --upgrade pip
pip install -r requirements.txt
常见问题:某些依赖可能编译失败,通常是因为缺少开发库。可安装以下包解决:
bash复制yum install -y gcc openssl-devel bzip2-devel libffi-devel
创建数据库和用户:
sql复制CREATE DATABASE openclaw CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'openclaw'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON openclaw.* TO 'openclaw'@'localhost';
FLUSH PRIVILEGES;
修改配置文件config/settings.py:
python复制DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'openclaw',
'USER': 'openclaw',
'PASSWORD': 'your_password',
'HOST': 'localhost',
'PORT': '3306',
}
}
执行Django迁移:
bash复制python manage.py migrate
python manage.py createsuperuser
启动Django开发服务器:
bash复制python manage.py runserver 0.0.0.0:8000
启动Celery worker(新终端中):
bash复制celery -A openclaw worker -l info
允许外部访问:
bash复制firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
http://虚拟机IP:8000/admin,用创建的管理员账号登录症状:安装时出现Cannot uninstall 'X'错误
解决:
bash复制pip install --ignore-installed 包名
错误:django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket
解决:
bash复制yum install -y mysql-connector-python
现象:任务长时间处于排队状态
优化方案:
python复制# settings.py
CELERY_WORKER_CONCURRENCY = 4 # 根据CPU核心数调整
CELERY_TASK_ACKS_LATE = True
安装:
bash复制pip install gunicorn
启动:
bash复制gunicorn --bind 0.0.0.0:8000 openclaw.wsgi:application
示例配置:
nginx复制server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
使用supervisor管理进程:
ini复制[program:openclaw]
command=/path/to/venv/bin/gunicorn --bind 0.0.0.0:8000 openclaw.wsgi:application
directory=/path/to/openclaw
user=your_user
autostart=true
autorestart=true
python复制BROKER_POOL_LIMIT = 20 # 增加连接池大小
python复制CELERY_RESULT_EXPIRES = 3600 # 1小时后清理结果
python复制# 在频繁查询的模型字段上添加db_index=True
class Article(models.Model):
url = models.URLField(db_index=True)
python复制LOGGING = {
'handlers': {
'file': {
'class': 'logging.handlers.RotatingFileHandler',
'maxBytes': 1024*1024*5, # 5MB
'backupCount': 5,
}
}
}
在实际部署过程中,我发现虚拟机的磁盘I/O性能往往成为瓶颈。特别是在处理大量小文件时,建议: