首页 > 编程技术 > Python > 部署Python到CentOS服务器
2019
11-28

部署Python到CentOS服务器

最近写个python小程序,需要部署到CentOS服务器中,遇到了各种问题,下面说下解决的方法。

第一步,安装Python环境

1.从官网下载Python3源码

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

2.安装Python3

tar -xvJf  Python-3.6.2.tar.xz
cd Python-3.6.2
./configure prefix=/usr/local/python3
make && make install

3.安装完毕,创建软连接

ln -s /usr/local/python3/bin/python3 /usr/bin/python

注意:如果之前已经有安装Python2或其他版本,要先移除旧的

mv /usr/bin/python /usr/bin/python_old

第二步,将本地开发环境的依赖项目生成清单文件

1.在本地的开发环境中,env下执行:

pip3 freeze >requirements.txt

2.将生成后的文件上传到linux服务器

第三步,创建虚拟环境,并安装项目所需的依赖

1.切换到pip3所在的目录 /usr/local/python/bin,执行以下命令

# 安装虚拟环境
pip3 install virtualenv

# 创建虚拟环境 ENV
virtualenv ENV

# 切换到虚拟环境所在的目录
cd ENV

# 启用虚拟环境
source ./bin/activate

# 安装依赖清单里的库
pip3 install -r requirements.txt

# 列出当前虚拟环境所安装的依赖库
pip3 list

第四步:添加自定义系统服务

# 这样的命令在ssh终端退出后,python进程也会被杀掉
python xxx.py &

需要创建一个自定义的系统服务,来保证python程序能够在后台运行。

1.创建系统服务

vim /usr/lib/systemd/system/robot.service

内容如下:

[Unit]
Description=robot
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/local/python3/bin/ENV/bin/python /usr/local/python3/bin/ENV/p3.py &
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

ExecStart为服务启动时执行的命令,不能用相对路径, 一定要全路径。
这里也可以将命令写到任意的.sh文件中,这里写.sh文件的全路径也是可以的。

2.启用自定义系统服务

systemctl enable robot

3.启动服务

systemctl start robot

可以查看进程,确认一下服务是否启动

ps aux|grep robot
最后编辑:
作者:freeman
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据