• 部署python项目到linux服务器


    第一步:安装Python3环境

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

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

    2.从官网下载python3的源码

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

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

    1 tar -xvJf  Python-3.6.2.tar.xz
    2 cd Python-3.6.2
    3 ./configure prefix=/usr/local/python3
    4 make && make install
    View Code

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

    1 ln -s /usr/local/python3/bin/python3 /usr/bin/python
    2 # 执行命令
    3 python -V #将会看到python3的版本
    4 # 执行命令
    5 python2 -V #将会看到python2的版本
    View Code

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

    1 vim /usr/bin/yum
    2 vim /usr/libexec/urlgrabber-ext-down
    3 #将 这两个文件的 #! /usr/bin/python修改为 #! /usr/bin/python2
    View Code

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

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

    1 pip3 freeze >requirements.txt
    View Code

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

    1 requests==2.19.1
    2 urllib3==1.23
    View Code

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

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

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

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

     1 # 安装虚拟环境
     2 pip3 install virtualenv
     3 
     4 # 创建虚拟环境 ENV
     5 virtualenv ENV
     6 
     7 # 切换到虚拟环境所在的目录
     8 cd ENV
     9 
    10 # 启用虚拟环境
    11 source ./bin/activate
    12 
    13 # 安装依赖清单里的库
    14 pip3 install -r requirements.txt
    15 
    16 # 列出当前虚拟环境所安装的依赖库
    17 pip3 list
    View Code

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

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

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

    1.创建系统服务

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

    内容如下:

     1 [Unit]
     2 Description=robot
     3 After=network.target
     4  
     5 [Service]
     6 Type=forking
     7 ExecStart=/usr/local/python3/bin/ENV/bin/python /usr/local/python3/bin/ENV/p3.py &
     8 PrivateTmp=true
     9  
    10 [Install]
    11 WantedBy=multi-user.target
    View Code

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

    2.启用自定义系统服务

    1 systemctl enable robot
    View Code

    3.启动服务

    1 systemctl start robot
    View Code

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

    1 ps aux|grep robot
    View Code
  • 相关阅读:
    2018.5.27 OraclePLSQL编程 if-else练习和循环结构练习
    桶排序
    从函数中返回引用
    函数返回值
    参数传递模式
    计数排序(不基于比较的排序算法)
    快排序
    堆用作优先队列
    堆排序
    合并算法
  • 原文地址:https://www.cnblogs.com/wangjian941118/p/10267810.html
Copyright © 2020-2023  润新知