部署python项目到linux服务器

最近用Python写了个外挂,需要部署到Linux环境的服务器上,由于之前本地开发时使用virtualenv,使用这个虚拟环境有个好处是项目中依赖的库不会是全局的,只在当前项目的目录下有效,因为我是Mac系统,virtualenv环境下的库文件和linux上所需要的库不通用,所以不能简单的将整个env拷贝到服务器运行,需要做一些额外的工作。

一般每个不同的项目都会依赖各自的库,有些库的版本不一样会引起冲突,为了解决这个问题,需要使用虚拟环境,Python可以在每个项目目录下创建各自的虚拟环境,项目所依赖的包就在环境目录下,这样避免了库版本的冲突,也方便相同操作系统间可以快速的拷贝项目运行。

我使用的是Python3编写的项目,CentOS 7的服务器上只有Python2,所以需要先安装一下Python3的环境

第一步:安装Python3环境

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

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

2.从官网下载python3的源码

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

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

1234
tar -xvJf  Python-3.6.2.tar.xzcd Python-3.6.2./configure prefix=/usr/local/python3make && make install

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

12345
ln -s /usr/local/python3/bin/python3 /usr/bin/python# 执行命令python -V #将会看到python3的版本# 执行命令python2 -V #将会看到python2的版本

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

123
vim /usr/bin/yumvim /usr/libexec/urlgrabber-ext-down#将 这两个文件的 #! /usr/bin/python修改为 #! /usr/bin/python2

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

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

1
pip3 freeze >requirements.txt

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

12345
certifi==2018.4.16chardet==3.0.4idna==2.7requests==2.19.1urllib3==1.23

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

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

1
#略...

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

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

1234567891011121314151617
# 安装虚拟环境pip3 install virtualenv

# 创建虚拟环境 ENVvirtualenv ENV

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

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

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

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

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

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

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

1.创建系统服务

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

内容如下:

1234567891011
[Unit]Description=robotAfter=network.target

[Service]Type=forkingExecStart=/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.启用自定义系统服务

1
systemctl enable robot

3.启动服务

1
systemctl start robot

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

1
ps aux|grep robot

完毕!

原文地址:https://www.cnblogs.com/grimm/p/11104562.html

时间: 2024-10-11 09:24:52

部署python项目到linux服务器的相关文章

Maven插件wagon-maven-plugin自动化部署Java项目到Linux远程服务器

通常情况下,程序开发完成后部署到线上Linux服务器,可能需要经历打包.将包文件传到服务器.SSH连上服务器.敲命令启动程序等一系列繁琐的步骤.实际上这些步骤都可以通过Maven的一个插件wagon-maven-plugin来自动完成. 配置Linux服务器用户名和密码 为了让wagon-maven-plugin插件能SSH连上Linux服务器,首先需要在Maven的配置文件settings.xml中配置好server的用户名和密码. <servers> <server> <

Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包

Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ©Copyright 蕃薯耀 2017年3月6日 http://www.cnblogs.com/fanshuyao/ 一.Linux快速部署W

mac 客户端远程部署项目到linux服务器

首先,你要知道远程服务1:IP或域名,2:用户名,密码 3:远程服务器已经装有ssh,下面分享下在mac客户端如何部署,window或其他客户端只是连接服务命令不同其他一样. 准备:远程服务器IP比如是555.555.55.555     用户名是:userlogin   密码是:password    要部署的项目名是:projectName 1.    登录到远程服务器(一般服务机都会提供ssh协议):ssh  [email protected] 2.    接下来会提示输入密码:passw

ubuntu 16.04部署python项目(Nginx+uwsgi+django)

尝试在linux上部署项目,先从最熟悉的python项目开始吧. 1.安装Nginx 命令:sudo apt-get install nginx 2.安装uwsgi,从pip仓库安装 命令:pip3 install uwsgi 3.把django项目移到服务器 通过这次操作才知道往linux上拖文件不能拖文件.因此需要打包一下才能移动文件.我这个云服务器默认支持的xxx.tar.gz格式的文件,但是在windows上压缩的时候只能压缩成zip的,所以这里有两个办法 1)在windows上安装一个

Jenkins部署到远程(Linux服务器)

接着上次的说,上次只是实现了本地自动化部署,这种情况只是针对开发环境和部署环境在同一台机器时适用.不过,一般情况下,我们都会要把项目部署到远程Linux服务器上,所以这节的主要内容是: 1.部署开发环境下的Web项目到远程Linux服务器: 2.实现自动备份: 准备环境: 本地开发,安装虚拟机,在虚拟机安装Linux服务器 步骤: 1.安装插件,登录到Jenkins后台,选择“系统管理”--->“管理插件”,在可选插件中,选择Publish Over SSH,安装这个插件: 2.安装完后,配置这

Jenkins部署Python项目实战

一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Jenkins强大的插件功能,轻松实现CI/CD,但如果部署多项目到同一台服务器涉及环境一致性问题,对此可以利用容器技术Docker解决,也可以利用Python虚拟环境例如virutalenv或conda等优秀等工具解决,在此由于后期根据requirements来安装依赖包比较慢,且后期需要将Pytho

使用docker 部署python 项目

使用python 开发了一个restfu api程序,使用docker镜像部署.主要有如下步骤,简单记录以供以后参考. 1. 创建DockerFile文件 创建一个DockerFile文件,文件名为Dockerfile,没有后缀名 内容如下: FROM centos/python-36-centos7 #设置什么镜像进行安装,示例docker基于python3.6和centos7,所有这里使用的是centos官方提供的镜像名称 #add code to code folder #设置code目录

把web项目部署到阿里云linux服务器上

最近弄了个试用阿里云服务器倒腾了半天终于部署好,分享一下. 1.登入阿里云打开你申请的是云服务器的实例: 点击重置密码---重置密码后重启服务器才能生效(一般需要重置密码.这里设置的密码是使用xhell等工具链接的密码,用户名为root) 2.点击更多--连接帮助(查看连接的IP)  3.记下ip(图中的实例后面的ip)和登入名root  4.我这连接使用xshell,其它的工具大同小异,大家自行下载  5.点击Xhell的new 新建连接  6.在host框填入第3步记下的ip其它不变  7.

部署WEB server项目到linux服务器中步骤

第一步:进入 外网ip cd /usr/tmp/ ls 查看列表 rm 删除旧的war包---> Y rz 上传war包 ssh 内网ip cd /usr/local/tomcat8/webapps/ ls 查看文件 cd 项目名 mv xx.war xx180505.war 将旧的war重命名 打开会话回到外网ip移动war: scp /usr/tmp/xx.war [email protected]内网ip:/usr/local/tomcat8/webapps/content/ ssh 内网