最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)項(xiàng)目打包部署Linux服務(wù)器運(yùn)行方式

 更新時(shí)間:2026年04月28日 16:59:46   作者:徐哥在線(xiàn)  
文章主要介紹了Python項(xiàng)目的打包和部署,包括使用buildout打包和docker容器化部署,打包可生成exe文件或安裝包,部署可直接部署或使用docker,文中詳細(xì)介紹了每個(gè)步驟的實(shí)現(xiàn)方法和相關(guān)命令

前言

一個(gè)Python項(xiàng)目的完成后需要發(fā)布,這就涉及到打包和部署。項(xiàng)目可打包成可執(zhí)行的exe程序,或者打包成可通過(guò)命令安裝啟動(dòng)的安裝包。其中打包成可執(zhí)行文件工具用的最多的是pyinstaller,該工具支持windows和linux。

而打包成安裝包可以是setuptools來(lái)安裝,或者使用buildout進(jìn)行構(gòu)建。

而部署可以是直接部署,也可以是docker容器化部署,相比直接部署docker部署方式會(huì)省去一堆環(huán)境的配置,且輕量,啟動(dòng)快。

文章主要以buildout打包方式,和docker部署方式來(lái)實(shí)踐

一、項(xiàng)目打包

1.1.項(xiàng)目結(jié)構(gòu)

這里的案例是一個(gè)簡(jiǎn)單的python的web項(xiàng)目,先來(lái)看下項(xiàng)目的包文件結(jié)構(gòu)

alone-server/
├── common
│  ├── conf.txt
│  ├── config.py
│  ├── logger.py
│  ├── md5.py
│  └── mysql_connector.py
├── logs
└── app.py

1.2.本地打包Python項(xiàng)目依賴(lài)

在idea中的項(xiàng)目根目錄打開(kāi)Terminal,執(zhí)行以下命令(前提已經(jīng)配置好python環(huán)境),會(huì)在根目錄下生成requirements.txt依賴(lài)文件

pip freeze > requirements.txt

二、發(fā)布Linux上

2.1.部署方式

2.1.1.直接部署

文章主要介紹docker方式部署,所以直接部署方式這里就簡(jiǎn)單概括下主要步驟

1.服務(wù)器上安裝配置好python相關(guān)環(huán)境(這里就不展開(kāi)了,可以參考網(wǎng)上方式)

2.壓縮項(xiàng)目源碼為zip包,使用xshell+xftp方式上傳到服務(wù)器

3.服務(wù)器上解壓縮包,cd進(jìn)項(xiàng)目根目錄,執(zhí)行以下命令安裝依賴(lài),執(zhí)行命令可以看到正在下載文件中的各個(gè)依賴(lài),需要一定時(shí)間

pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com -r requirements.txt

4.運(yùn)行項(xiàng)目啟動(dòng)文件,執(zhí)行以下命令,執(zhí)行項(xiàng)目入口文件,我這里的入口文件為app.py,啟動(dòng)后就部署成功了,web可以進(jìn)行訪(fǎng)問(wèn)了

python app.py 

2.1.2.Docker部署

docker容器化部署需要一些準(zhǔn)備工作,如服務(wù)器安裝Docker,項(xiàng)目配置Dockerfile文件等

2.1.2.1.Linux安裝Docker

這里使用的是CentOS7系統(tǒng)。在系統(tǒng)中安裝Docker可以安裝系統(tǒng)中CentOS-Rxtras庫(kù)中已自帶有Docker(但不是最新版本,版本為1.13),也可以安裝指定版本,或者安裝最新的版本,由于前期自己測(cè)試中發(fā)現(xiàn)自帶得到Docker版本過(guò)低會(huì)帶來(lái)一定問(wèn)題,后期為了處理還作升級(jí)比較麻煩,所以采用的是指定版本安裝。

以下是三種安裝方式:

方式1:使用CentOS-Rxtras庫(kù)中已自帶有Docker直接安裝

yum install docker

