影刀RPA云端部署:阿里云腾讯云服务器运行RPA完全指南

作者:林焱 | 发布平台:CSDN / 公众号 / 掘金


前言:为什么需要云端部署

在这里插入图片描述

本地运行RPA有一个致命缺点:依赖本地电脑持续开机。电脑关机、断网、电源故障,流程就中断了。

云端部署的优势:

  • 7×24小时稳定运行:服务器不会下班
  • 不占用本机资源:让你的电脑轻装上阵
  • 弹性伸缩:需要更多算力时按需扩展
  • 远程管理:随时随地监控流程状态

本文讲解如何在阿里云/腾讯云服务器上部署影刀RPA,并实现自动化调度。


在这里插入图片描述

一、服务器选型与配置

推荐配置

场景 CPU 内存 推荐机型 月费参考
纯数据处理(无界面) 2核 4GB 腾讯云S5.MEDIUM4 ~50元/月
有界面的浏览器操作 4核 8GB 阿里云c6.xlarge ~150元/月
多流程并发运行 8核 16GB 腾讯云S5.2XLARGE16 ~300元/月

系统推荐:Windows Server 2019(更好的兼容性)或 Ubuntu 20.04 LTS(成本更低)

店群矩阵自动化突破运营极限!


在这里插入图片描述


二、Linux服务器部署(Headless模式)

安装Python环境

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装Python 3.10+
sudo apt install python3.10 python3-pip python3-venv -y

# 创建虚拟环境
mkdir -p /opt/rpa
cd /opt/rpa
python3 -m venv venv
source venv/bin/activate

# 安装依赖
pip install shadowbot requests pandas openpyxl schedule

安装无头浏览器(Headless Chrome)

# 安装Chrome
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google.list
sudo apt-get update
sudo apt-get install -y google-chrome-stable

# 安装显示服务器(用于需要图形界面的场景)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e59c14bf6882442c82d95f363587f373.png#pic_center)

sudo apt install -y xvfb x11-utils

# 验证安装
google-chrome --version

Python代码中配置Headless模式

import shadowbot as sb
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def create_headless_browser():
    """创建无头浏览器"""
    options = Options()
    options.add_argument("--headless")          # 无头模式
    options.add_argument("--no-sandbox")         # 在Docker中必须
    options.add_argument("--disable-dev-shm-usage")  # 内存优化
    options.add_argument("--disable-gpu")        # 禁用GPU
    options.add_argument("--window-size=1920,1080")  # 设置分辨率
    options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")
    
    driver = webdriver.Chrome(options=options)
    return driver

# 或者使用影刀内置的无头模式
def run_headless_flow():
    """无头模式运行流程"""
    # 影刀支持headless配置
    browser_config = {
        "headless": True,
        "window_width": 1920,
        "window_height": 1080,
    }
    
    page = sb.browser.get_page("https://example.com", **browser_config)
    data = page.get_text("h1")
    
    return data

三、使用Xvfb运行需要图形界面的程序

# 启动虚拟显示
Xvfb :99 -screen 0 1920x1080x24 &
export DISPLAY=:99

# 运行需要图形界面的Python脚本
DISPLAY=:99 python3 /opt/rpa/main.py
import subprocess
import os

def run_with_virtual_display(script_path):
    """在虚拟显示环境中运行脚本"""
    # 启动Xvfb
    xvfb_proc = subprocess.Popen([
        'Xvfb', ':99', '-screen', '0', '1920x1080x24'
    ])
    
    env = os.environ.copy()
    env['DISPLAY'] = ':99'
    
    # 运行脚本
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4a89fb739f594b54a7b6b4f3f12432ad.png#pic_center)

    result = subprocess.run(
        ['python3', script_path],
        env=env,
        capture_output=True,
        text=True
    )
    
    # 停止Xvfb
    xvfb_proc.terminate()
    
    return result.returncode, result.stdout, result.stderr

四、配置系统服务(开机自启)

创建systemd服务

# 创建服务文件
sudo tee /etc/systemd/system/rpa-scheduler.service << 'EOF'
[Unit]
Description=RPA Automation Scheduler
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/opt/rpa
Environment=DISPLAY=:99
ExecStartPre=/usr/bin/Xvfb :99 -screen 0 1920x1080x24
ExecStart=/opt/rpa/venv/bin/python /opt/rpa/scheduler.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

# 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable rpa-scheduler
sudo systemctl start rpa-scheduler

# 查看状态
sudo systemctl status rpa-scheduler
sudo journalctl -u rpa-scheduler -f  # 实时日志

五、Docker容器化部署

在这里插入图片描述

