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

Python實現(xiàn)項目打包部署Linux服務器運行方式

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

前言

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

而打包成安裝包可以是setuptools來安裝,或者使用buildout進行構建。

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

文章主要以buildout打包方式,和docker部署方式來實踐

一、項目打包

1.1.項目結構

這里的案例是一個簡單的python的web項目,先來看下項目的包文件結構

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

1.2.本地打包Python項目依賴

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

pip freeze > requirements.txt

二、發(fā)布Linux上

2.1.部署方式

2.1.1.直接部署

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

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

2.壓縮項目源碼為zip包,使用xshell+xftp方式上傳到服務器

3.服務器上解壓縮包,cd進項目根目錄,執(zhí)行以下命令安裝依賴,執(zhí)行命令可以看到正在下載文件中的各個依賴,需要一定時間

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

4.運行項目啟動文件,執(zhí)行以下命令,執(zhí)行項目入口文件,我這里的入口文件為app.py,啟動后就部署成功了,web可以進行訪問了

python app.py 

2.1.2.Docker部署

docker容器化部署需要一些準備工作,如服務器安裝Docker,項目配置Dockerfile文件等

2.1.2.1.Linux安裝Docker

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

以下是三種安裝方式:

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

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

(4)安裝指定版本

yum install docker-ce-19.03.13 -y

上述安裝后,查看版本信息確認安裝成功,并設置開機自啟動

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

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

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

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

# 設置基礎鏡像
FROM python:3.7
# 設置代碼文件夾工作目錄 /app
WORKDIR /app
# 復制當前代碼文件到容器中 /app
ADD . /app
# 設置時間
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 安裝所需的包,這里的requirements文件名需和項目生成的一致
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)上傳服務器

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

(3)解壓縮

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

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

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

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

docker build -t 鏡像名稱 .

2.1.2.5.啟動容器

在我的項目中啟動的端口是5002,在啟動容器時候把該端口映射到9001,這樣我們就可以通過該端口訪問項目了

docker run --name 容器名稱 -d -p 9001:5002 鏡像名稱

通過ip和端口訪問測試的接口,成功返回

另外,還可以通過以下幾個命令保存鏡像或者導入鏡像,進入容器,退出容器等

docker save 容器id > 路徑文件名

導入本地鏡像

docker load -i 文件名.tar

進入容器

docker exec -it 容器名 /bin/bash

退出容器

exit

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

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

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

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

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

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

    numpy.where() 用法詳解

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

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

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

    python如何生成textgrid文件

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

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

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

    Python?numpy中的ndarray介紹

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

    python導出hive數(shù)據表的schema實例代碼

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

    Python中使用Flask、MongoDB搭建簡易圖片服務器

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

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

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

最新評論

岳阳市| 柯坪县| 本溪| 房产| 正安县| 运城市| 安丘市| 兴文县| 五家渠市| 沅江市| 和龙市| 武威市| 广灵县| 抚松县| 庆元县| 永泰县| 达孜县| 沾益县| 治县。| 江安县| 浙江省| 西平县| 太和县| 铜陵市| 临西县| 互助| 宕昌县| 黄平县| 溆浦县| 桐城市| 靖远县| 平南县| 通州市| 高邑县| 双流县| 德安县| 阿勒泰市| 宜良县| 灵石县| 东莞市| 大石桥市|