方式2:安裝最新版本

(1)安裝基礎(chǔ)工具

yum -y install yum-utils device-mapper-persistent-data lvm2

(2)配置yum鏡像庫(kù)

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)安裝基礎(chǔ)工具

yum -y install yum-utils device-mapper-persistent-data lvm2

(2)配置yum鏡像庫(kù)

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 fast
yum list docker-ce.x86_64 --showduplicates | sort -r

(4)安裝指定版本

yum install docker-ce-19.03.13 -y

上述安裝后,查看版本信息確認(rèn)安裝成功,并設(shè)置開(kāi)機(jī)自啟動(dòng)

docker -v
systemctl start docker
systemctl enable docker
2.1.2.2.創(chuàng)建Dockerfile

一個(gè)docker容器的運(yùn)行基礎(chǔ)是鏡像,實(shí)際上鏡像就是代碼與運(yùn)行環(huán)境打包生成的。

docker創(chuàng)建鏡像有三種方式,分別是基于已有容器創(chuàng)建、基于本地模板創(chuàng)建、dockerfIile創(chuàng)建,這里就不一一贅述每種方式了,我采用的是dockerfile創(chuàng)建方式。

在項(xiàng)目根目錄創(chuàng)建Dockerfile,編寫(xiě)執(zhí)行腳本

# 設(shè)置基礎(chǔ)鏡像
FROM python:3.7
# 設(shè)置代碼文件夾工作目錄 /app
WORKDIR /app
# 復(fù)制當(dāng)前代碼文件到容器中 /app
ADD . /app
# 設(shè)置時(shí)間
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 安裝所需的包,這里的requirements文件名需和項(xiàng)目生成的一致
RUN pip install --trusted-host mirrors.tuna.tsinghua.edu.cn -r requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
# 執(zhí)行入口文件
CMD ["python", "app.py"]

2.1.2.3.壓縮打包上傳

(1)本地壓縮打包后綴名為.zip包

(2)上傳服務(wù)器

使用xhell+xftp(或其他工具)將包上傳到指定目錄

(3)解壓縮

cd 進(jìn)入文件上傳路徑,執(zhí)行解壓縮命令,unzip 包名。

這里需要系統(tǒng)已經(jīng)安裝了unzip,如未安裝會(huì)出現(xiàn)-bash: unzip: command not found的錯(cuò)誤,只要執(zhí)行命令: yum install -y unzip zip 進(jìn)行安裝就可以了

unzip alone-server.zip
2.1.2.4.生成鏡像

cd進(jìn)項(xiàng)目根目錄,app.py啟動(dòng)文件需要同Dockerfile放置在同一目錄下,執(zhí)行以下命令生成鏡像,注意命令后的 ‘.’ 符號(hào)指的是在當(dāng)前目錄下執(zhí)行創(chuàng)建,不要遺漏了該符號(hào)。創(chuàng)建會(huì)去執(zhí)行下載基礎(chǔ)鏡像和各個(gè)依賴(lài),需要等待一定時(shí)間。

docker build -t 鏡像名稱(chēng) .

2.1.2.5.啟動(dòng)容器

在我的項(xiàng)目中啟動(dòng)的端口是5002,在啟動(dòng)容器時(shí)候把該端口映射到9001,這樣我們就可以通過(guò)該端口訪(fǎng)問(wèn)項(xiàng)目了

docker run --name 容器名稱(chēng) -d -p 9001:5002 鏡像名稱(chēng)

通過(guò)ip和端口訪(fǎng)問(wèn)測(cè)試的接口,成功返回

另外,還可以通過(guò)以下幾個(gè)命令保存鏡像或者導(dǎo)入鏡像,進(jìn)入容器,退出容器等

docker save 容器id > 路徑文件名

導(dǎo)入本地鏡像

docker load -i 文件名.tar

進(jìn)入容器

docker exec -it 容器名 /bin/bash

退出容器

