技術共有

Linux 環境での Python Web サービスのデプロイ

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ここに画像の説明を挿入します

「お嬢ちゃん、また会えるかどうかは運次第だよ。知らないふりしないでね。『久しぶり』って言っても震えないで…」

Python で記述されたバックエンド API を Linux 環境にデプロイするには、以下の詳細な手順に従うことができます。この記事では、環境の準備、API の作成、WSGI サーバーとしての Gunicorn の使用、リバース プロキシとしての Nginx の構成、およびサービスの管理のための Systemd の使用について説明します。

1. 環境を準備する

Pythonをインストールする

Linux システムに Python がインストールされていない場合は、次のコマンドを使用してインストールできます。

sudo yum update
sudo yum install python3 python3-pip
  • 1
  • 2

必要なライブラリをインストールする

Flask または Django フレームワークを使用していると仮定して、まず必要なライブラリをインストールします。

pip3 install flask  # 如果你使用的是 Flask
pip3 install django  # 如果你使用的是 Django
  • 1
  • 2

2. APIコードを書く

フラスコの例

簡単な Flask API の例を作成します。

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api', methods=['GET'])
def api():
    return jsonify({'message': 'Hello, World!'})

if __name__ == '__main__':
    app.run(host='0.0.0.0')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

ジャンゴの例

新しい Django プロジェクトを作成し、API を追加します。

django-admin startproject myproject
cd myproject
django-admin startapp myapp
  • 1
  • 2
  • 3

存在する myapp/views.py API ビューを次の場所に追加します。

from django.http import JsonResponse
def api(request):
    return JsonResponse({'message': 'Hello, World!'})
  • 1
  • 2
  • 3

存在する myproject/urls.py URL ルーティングを以下で構成します。

from django.contrib import admin
from django.urls import path
from myapp.views import api

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', api),
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. 方法 1 - 直接起動

開発環境またはテスト環境でアプリケーションをすばやく開始するには、アプリケーションを直接実行します。

python main.py 或者 nohup python main.py
  • 1
ジャンゴの例:

Django には独自の開発サーバーがあり、以下から開始できます。

python manage.py runserver 0.0.0.0:8000
  • 1

本番環境では Gunicorn を使用することをお勧めします。 本番環境でアプリケーションのパフォーマンスと安定性を確保するには、Gunicorn を使用することをお勧めします。ガンイコーン アプリケーション サーバーとして、Python コードの実行とマルチプロセス管理を処理します。

4. 方法 2 - Gunicorn を構成する (運用環境の WSGI サーバー)

Gunicorn をインストールする

Gunicorn をインストールします。

pip3 install gunicorn
  • 1

Flask アプリケーションを実行する

Gunicorn を使用して Flask アプリケーションを実行します。

gunicorn --bind 0.0.0.0:8000 app:app
  • 1

Django アプリケーションを実行する

Gunicorn を使用して Django アプリケーションを実行します。

gunicorn --bind 0.0.0.0:8000 myproject.wsgi:application
  • 1

5. Nginx をリバース プロキシとして使用する

nginxをインストールする

Nginx をインストールします。

sudo yum install nginx
  • 1

Nginxの構成

設定ファイルを編集する /etc/nginx/sites-available/default

server {
    listen 80;
    server_name your_domain_or_IP;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Nginx 設定をリロードします。

sudo systemctl restart nginx
  • 1

6. Systemd を使用して Gunicorn を管理する

Systemdサービスファイルの作成

新しい Systemd サービス ファイルを作成します。

sudo vim /etc/systemd/system/myproject.service
  • 1

サービス構成の追加

フラスコアプリケーション
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=your_user
Group=www-data
WorkingDirectory=/path/to/your/project
ExecStart=/usr/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 app:app

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
ジャンゴアプリケーション

意思 ExecStart 行を次のように変更します。

ExecStart=/usr/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 myproject.wsgi:application
  • 1

サービスを開始して有効にする

サービスを開始して有効にします。

sudo systemctl start myproject
sudo systemctl enable myproject
  • 1
  • 2

7. サービスステータスの確認

サービスが実行されていることを確認します。

sudo systemctl status myproject
  • 1

このようにして、Python API が Linux 環境に正常にデプロイされます。特定のプロジェクトのニーズに合わせて、必要に応じて構成を調整できます。この詳細なガイドがお役に立てば幸いです。