Linux爬虫系统从开始到部署成功全流程
做过爬虫的都知道,很多公司都会有自己的专属技术人员以及服务器,通常情况下再部署爬虫前,首先要将准备好的inux服务器进行环境部署,并且要安装必要的爬虫技术栈,一切环境部署差不多了再去部署爬虫代码。下面就是我整理的一个真实案例,可以一起看看我从准到部署完成的具体流程。
在Linux系统上部署爬虫系统,需经过以下关键步骤:
一、环境准备
1、系统更新
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # CentOS/RHEL
2、安装基础依赖
sudo apt install python3-pip git -y # Debian/Ubuntu
sudo yum install python3-pip git -y # CentOS/RHEL
二、爬虫代码部署
1、获取代码
git clone https://github.com/yourusername/spider-project.git
cd spider-project
2、创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate
3、安装依赖
pip install -r requirements.txt # 包含Scrapy/Requests等库
三、任务调度配置
方案1:Cron定时任务
crontab -e
# 添加以下内容(示例:每天凌晨2点运行)
0 2 * * * /path/to/project/.venv/bin/python /path/to/project/spider.py
方案2:Celery分布式调度(推荐)
1、安装Celery与Redis
pip install celery redis
sudo apt install redis-server -y
2、创建celery_app.py
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def run_spider():# 调用爬虫主函数os.system("scrapy crawl myspider")
3、启动Worker
celery -A celery_app worker --loglevel=info --detach
4、定时触发(通过Beat)
celery -A celery_app beat --detach
四、反爬虫策略处理
1、代理IP池
-
使用付费代理服务(如Luminati)或自建代理池
-
在爬虫中集成:
proxies = {"http": "http://user:pass@proxy_ip:port", "https": "https://proxy_ip:port"} requests.get(url, proxies=proxies)
2、请求头随机化
from fake_useragent import UserAgent
headers = {'User-Agent': UserAgent().random}
3、请求延迟设置
import random, time
time.sleep(random.uniform(1, 3)) # 随机延迟1-3秒
五、数据存储配置
1、MySQL存储
sudo apt install mysql-server -y
sudo mysql_secure_installation # 安全初始化
# Scrapy Pipeline示例
import pymysql
class MySQLPipeline:def process_item(self, item, spider):connection = pymysql.connect(host='localhost', user='user', password='pass', db='spider_db')cursor = connection.cursor()cursor.execute("INSERT INTO table (...) VALUES (...)")connection.commit()
2、MongoDB存储
sudo apt install mongodb -y
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017")
db = client["spider_db"]
db.collection.insert_one(dict(item))
六、日志与监控
1、日志配置
import logging
logging.basicConfig(filename='/var/log/spider.log',level=logging.INFO,format='%(asctime)s [%(levelname)s] %(message)s'
)
2、进程监控(Supervisor)
sudo apt install supervisor -y
创建配置/etc/supervisor/conf.d/spider.conf
:
[program:spider]
command=/path/to/project/.venv/bin/celery -A celery_app worker
directory=/path/to/project
autostart=true
autorestart=true
stderr_logfile=/var/log/spider_err.log
七、安全加固
1、防火墙设置
sudo ufw allow 22 # SSH
sudo ufw allow 80,443 # Web访问
sudo ufw enable
2、非root用户运行
sudo useradd -m spideruser
sudo chown -R spideruser:spideruser /path/to/project
sudo -u spideruser celery -A celery_app worker
八、测试验证
# 手动运行测试
source .venv/bin/activate
python spider.py # 或 scrapy crawl myspider# 检查日志
tail -f /var/log/spider.log
上面就是我之前一个项目详细的部署情况,通过以上步骤,咱们可在Linux系统部署稳定高效的爬虫系统。生产环境建议使用Docker容器化部署,并通过Prometheus+Grafana实现性能监控。
如果有任何不懂的地方都可以留言讨论,或者有更好的建议都可以交流交流。