exit

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)合并兩個(gè)有序鏈表的方法示例

    Python實(shí)現(xiàn)合并兩個(gè)有序鏈表的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)合并兩個(gè)有序鏈表的方法,涉及Python操作鏈表節(jié)點(diǎn)的遍歷、判斷、添加等相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Python使用flask框架操作sqlite3的兩種方式

    Python使用flask框架操作sqlite3的兩種方式

    這篇文章主要介紹了Python使用flask框架操作sqlite3的兩種方式,結(jié)合實(shí)例形式分析了Python基于flask框架操作sqlite3數(shù)據(jù)庫(kù)的兩種常用操作技巧,需要的朋友可以參考下
    2018-01-01
  • numpy.where() 用法詳解

    numpy.where() 用法詳解

    這篇文章主要介紹了numpy.where() 用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 玩數(shù)據(jù)必備Python庫(kù)之numpy使用詳解

    玩數(shù)據(jù)必備Python庫(kù)之numpy使用詳解

    NumPy提供了許多高級(jí)的數(shù)值編程工具,如矩陣數(shù)據(jù)類(lèi)型、矢量處理,以及精密的運(yùn)算庫(kù),下面這篇文章主要給大家介紹了關(guān)于玩數(shù)據(jù)必備Python庫(kù)之numpy使用的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • python如何生成textgrid文件

    python如何生成textgrid文件

    這篇文章主要介紹了python如何生成textgrid文件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • 基于Python實(shí)現(xiàn)Hash算法

    基于Python實(shí)現(xiàn)Hash算法

    這篇文章主要介紹了基于Python實(shí)現(xiàn)Hash算法,最簡(jiǎn)單的hash算法是用取余的方式,根據(jù)hash地址存放數(shù)據(jù),這需要提供鍵值對(duì)Key地址,value是存放的數(shù)據(jù),下文相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • Python?numpy中的ndarray介紹

    Python?numpy中的ndarray介紹

    這篇文章主要介紹了Python?numpy中的ndarray,numpy?模塊通常被稱(chēng)為?matplotlib?模塊伴侶,numpy可以方便快捷地對(duì)大量數(shù)據(jù)進(jìn)行科學(xué)計(jì)算,為matplotlib?繪制圖表提供數(shù)據(jù),下面來(lái)看看文章內(nèi)容的詳細(xì)介紹吧
    2022-01-01
  • python導(dǎo)出hive數(shù)據(jù)表的schema實(shí)例代碼

    python導(dǎo)出hive數(shù)據(jù)表的schema實(shí)例代碼

    這篇文章主要介紹了python導(dǎo)出hive數(shù)據(jù)表的schema實(shí)例代碼,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Python中使用Flask、MongoDB搭建簡(jiǎn)易圖片服務(wù)器

    Python中使用Flask、MongoDB搭建簡(jiǎn)易圖片服務(wù)器

    這篇文章主要介紹了Python中使用Flask、MongoDB搭建簡(jiǎn)易圖片服務(wù)器,本文是一個(gè)詳細(xì)完整的教程,需要的朋友可以參考下
    2015-02-02
  • python監(jiān)控linux內(nèi)存并寫(xiě)入mongodb(推薦)

    python監(jiān)控linux內(nèi)存并寫(xiě)入mongodb(推薦)

    這篇文章主要介紹了python監(jiān)控linux內(nèi)存并寫(xiě)入mongodb的相關(guān)資料,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

博湖县| 武城县| 方正县| 平凉市| 五华县| 荆门市| 宁陕县| 镇赉县| 凤凰县| 孟津县| 汝城县| 清新县| 新竹县| 华阴市| 长泰县| 平顶山市| 阿克苏市| 星子县| 渝北区| 鄄城县| 宁河县| 望江县| 周至县| 江油市| 得荣县| 离岛区| 长海县| 河间市| 栾川县| 肥城市| 交城县| 郎溪县| 重庆市| 克拉玛依市| 定边县| 平谷区| 青海省| 分宜县| 平昌县| 广灵县| 建水县|