Python项目打包与Linux服务器部署实践:从buildout到Docker
前言
一个Python项目开发完成后,需要发布上线,这就涉及打包和部署两个环节。项目可以打包成可执行的exe程序,也可以打包成可通过命令安装启动的安装包。其中,打包成可执行文件最常用的工具是PyInstaller,该工具支持Windows和Linux平台。而打包成安装包可以使用setuptools进行安装,或者使用buildout进行构建。
部署方式既可以选择直接部署,也可以采用Docker容器化部署。相比直接部署,Docker部署省去了大量环境配置工作,且更轻量、启动更快。
本文主要以buildout打包方式和Docker部署方式展开实践。
一、项目打包
1.1 项目结构
这里以一个简单的Python Web项目为例,先来看项目的包文件结构:
alone-server/
├── common/
│ ├── conf.txt
│ ├── config.py
│ ├── logger.py
│ ├── md5.py
│ └── mysql_connector.py
├── logs/
└── app.py1.2 本地打包Python项目依赖
在IDE的项目根目录打开Terminal,执行以下命令(前提是已配置好Python环境),会在根目录下生成requirements.txt依赖文件:
pip freeze > requirements.txt
二、发布到Linux
2.1 部署方式
2.1.1 直接部署本文主要介绍Docker方式部署,直接部署方式这里简单概括主要步骤:
- 在服务器上安装配置好Python相关环境。
- 将项目源码压缩为zip包,使用xshell+xftp上传到服务器。
- 在服务器上解压,进入项目根目录,执行以下命令安装依赖:
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com -r requirements.txt执行命令后可以看到正在下载各个依赖,需要一定时间。
- 运行项目启动文件,执行以下命令(入口文件为app.py),启动后即部署成功,Web服务可访问:
python app.py2.1.2 Docker部署Docker容器化部署需要一些准备工作,如服务器安装Docker、项目配置Dockerfile等。
2.1.2.1 Linux安装Docker这里使用的是CentOS 7系统。系统中CentOS-Extras库自带Docker(版本为1.13,非最新),也可以安装指定版本或最新版本。由于自带版本过低可能带来问题,后期升级较麻烦,本文采用指定版本安装。
以下是三种安装方式:
方式1:使用CentOS-Extras库直接安装
yum install docker方式2:安装最新版本
(1)安装基础工具:
yum -y install yum-utils device-mapper-persistent-data lvm2(2)配置yum镜像库:
yum-config-manager --add-repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(3)安装最新版本:
yum install docker-ce方式3:指定版本安装
(1)安装基础工具:
yum -y install yum-utils device-mapper-persistent-data lvm2(2)配置yum镜像库:
yum-config-manager --add-repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(3)查看可安装版本信息:
yum makecache fastyum list docker-ce.x86_64 --showduplicates | sort -r<img src="/uploadfile/2026/1010/$1
原文链接:本站整理
本文来自互联网用户投稿,该文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 service@2cto.cc 进行投诉反馈,一经查实,立即处理!
您可能感兴趣的文章:
下一篇:Python执行多行cmd命令:单&与双&&的区别详解