GNU/Linux >> Linux の 問題 >  >> Panels >> Panels

Ubuntu20.04にNginxとGunicornを使用してFlaskアプリケーションをデプロイする方法

Flaskは、Pythonで記述された、小型で軽量のマイクロWebフレームワークです。ツールやライブラリがなくても、Webアプリケーションを簡単に開発できます。このWebアプリケーションは、ブログ、Wikiページ、Webページ、Webベースのカレンダーアプリケーション、または商用Webサイトの場合があります。依存関係を必要としないため、シンプルで使いやすく、習得しやすく、初心者にも優しいです。

このチュートリアルでは、Ubuntu20.04にGunicornとNginxを使用してFlaskアプリケーションをデプロイする方法を示します。

前提条件
  • rootアクセスが有効になっているUbuntu20.04VPS、またはsudo権限を持つユーザー。
ログインしてパッケージを更新

まず、SSHを使用してサーバーにログインする必要があります。これを行うには、次のコマンドを入力します:

ssh root@IP_Address -p Port_Number

rootを忘れずに置き換えてください rootユーザーを使用していない場合は、ユーザー名を使用します。 IP_Addressを変更します およびPort_Number サーバーのIPアドレスとSSHポート番号に応じて。

ログインしたら、すべてのパッケージを最新の利用可能なバージョンに更新する必要があります。

apt-get update -y
apt-get upgrade -y

すべてのパッケージが最新になったら、サーバーを再起動して構成の変更を適用します。

必要な依存関係をインストールする

FlaskはPythonベースのアプリケーションです。したがって、Pythonおよびその他の必要な依存関係をサーバーにインストールする必要があります。インストールされていない場合は、次のコマンドを使用してすべてをインストールできます。

apt-get install python3 python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools -y

すべての依存関係がインストールされたら、次のコマンドを使用してPython仮想環境パッケージをインストールします。

apt-get install python3-venv -y

インストールしたら、次のステップに進むことができます。

NginxWebサーバーをインストールする

このチュートリアルでは、FlaskアプリケーションのリバースプロキシとしてNginxを使用します。そのため、NginxWebサーバーパッケージをサーバーにインストールする必要があります。次のコマンドを使用してインストールできます:

apt-get install nginx -y

Nginxがインストールされたら、次のコマンドを使用してNginxサービスを開始して有効にします。

systemctl start nginx
systemctl enable nginx
フラスコアプリケーション用の仮想環境を作成する

次に、Flaskアプリケーション用の仮想環境を作成する必要があります。

まず、次のコマンドを使用してプロジェクトディレクトリを作成します。

mkdir ~/project

次に、ディレクトリをプロジェクトに変更し、次のコマンドを使用してPython仮想環境を作成します。

cd ~/project
python3 -m venv venv

次に、次のコマンドを使用して環境をアクティブ化します。

source venv/bin/activate

次に、次のコマンドを使用して、Gunicorn、Flask、およびその他のコンポーネントをインストールします。

pip install wheel
pip install gunicorn flask

終了したら、次のステップに進むことができます。

フラスコアプリケーションを作成する

次に、プロジェクト用のサンプルFlaskアプリケーションを作成する必要があります。次のコマンドを実行して、プロジェクトディレクトリ内に作成します。

nano ~/project/flaskapp.py

次のコードを追加します:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Welcome to Flask Application!"
if __name__ == "__main__":
    app.run(host='0.0.0.0')

ファイルを保存して閉じ、次のコマンドでアプリケーションを確認します。

cd ~/project/
python3 flaskapp.py

すべてが正常であれば、次の出力が得られるはずです:

 * Serving Flask app 'flaskapp' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://69.28.84.227:5000/ (Press CTRL+C to quit)

CTRL+Cを押してアプリケーションを閉じます。

GunicornのWSGIエントリポイントを作成する

次に、Gunicornを介してアプリケーションを提供するためのWSGIエントリポイントを作成する必要があります。

次のコマンドを実行して作成します。

nano ~/project/wsgi.py

次の行を追加します:

from flaskapp import app
if __name__ == "__main__":
    app.run()

ファイルを保存して閉じ、以下のコマンドを使用してGunicornがアプリケーションを正しく提供できるかどうかを確認します。

cd ~/project/
gunicorn --bind 0.0.0.0:5000 wsgi:app

すべてが正常であれば、次の出力が得られるはずです:

[2021-12-23 10:37:15 +0000] [9352] [INFO] Starting gunicorn 20.1.0
[2021-12-23 10:37:15 +0000] [9352] [INFO] Listening at: http://0.0.0.0:5000 (9352)
[2021-12-23 10:37:15 +0000] [9352] [INFO] Using worker: sync
[2021-12-23 10:37:15 +0000] [9354] [INFO] Booting worker with pid: 9354

