ホームページ  >  記事  >  バックエンド開発  >  Python Web 開発における自動デプロイメント スキル (パート 2)

Python Web 開発における自動デプロイメント スキル (パート 2)

王林
王林オリジナル
2023-06-17 10:45:531119ブラウズ

Python Web 開発がますます多くのプロジェクトで使用されるようになるにつれて、自動デプロイメントは不可欠な部分になっています。前編では、Python Web アプリケーションの基本的なデプロイ方法と関連ツールの使用方法について説明しました。この記事では、展開タスクをより効率的に完了できるように、さらに高度な自動展開テクニックをいくつか紹介していきます。

1. Fabric を使用して展開を自動化する

Fabric は、コマンドの実行を自動化し、ローカルまたはリモート マシンでシェル スクリプトを実行するための Python ライブラリです。これにより、展開プロセスがより自動化され、複雑な展開操作が簡素化されます。以下はサンプル コードです。

from fabric import Connection
from invoke import Responder

def deploy():
    c = Connection(host='server_name', user='username', connect_kwargs={"password": "password"})
    sudo_pass = Responder(pattern=r'[sudo] password:', response='password
')
    c.run('sudo apt-get update', pty=True, watchers=[sudo_pass])
    c.run('sudo apt-get install -y nginx', pty=True, watchers=[sudo_pass])
    c.put('path/to/local/folder', '/path/to/remote/folder')
    c.run('sudo service nginx restart', pty=True, watchers=[sudo_pass])

上の例は、Fabric を使用して Python Web アプリケーションを自動的にデプロイするサンプル コードです。まず、いくつかのコマンドをローカルからリモート サーバーに送信し、次にいくつかのインストールおよび構成操作を実行して、ローカル ファイルをリモート サーバーにアップロードします。

sudo コマンドを実行するときは、Responder サブライブラリを使用して sudo パスワードの入力を処理する必要があることに注意してください。

2. Docker コンテナのデプロイメントを使用する

Docker は、アプリケーションのデプロイと管理をより簡単に行うのに役立つオープン ソースのアプリケーション コンテナ エンジンです。 Docker を使用すると、アプリケーション全体とそのすべての依存関係をコンテナーにパッケージ化し、Docker エンジンをサポートする任意のプラットフォーム上で実行できます。以下は、Docker を使用して Python Web アプリケーションをデプロイする例です。

FROM python:3.6.4-alpine3.7

RUN mkdir /app
WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

上記の Dockerfile の例は、python:3.6.4-alpine3.7 イメージに基づいて構築されたファイルです。まず、requirements.txt ファイルをコンテナにコピーし、コンテナ内で pip install を実行して、アプリケーションのすべての依存関係をインストールします。次に、アプリケーション全体をコンテナにコピーし、コンテナ内のポート 8000 を公開します。最後に、ポート 8000 で Django アプリケーションを実行します。

このようにして、Docker を使用して Python Web アプリケーションをデプロイできます。管理が簡単なだけでなく、さまざまな環境へのアプリケーションのデプロイも簡単になります。

3. 自動化された CI/CD に Jenkins を使用する

Jenkins は、開発者がアプリケーションを迅速に構築、テスト、配信、デプロイできるようにする、人気のあるオープンソース CI/CD 自動化ツールです。 Git、Docker、その他の開発ツールに統合して、コードを自動的に構築してテストし、テストに合格したコードを自動的にデプロイすることができます。以下は、CI/CD に Jenkins を使用する例です。

  1. Jenkins ジョブの作成

「Python Web App」という名前の Jenkins ジョブを作成し、実行します。ビルド トリガーの「SCM のポーリング」オプションにより、Git リポジトリに新しいコミットがあるときにアプリケーションを自動的にビルドしてデプロイします。

  1. Jenkinsfile の書き込み

プロジェクトのルート ディレクトリに「Jenkinsfile」という名前のファイルを作成し、次のコマンドを指定します。

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'docker build -t python:latest .'
            }
        }
        stage('Test') {
            steps {
                sh 'docker run --rm python:latest python manage.py test'
            }
        }
        stage('Deploy') {
            steps {
                sshagent(['my-ssh-key']) {
                    sh 'ssh user@server "docker-compose down && docker-compose up -d"'
                }
            }
        }
    }
}

This Jenkinsfile You Jenkins にアプリケーションの構築方法、テストの実行方法、コードのデプロイ方法を指示できます。 「デプロイ」フェーズでは、SSH を使用してリモート サーバーに接続し、Docker Compose を使用してアプリケーションをデプロイします。

  1. Jenkins ビルドの開始

Jenkinsfile と Jenkins ジョブを構成したら、自動化された CI/CD に Jenkins の使用を開始できます。 Git リポジトリに新しいコードを送信するだけで、Jenkins が新しい送信を自動的に検出し、アプリケーションを自動的にビルド、テスト、デプロイします。

概要:

Python Web 開発では、自動デプロイメントは非常に重要なタスクです。この記事では、Fabric、Docker、Jenkins などのツールを使用して Python Web アプリケーションのデプロイを自動化するためのテクニックをいくつか紹介します。これらの手法により、アプリケーションをより効率的にデプロイし、開発効率とコードの品質を向上させることができます。これらのヒントがお役に立てば幸いです。

以上がPython Web 開発における自動デプロイメント スキル (パート 2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。