UbuntuVPSにFlaskアプリケーションをデプロイする方法
ハイライトの意味
このチュートリアルでは、ユーザーが入力またはカスタマイズする必要のある行はhighlighedになります。 残りはほとんどコピーアンドパスタブルである必要があります。
序章
Flaskは、Pythonで記述されたマイクロフレームワークであり、Webアプリケーションを開発するためのWerkzeugおよびJinja2テンプレートエンジンに基づいています。 これは、Webアプリを迅速に開発することを目的としています。
設定
ApacheがVPSにインストールされ、実行されている必要があります。 そうでない場合は、UbuntuへのLAMPスタックのインストールに関する記事のステップ1に従ってください。
ステップ1-mod_wsgiをインストールして有効にする
WSGI(Web Server Gateway Interface)は、Python用のWebサーバーとWebアプリ間のインターフェイスです。 Mod_wsgiは、ApacheがFlaskアプリケーションを提供できるようにするApacheHTTPサーバーmodです。
ターミナルを開き、次のコマンドを入力してmod_wsgiをインストールします。
sudo apt-get install libapache2-mod-wsgi python-dev
mod_wsgiを有効にするには、次のコマンドを実行します。
sudo a2enmod wsgi
ステップ2–Flaskアプリを作成する
このステップでは、フラスコアプリを作成します。 アプリを/var /wwwディレクトリに配置します。
次のコマンドを使用して、/ var/wwwディレクトリに移動します。
cd /var/www
図のように、mkdirを使用してアプリケーションディレクトリ構造を作成します。 “FlaskApp” を、アプリケーションに付ける名前に置き換えます。 次のコマンドを実行して、初期ディレクトリFlaskAppを作成します。
sudo mkdir FlaskApp
次のコマンドを使用して、このディレクトリ内に移動します。
cd FlaskApp
次のコマンドを実行して、別のディレクトリFlaskAppを作成します。
sudo mkdir FlaskApp
次に、このディレクトリ内に移動し、次のコマンドを使用してstaticおよびtemplatesという名前の2つのサブディレクトリを作成します。
cd FlaskApp
sudo mkdir static templates
ディレクトリ構造は次のようになります。
|----FlaskApp |---------FlaskApp |--------------static |--------------templates
次に、フラスコアプリケーションロジックを含む __init__。pyファイルを作成します。
sudo nano __init__.py
次のロジックをファイルに追加します。
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello, I love Digital Ocean!" if __name__ == "__main__": app.run()
ファイルを保存して閉じます。
ステップ3–フラスコをインストールする
仮想環境をセットアップすると、アプリケーションとその依存関係がメインシステムから分離されたままになります。 これを変更しても、クラウドサーバーのシステム構成には影響しません。
このステップでは、フラスコアプリケーション用の仮想環境を作成します。
pipを使用してvirtualenvとFlaskをインストールします。 pip がインストールされていない場合は、apt-getを使用してUbuntuにインストールします。
sudo apt-get install python-pip
virtualenv がインストールされていない場合は、 pip を使用して、次のコマンドを使用してインストールします。
sudo pip install virtualenv
次のコマンドを入力します( venv は、一時的な環境に付ける名前です)。
sudo virtualenv venv
次に、次のコマンドを使用して仮想環境をアクティブ化することにより、その環境にFlaskをインストールします。
source venv/bin/activate
次のコマンドを実行して、Flaskを内部にインストールします。
sudo pip install Flask
次に、次のコマンドを実行して、インストールが成功し、アプリが実行されているかどうかをテストします。
sudo python __init__.py
「Runningonhttp:// localhost:5000/」または「Runningonhttp://127.0.0.1:5000/」と表示されます。 このメッセージが表示された場合は、アプリが正常に構成されています。
環境を非アクティブ化するには、次のコマンドを実行します。
deactivate
ステップ4–新しい仮想ホストを構成して有効にする
端末で次のコマンドを発行します。
sudo nano /etc/apache2/sites-available/FlaskApp
注:新しいバージョンのUbuntu(13.10+)では、VirtualHostファイルに「.conf」拡張子が必要です。代わりに次のコマンドを実行してください。
sudo nano /etc/apache2/sites-available/FlaskApp.conf
次のコード行をファイルに追加して、仮想ホストを構成します。 必ずServerNameをドメインまたはクラウドサーバーのIPアドレスに変更してください。
<VirtualHost *:80> ServerName mywebsite.com ServerAdmin [email protected] WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi <Directory /var/www/FlaskApp/FlaskApp/> Order allow,deny Allow from all </Directory> Alias /static /var/www/FlaskApp/FlaskApp/static <Directory /var/www/FlaskApp/FlaskApp/static/> Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
ファイルを保存して閉じます。
次のコマンドで仮想ホストを有効にします。
sudo a2ensite FlaskApp
ステップ5–.wsgiファイルを作成する
Apacheは、.wsgiファイルを使用してFlaskアプリを提供します。 / var / www / FlaskApp ディレクトリに移動し、次のコマンドを使用して flaskapp.wsgiという名前のファイルを作成します。
cd /var/www/FlaskApp sudo nano flaskapp.wsgi
次のコード行をflaskapp.wsgiファイルに追加します。
#!/usr/bin/python import sys import logging logging.basicConfig(stream=sys.stderr) sys.path.insert(0,"/var/www/FlaskApp/") from FlaskApp import app as application application.secret_key = 'Add your secret key'
これで、ディレクトリ構造は次のようになります。
|--------FlaskApp |----------------FlaskApp |-----------------------static |-----------------------templates |-----------------------venv |-----------------------__init__.py |----------------flaskapp.wsgi
ステップ6–Apacheを再起動します
次のコマンドでApacheを再起動して、変更を適用します。
sudo service apache2 restart
次のようなメッセージが表示される場合があります。
Could not reliably determine the VPS's fully qualified domain name, using 127.0.0.1 for ServerName
このメッセージは単なる警告であり、それ以上の問題なしに仮想ホストにアクセスできるようになります。 アプリケーションを表示するには、ブラウザーを開き、仮想ホスト構成で入力したドメイン名またはIPアドレスに移動します。
これで、フラスコアプリケーションが正常にデプロイされました。