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