CTRL+Cを押してアプリケーションを停止します。次に、次のコマンドを使用してPython仮想環境から非アクティブ化します。

deactivate

Flaskアプリケーション用のSystemdサービスファイルを作成する

次に、Flaskアプリケーション用のsystemdユニットファイルを作成する必要があります。次のコマンドで作成できます:

nano /etc/systemd/system/flask.service

次の行を追加します:

[Unit]
Description=Gunicorn instance to serve Flask
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/project
Environment="PATH=/root/project/venv/bin"
ExecStart=/root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
[Install]
WantedBy=multi-user.target

ファイルを保存して閉じてから、フラスコプロジェクトに適切な所有権と権限を設定します。

chown -R root:www-data /root/project
chmod -R 775 /root/project

次に、次のコマンドを使用してsystemdデーモンをリロードします。

systemctl daemon-reload

次に、フラスコサービスを開始し、システムの再起動時に開始できるようにします。

systemctl start flask
systemctl enable flask

次に、次のコマンドを使用してフラスコのステータスを確認します。

systemctl status flask

出力:

● flask.service - Gunicorn instance to serve Flask
     Loaded: loaded (/etc/systemd/system/flask.service; disabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-12-23 10:38:26 UTC; 8s ago
   Main PID: 9376 (gunicorn)
      Tasks: 2 (limit: 2353)
     Memory: 27.8M
     CGroup: /system.slice/flask.service
             ├─9376 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app
             └─9393 /root/project/venv/bin/python3 /root/project/venv/bin/gunicorn --bind 0.0.0.0:5000 wsgi:app

Dec 23 10:38:26 ubuntu2004 systemd[1]: Started Gunicorn instance to serve Flask.
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Starting gunicorn 20.1.0
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Listening at: http://0.0.0.0:5000 (9376)
Dec 23 10:38:26 ubuntu2004 gunicorn[9376]: [2021-12-23 10:38:26 +0000] [9376] [INFO] Using worker: sync
Dec 23 10:38:26 ubuntu2004 gunicorn[9393]: [2021-12-23 10:38:26 +0000] [9393] [INFO] Booting worker with pid: 9393

NginxをFlaskアプリケーションのリバースプロキシとして構成する

次に、ポート80を介してFlaskアプリケーションにサービスを提供するために、Nginxをリバースプロキシとして構成する必要があります。これを行うには、Nginx仮想ホスト構成ファイルを作成します。

nano /etc/nginx/conf.d/flask.conf

次の行を追加します:

server {
    listen 80;
    server_name flask.example.com;
    location / {
        include proxy_params;
        proxy_pass  http://127.0.0.1:5000;
    }
}

ファイルを保存して閉じ、構文エラーがないかNginxを確認します:

nginx -t

次の出力が表示されます。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最後に、Nginxサービスを再起動して、変更を適用します。

systemctl restart nginx
アクセスフラスコアプリケーション

この時点で、Flaskアプリケーションがインストールされ、構成され、Nginxプロキシでホストされます。これで、URL http://flask.example.comを使用してアクセスできます。 。次のページが表示されます:

おめでとう! Ubuntu20.04サーバーにGunicornとNginxを使用してFlaskアプリケーションを正常にデプロイしました。

ただし、マネージドUbuntuホスティングのお客様の1人である場合、またはマネージドVPSホスティングプランのいずれかを使用している場合は、Ubuntu20.04VPSにFlaskアプリケーションをインストールする必要はありません。リラックス。私たちの管理者は、FlaskアプリケーションをUbuntu 20.04(または私たちが持っている他のOS)にすぐにインストールします。

PS。 Ubuntu 20.04 VPSにFlaskアプリケーションをインストールする方法に関するこの投稿が気に入った場合は、下のボタンを使用してソーシャルネットワーク上の友達と共有するか、コメントセクションにコメントを残してください。ありがとう。


Panels
  1. Ubuntu20.04でGooglePageSpeedを使用してNginxをインストールする方法

  2. Ubuntu20.04LTSでNginxを使用してModsecurityをデプロイする方法

  3. Ubuntu20.04にNginxを使用してPHP7.4をインストールする方法

  1. Ubuntuにpm2とNginxを使用してNode.jsアプリケーションをデプロイする方法

  2. Ubuntu11.10にPHP5とMySQLを使用してNginxをインストールする方法

  3. Ubuntu 20.04でPostgres、Nginx、Gunicornを使用してDjangoをセットアップする方法

  1. Ubuntu16.04にPostgreSQLとNginxを使用してDjangoをインストールする方法

  2. Ubuntu18.04LTSにNginxを使用してGitBucketをインストールする方法

  3. Ubuntu 22.04 に NVM と Nginx を使用して Node.js をインストールする方法