部署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.依次执行 解压>进入解压后的目录>编译安装
1 |
tar -xvJf Python-3.6.2.tar.xz |
4.安装完毕,创建软连接
1 |
ln -s /usr/local/python3/bin/python3 /usr/bin/python |
5.后续工作,由于执行CentOS的yum命令需要使用自带的python2的版本,所以需要做两处修改
1 |
vim /usr/bin/yum |
第二步:将本地开发环境的依赖项目生成清单文件
1.在本地的开发环境中,env下执行:
1 |
pip3 freeze >requirements.txt |
清单文件将会生成在当前项目目录下,内容如下所示
1 |
certifi==2018.4.16 |
将生成后的文件上传到linux服务器
2.将Python项目上传到服务器
1 |
#略... |
第三步:在linux服务器上为项目创建虚拟环境,并安装项目所需的依赖
1.切换到pip3所在的目录 /usr/local/python/bin,执行以下命令
1 |
# 安装虚拟环境 |
第四步:添加自定义系统服务(很重要)
1 |
# 这样的命令在ssh终端退出后,python进程也会被杀掉 |
需要创建一个自定义的系统服务,来保证python程序能够在后台运行。
1.创建系统服务
1 |
vim /usr/lib/systemd/system/robot.service |
内容如下:
1 |
[Unit] |
ExecStart为服务启动时执行的命令,不能用相对路径, 一定要全路径。
这里也可以将命令写到任意的.sh文件中,这里写.sh文件的全路径也是可以的。
2.启用自定义系统服务
1 |
systemctl enable robot |
3.启动服务
1 |
systemctl start robot |
可以查看进程,确认一下服务是否启动
1 |
ps aux|grep robot |
完毕!
部署python项目到linux服务器的更多相关文章
- 部署vue项目到Linux服务器
案例一 vue-cli构建vue3项目,将项目上传到Linux服务器,服务器安装node,并启动vue项目 首先本地有一个vue项目,启动后可正常访问 本地打包后,也可直接访问 若打包后的index. ...
- 部署web前端的react项目到linux服务器
部署web前端的react项目到linux服务器 项目的目录结构 ``` ├─dlls #dlls编译后的问题 ├─doc #帮助文件入口 │ ├─src │ ├─apps #各个功能模块放在这里 │ ...
- Docker如何部署Python项目
Docker 部署Python项目 作者:白宁超 2019年5月24日09:09:00 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如 ...
- 笔记14:Docker 部署Python项目
Docker 部署Python项目 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取 ...
- Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包
Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...
- Django项目在Linux服务器上部署和躺过的坑
引言 在各方的推荐下,领导让我在测试环境部署之前开发的测试数据预报平台.那么问题来了,既然要在服务器上部署, 就需要准备: 1.linux服务器配置 2.linux安装python环境搭建与配置 3. ...
- 云服务器部署Python项目(nginx+uwsgi+mysql+项目)
python项目部署到云服务器 关注公众号"轻松学编程"了解更多. 一.硬件准备 云服务器,系统ubuntu_16_04 . 注意:要在安全组中开放Http的80端口. 二.软件准 ...
- 部署Springboot项目到Linux云服务器
前言 环境:IDEA.Springboot.Maven(自己电脑安装的Maven) 一.打包jar包 检查自己的pom.xml文件下面有无Maven的依赖插件,即有无如下: <build> ...
- Jenkins部署到远程(Linux服务器)
接着上次的说,上次只是实现了本地自动化部署,这种情况只是针对开发环境和部署环境在同一台机器时适用.不过,一般情况下,我们都会要把项目部署到远程Linux服务器上,所以这节的主要内容是: 1.部署开发环 ...
随机推荐
- 微信小程序开发——base64位图片显示问题
前言: 目前小程序项目需要后端借口提供验证码图片,后端是以base64位返回的,按照H5的做法,前边拼上 data:image/png;base64, 应该就可以了,关键代码如下: H5: <i ...
- 几个支持 FreeSWITCH 的网络电话的安装与使用(linphone、MicroSIP、Sipdroid)
Ubuntu 安装 Linphone 安装命令 apt-get install linphone 安装完成后,在应用程序 --> 互联网 下就能看到 linphone,打开后注册 注意:linp ...
- oracle 中decode的用法
select decode(gg1.group_goods_amount, , , gg1.group_goods_amount) ; 这句话的意思是:如果group_goods_amount为0 则 ...
- LeetCode_414. Third Maximum Number
414. Third Maximum Number Easy Given a non-empty array of integers, return the third maximum number ...
- teamviewer破解版
简介 TeamViewer是一个能在任何防火墙和NAT代理的后台用于远程控制的应用程序,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamView ...
- MySQL之表约束
MySQL表约束 约束是一种限制,它通过对表的行或者列的数据做出限制,来确保表数据的完整性和唯一性. 在mysql当中一般有一下这几种约束: 非空约束. 唯一约束. 主键约束. 自增长. 默认约束. ...
- 使用win10自带虚拟光驱打开ISO镜像文件
使用win10自带虚拟光驱打开ISO镜像文件非常的简单. 工具/原料 电脑 win10系统 方法/步骤 第一种方法,双击ISO文件.打开“我的电脑”,打开所要打开的ISO文件所在的目录,双击要 ...
- Graphviz(02) 汉字subgraph不显示汉字的处理
1.按照官方教程设置 2.如果还不显示,在不显示的汉字前面加上一个“空格”,汉字就会正常显示. digraph idp_modules{ rankdir = TB; fontname = " ...
- 第14章 Salesforce标准对象
14.1 Sales Cloud基本信息 Sales Cloud 会为您提供管理业务的一切功能.生成最佳潜在客户.通过销售漏斗管理业务机会,并使用现有客户培养关系.以及,预测收入.设置销售区域,并将代 ...
- jmeter_分布式测试
背景: 由于Jmeter本身的瓶颈,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误.要解决这个问题,可以使用分布式实测 ...