# Dockerfile
FROM python:3.10-slim

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    wget \
    gnupg \
    xvfb \
    x11-utils \
    fonts-wqy-zenhei \
    fonts-wqy-microhei \
    && rm -rf /var/lib/apt/lists/*

# 安装Chrome
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list \
    && apt-get update && apt-get install -y google-chrome-stable

# 安装Python依赖
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制代码
COPY . .

# 设置环境变量
ENV DISPLAY=:99
ENV PYTHONUNBUFFERED=1

# 启动脚本
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]
#!/bin/bash
# entrypoint.sh

# 启动虚拟显示
Xvfb :99 -screen 0 1920x1080x24 &
sleep 1

# 启动RPA调度器
exec python /app/scheduler.py
# docker-compose.yml
version: '3.8'

services:
  rpa-scheduler:
    build: .
    restart: unless-stopped
    volumes:
      - ./data:/app/data
      - ./logs:/app/logs
      - ./config:/app/config
    environment:
      - BAIDU_TRANSLATE_APP_ID=${BAIDU_TRANSLATE_APP_ID}
      - WECOM_WEBHOOK=${WECOM_WEBHOOK}
    mem_limit: 2g
    cpus: '2'
    
  rpa-monitor:
    image: grafana/grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana

volumes:
  grafana_data:
# 部署命令
docker-compose up -d

# 查看日志
docker-compose logs -f rpa-scheduler

# 更新部署
git pull
docker-compose build
docker-compose up -d --force-recreate

在这里插入图片描述

六、云函数部署(轻量级场景)

对于不需要浏览器操作的纯数据处理流程,可以使用腾讯云函数/阿里云函数计算:

temu店群自动化报活动案例

# 腾讯云函数示例(main.py)

import json
import requests
import pandas as pd
from io import BytesIO

def main_handler(event, context):
    """云函数入口"""
    
    # 解析触发参数
    body = json.loads(event.get("body", "{}"))
    task_type = body.get("task_type", "default")
    
    if task_type == "data_sync":
        result = sync_data_from_api()
    elif task_type == "report_generate":
        result = generate_report()
    else:
        result = {"error": f"未知任务类型:{task_type}"}
    
    return {
        "statusCode": 200,
        "body": json.dumps(result, ensure_ascii=False),
        "headers": {"Content-Type": "application/json"}
    }

def sync_data_from_api():
    """从API同步数据"""
    resp = requests.get("https://api.example.com/data", timeout=30)
    data = resp.json()
    
    # 处理数据...
    processed = len(data)
    
    return {"synced": processed, "status": "success"}

在这里插入图片描述

七、远程监控与告警

import paramiko
from datetime import datetime

def check_remote_rpa_status(host, username, key_file):
    """检查远程服务器RPA运行状态"""
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(host, username=username, key_filename=key_file)
    
    # 检查服务状态
    _, stdout, _ = client.exec_command("systemctl is-active rpa-scheduler")
    service_status = stdout.read().decode().strip()
    
    # 检查最新日志
    _, stdout, _ = client.exec_command("journalctl -u rpa-scheduler -n 20 --no-pager")
    recent_logs = stdout.read().decode()
    
    # 检查系统资源
    _, stdout, _ = client.exec_command("free -m | grep Mem")
    mem_info = stdout.read().decode().strip()
    
    _, stdout, _ = client.exec_command("top -bn1 | grep 'Cpu(s)'")
    cpu_info = stdout.read().decode().strip()
    
    client.close()
    
    status = {
        "host": host,
        "check_time": datetime.now().isoformat(),
        "service_status": service_status,
        "is_running": service_status == "active",
        "memory": mem_info,
        "cpu": cpu_info,
        "recent_errors": [l for l in recent_logs.split('\n') if 'ERROR' in l],
    }
    
    # 如果服务不在运行,发送告警
    if not status["is_running"]:
        send_alert(f"⚠️ 服务器 {host} 上的RPA服务已停止!请检查。")
    
    return status

# 每10分钟检查一次
import schedule, time

schedule.every(10).minutes.do(
    check_remote_rpa_status,
    host="1.2.3.4",
    username="ubuntu",
    key_file="/path/to/key.pem"
)

while True:
    schedule.run_pending()
    time.sleep(60)

成本优化建议

策略 节省比例 说明
使用竞价实例 60-80% 适合可中断的批处理任务
按量计费 50% 非7×24运行场景
选择低峰期执行 20% 按需实例利用闲时资源
在这里插入图片描述

| Headless减少内存 | 30% | 不加载图形界面 |
| 容器化提高密度 | 40% | 同一台服务器跑多个RPA |


总结

云端部署影刀RPA的推荐路径:

  1. 轻量数据处理:腾讯云函数 / 阿里云FC(按调用次数计费)
  2. 爬虫采集类:Ubuntu + Chrome Headless + systemd(稳定低成本)
  3. 桌面应用操作:Windows Server + Xvfb(最佳兼容性)
  4. 大规模并发:Docker + Kubernetes(弹性伸缩)

建议先在本地调试稳定后再迁移到云端,确保流程的健壮性。

在这里插入图片描述


作者:林焱 | 转载请注明出处

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