如何将python项目部署到服务器_部署python项目到linux服务器

第一步:安装Python3环境

1.首先安装编译环境(后续需要从python官网获取Python3的源码自己编译python)

ContractedBlock.gif

ExpandedBlockStart.gif

1 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

View Code

2.从官网下载python3的源码

ContractedBlock.gif

ExpandedBlockStart.gif

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

View Code

3.依次执行 解压>进入解压后的目录>编译安装

ContractedBlock.gif

ExpandedBlockStart.gif

1 tar -xvJf Python-3.6.2.tar.xz2 cd Python-3.6.2

3 ./configure prefix=/usr/local/python34 make && make install

View Code

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

ContractedBlock.gif

ExpandedBlockStart.gif

1 ln -s /usr/local/python3/bin/python3 /usr/bin/python2 #执行命令

3 python -V #将会看到python3的版本

4 #执行命令

5 python2 -V #将会看到python2的版本

View Code

5.后续工作,由于执行CentOS的yum命令需要使用自带的python2的版本,所以需要做两处修改

ContractedBlock.gif

ExpandedBlockStart.gif

1 vim /usr/bin/yum2 vim /usr/libexec/urlgrabber-ext-down3 #将 这两个文件的 #! /usr/bin/python修改为 #! /usr/bin/python2

View Code

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

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

ContractedBlock.gif

ExpandedBlockStart.gif

1 pip3 freeze >requirements.txt

View Code

清单文件将会生成在当前项目目录下,内容如下所示

ContractedBlock.gif

ExpandedBlockStart.gif

1 requests==2.19.1

2 urllib3==1.23

View Code

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

2.将Python项目上传到服务器

第三步:在linux服务器上为项目创建虚拟环境,并安装项目所需的依赖

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

ContractedBlock.gif

ExpandedBlockStart.gif

1 #安装虚拟环境

2 pip3 install virtualenv3

4 #创建虚拟环境 ENV

5 virtualenv ENV6

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

8 cd ENV9

10 #启用虚拟环境

11 source ./bin/activate12

13 #安装依赖清单里的库

14 pip3 install -r requirements.txt15

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

17 pip3 list

View Code

第四步:添加自定义系统服务(很重要)

ContractedBlock.gif

ExpandedBlockStart.gif

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

2 python xxx.py &

View Code

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

1.创建系统服务

ContractedBlock.gif

ExpandedBlockStart.gif

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

View Code

内容如下:

ContractedBlock.gif

ExpandedBlockStart.gif

1 [Unit]2 Description=robot3 After=network.target4

5 [Service]6 Type=forking7 ExecStart=/usr/local/python3/bin/ENV/bin/python /usr/local/python3/bin/ENV/p3.py &

8 PrivateTmp=true9

10 [Install]11 WantedBy=multi-user.target

View Code

ExecStart为服务启动时执行的命令,不能用相对路径, 一定要全路径。

这里也可以将命令写到任意的.sh文件中,这里写.sh文件的全路径也是可以的。

2.启用自定义系统服务

ContractedBlock.gif

ExpandedBlockStart.gif

1 systemctl enable robot

View Code

3.启动服务

ContractedBlock.gif

ExpandedBlockStart.gif

1 systemctl start robot

View Code

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

ContractedBlock.gif

ExpandedBlockStart.gif

1 ps aux|grep robot

View Code

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值