Linux服务器部署Python项目完整步骤指南

3 阅读4分钟

一、项目信息****

本地项目路径: 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 "1"instart)exportPYTHONPATH=/home/python/hz/TestSpider:1" in start) export PYTHONPATH=/home/python/hz/TestSpider:PYTHONPATH nohup python run_dat_file_process.py >> nohup_run_dat_file_process.log 2>&1 & echo !>savepidrundatfileprocess.txtecho"服务已启动,PID:! > save_pid_run_dat_file_process.txt echo "服务已启动,PID: (cat save_pid_run_dat_file_process.txt)" ;; stop) if [ -f save_pid_run_dat_file_process.txt ]; then kill (catsavepidrundatfileprocess.txt)rmsavepidrundatfileprocess.txtecho"服务已停止"elseecho"PID文件不存在"fi;;status)if[fsavepidrundatfileprocess.txt];thenPID=(cat save_pid_run_dat_file_process.txt) rm save_pid_run_dat_file_process.txt echo "服务已停止" else echo "PID文件不存在" fi ;; status) if [ -f save_pid_run_dat_file_process.txt ]; then PID=(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分钟自动执行一次数据处理任务。

关注北上广,一起学习,一起进步有能集成转存失败,建议直接上传图片文件