一、项目信息****
本地项目路径: F:\PythonProject\TestSpider
服务器IP: 192.168.1.78
服务器用户名: python_server
服务器目标路径: /home/python/hz/TestSpider
Python版本: 3.9
Conda环境: 使用路径环境 /home/python/hz/TestSpider/venv
二、本地操作步骤****
1. 打包项目(在本地Windows上)****
powershell
# 打开 PowerShell 或 Git Bash**
cd F:\PythonProject\TestSpider
# 打包项目(排除不需要的文件)
tar -czf TestSpider.tar.gz \
--exclude='venv' \
--exclude='pycache' \
--exclude='*.pyc' \
--exclude='.git' \
--exclude='.idea' \
--exclude='logs' \ .
2. 上传到服务器****
使用图形化SFTP工具(推荐):
连接到python@192.168.1.78
导航到/tmp 目录
将TestSpider.tar.gz 拖拽上传
或使用命令行:
powershell
scp F:\PythonProject\TestSpider.tar.gz python@192.168.1.78:/tmp/
三、服务器操作步骤****
1. SSH登录服务器****
bash
ssh python@192.168.1.78
2. 解压项目文件****
bash
# 创建目标目录**
mkdir -p /home/python/hz/TestSpider
# 解压项目**
cd /tmp
unzip TestSpider.zip -d /home/python/hz/TestSpider/
# 或如果是tar.gz**
tar -xzf TestSpider.tar.gz -C /home/python/hz/TestSpider/
# 验证解压**
ls -la /home/python/hz/TestSpider/
# 清理临时文件**
rm /tmp/TestSpider.zip # 或 .tar.gz
3. 创建Conda虚拟环境****
bash
# 切换到项目目录**
cd /home/python/hz/TestSpider
基于 Anaconda 创建新环境
conda create --prefix ./venv python=3.9 -y --no-default-packages
激活 conda 环境
conda activate ./venv
安装依赖
pip install -r requirements.txt -i mirrors.aliyun.com/pypi/simple
查看指定环境的路径
conda env list
-- 单独的(如果需要)
pip install DBUtils==3.1.2 -i mirrors.aliyun.com/pypi/simple
pip install tenacity==8.0.1 -i mirrors.aliyun.com/pypi/simple
4. 安装项目依赖****
bash
**5. 设置PYTHONPATH(重要!)(如果代码中没有类似sys.path(..))
bash
# 永久设置(添加到.bashrc)**
echo "export PYTHONPATH=/home/python/hz/TestSpider:$PYTHONPATH" >> ~/.bashrcsource ~/.bashrc
# 或临时设置(当前会话)
export PYTHONPATH=/home/python/hz/TestSpider:$PYTHONPATH
6. 创建启动脚本****
bash
# 创建启动脚本**
cat > /home/python/hz/TestSpider/run_utils/run_dat_file_process.sh << 'EOF'
#!/bin/bash
#Description: 启动数据处理服务
export PYTHONPATH=/home/python/hz/TestSpider:$PYTHONPATH
py_path1=run_dat_file_process.py
project_path1=/home/python/hz/TestSpider/run_utilscd $project_path1
nohup python {py_path1} 1>> nohup_run_dat_file_process.log 2>&1 &echo ! > save_pid_run_dat_file_process.txt
echo "服务已启动,PID: $(cat save_pid_run_dat_file_process.txt)"EOF
# 添加执行权限**
chmod +x /home/python/hz/TestSpider/run_utils/run_dat_file_process.sh
7. 测试运行****
bash
# 手动测试(前台运行)**
cd /home/python/hz/TestSpider/run_utils
export PYTHONPATH=/home/python/hz/TestSpider:$PYTHONPATHpython run_dat_file_process.py
# 看到类似输出表示成功:# start_time: 2026-04-30 xx:xx:xx.xxxxxx# process over!# Running time: x.xx Seconds
8. 后台运行测试****
bash
# 后台运行**
cd /home/python/hz/TestSpider/run_utils./run_dat_file_process.sh
# 查看进程
ps aux | grep run_dat_file_process
# 查看日志
tail -f nohup_run_dat_file_process.log
用ctrl+c 退出
四、设置定时任务(每10分钟执行)****
1. 创建定时任务专用脚本****
bash
cat > /home/python/hz/TestSpider/run_utils/cron_task.sh << 'EOF'
#!/bin/bashcd
/home/python/hz/TestSpider/run_utilsexport
PYTHONPATH=/home/python/hz/TestSpider:$PYTHONPATH/home/python/hz/TestSpider/venv/bin/python run_dat_file_process.py >> nohup_run_dat_file_process.log 2>&1EOF
chmod +x /home/python/hz/TestSpider/run_utils/cron_task.sh
2. 添加到crontab****
bash
# 编辑定时任务 powerful2013**
crontab -e
# 添加以下行(每10分钟执行)**
*/10 * * * * /home/python/hz/TestSpider/run_utils/cron_task.sh
# 保存退出(vim: ESC + :wq)
3. 验证定时任务****
bash
# 查看已添加的任务**
crontab -l
# 查看cron服务状态**
sudo systemctl status crond
# 实时监控日志**
tail -f /home/python/hz/TestSpider/run_utils/nohup_run_dat_file_process.log
五、服务管理命令****
启动服务****
bash
cd /home/python/hz/TestSpider/run_utils./run_dat_file_process.sh
停止服务****
bash
kill $(cat /home/python/hz/TestSpider/run_utils/save_pid_run_dat_file_process.txt)
查看状态****
bash
ps aux | grep run_dat_file_process
查看日志****
bash
# 实时日志**
tail -f /home/python/hz/TestSpider/run_utils/nohup_run_dat_file_process.log
# 查看最后100行**
tail -100 /home/python/hz/TestSpider/run_utils/nohup_run_dat_file_process.log
# 查看自定义日志**
tail -f /home/python/hz/TestSpider/logs/2026-04/2026-04-30*.log
重启服务****
bash
kill $(cat save_pid_run_dat_file_process.txt)./run_dat_file_process.sh
六、创建管理脚本(可选,便于维护)****
cat > /home/python/hz/TestSpider/run_utils/manage.sh << 'EOF' #!/bin/bash
cd /home/python/hz/TestSpider/run_utils
case "PYTHONPATH nohup python run_dat_file_process.py >> nohup_run_dat_file_process.log 2>&1 & echo (cat save_pid_run_dat_file_process.txt)" ;; stop) if [ -f save_pid_run_dat_file_process.txt ]; then kill (cat save_pid_run_dat_file_process.txt) if ps -p PID > /dev/null 2>&1; then echo "服务运行中,PID: PID" else echo "服务未运行" fi else echo "服务未启动" fi ;; log) tail -f nohup_run_dat_file_process.log ;; *) echo "用法: $0 {start|stop|status|log}" exit 1 ;; esac EOF
chmod +x /home/python/hz/TestSpider/run_utils/manage.sh
使用方式:
bash
./manage.sh start
# 启动**
./manage.sh stop
# 停止**
./manage.sh status
# 状态**
./manage.sh log
# 查看日志
七、常见问题解决****
问题1:ModuleNotFoundError: No module named 'utils'****
解决:设置PYTHONPATH
bash
export PYTHONPATH=/home/python/hz/TestSpider:$PYTHONPATH
问题2:conda环境找不到****
解决:使用路径方式激活
bash
source /home/python/hz/TestSpider/venv/bin/activate
问题3:权限不足****
解决:添加执行权限
bash
chmod +x /home/python/hz/TestSpider/run_utils/*.sh
问题4:crontab任务不执行****
解决:
使用绝对路径
在脚本中设置环境变量
检查cron服务状态
八、重要说明****
脚本是一次性任务:运行完会自动退出,这是正常的
定时任务实现周期性执行:通过crontab每10分钟触发一次
日志位置:
nohup日志:
/home/python/hz/TestSpider/run_utils/nohup_run_dat_file_process.log
业务日志:/home/python/hz/TestSpider/logs/2026-04/
虚拟环境:
使用conda路径环境,位置在 /home/python/hz/TestSpider/venv
九、检查清单****
项目文件已上传并解压
Conda环境已创建
依赖包已安装
PYTHONPATH已设置
启动脚本已创建并有执行权限
手动测试运行成功
定时任务已添加
日志正常输出
管理脚本已创建(可选)
至此部署完成! 服务将每10分钟自动执行一次数据处理任务。
关注北上广,一起学习,一起进步