Webアプリ: Flaskを使用
Flaskとは?
FlaskはPythonの軽量なWebフレームワークで、Webアプリケーションを簡単に作成できます。HTMLを使ってブラウザ上に表示します。
コード例
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_python():
return "<h1>Hello Python</h1>"
if __name__ == "__main__":
app.run(debug=True)
動作説明
Flask
を使ってWebサーバーを立ち上げ、@app.route("/")
でルートURLにアクセスしたときに「Hello Python」を返すWebページを作成しています。- ブラウザで
http://localhost:5000
にアクセスすると、「Hello Python」が表示されます。
Flaskで作ったWebアプリケーションをレンタルサーバーにアップロードして運用する手順を説明します。レンタルサーバーは、多くの場合、共用サーバー(Apache、Nginxなどがインストールされている)で運用されていることが多いため、Flaskアプリを動かすにはいくつかのステップが必要です。
ステップ1: レンタルサーバーの選択
Flaskアプリケーションを運用するためには、PythonとWSGI(Web Server Gateway Interface)をサポートしているレンタルサーバーが必要です。以下の点を確認しましょう:
- Pythonのバージョンが利用可能か(FlaskはPython 3.6以上を推奨)
- WSGI対応(一般的には
mod_wsgi
、または他のWSGIサーバーが利用可能) - SSHアクセスが可能か(必要に応じてサーバー設定をカスタマイズするため)
もしPython対応の共用サーバーがない場合、VPS(仮想専用サーバー)や、クラウドサービス(例: AWS、Heroku、Google Cloud)も検討できます。
ステップ2: Flaskアプリの準備
以下のようなシンプルなFlaskアプリがあるとします(例: app.py
)。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Flask!'
if __name__ == '__main__':
app.run()
ステップ3: 必要なファイルを準備
- requirements.txt を作成します。これには、Flaskを含む必要なパッケージを記載します。
flask
- WSGIファイル を作成します。多くのレンタルサーバーでは、
mod_wsgi
を使用してFlaskアプリを実行するので、WSGIファイルが必要です。たとえば、以下の内容でapp.wsgi
というファイルを作成します。import sys import logging logging.basicConfig(stream=sys.stderr) sys.path.insert(0, '/path/to/your/app') from app import app as application
sys.path.insert(0, '/path/to/your/app')
は、あなたのFlaskアプリがあるディレクトリのパスに書き換えてください。
ステップ4: レンタルサーバーにアップロード
- FTPまたはSFTPを使用してアップロード
- レンタルサーバーにアプリケーションファイル(
app.py
、requirements.txt
、app.wsgi
など)をアップロードします。サーバーのドキュメントルートや設定によっては、アップロード先が異なるため、サーバーの指示に従います。
- レンタルサーバーにアプリケーションファイル(
- SSHアクセスでサーバーにログイン(可能な場合)
- SSHでサーバーにログインします。これにより、サーバー上でPython仮想環境をセットアップし、必要なパッケージをインストールする作業が可能です。
ステップ5: Python仮想環境をセットアップ
サーバー上にアプリケーションをアップロードしたら、Pythonの仮想環境をセットアップします。
- Python仮想環境の作成
python3 -m venv venv
- 仮想環境を有効化
source venv/bin/activate
- 必要なパッケージをインストール 仮想環境を有効にした状態で、
requirements.txt
からパッケージをインストールします。pip install -r requirements.txt
ステップ6: サーバーのWSGI設定
多くのレンタルサーバーでは、FlaskアプリケーションをWSGIを使って動作させるために、ApacheまたはNginxを設定します。一般的な手順は以下の通りです。
Apache(mod_wsgiを使用)の場合
- Apache設定ファイルの編集
app.wsgi
ファイルを指すように、Apacheの設定を変更します。例えば、/etc/apache2/sites-available/000-default.conf
に以下のように設定を追加します。<VirtualHost *:80> ServerName your-domain.com WSGIDaemonProcess yourapp python-home=/path/to/your/app/venv python-path=/path/to/your/app WSGIScriptAlias / /path/to/your/app/app.wsgi <Directory /path/to/your/app> Require all granted </Directory> Alias /static /path/to/your/app/static <Directory /path/to/your/app/static> Require all granted </Directory> </VirtualHost>
- Apacheの再起動 設定ファイルを編集したら、Apacheを再起動します。
sudo service apache2 restart
Nginx + uWSGIの場合
- NginxとuWSGIのセットアップ uWSGIとNginxを使う場合は、Nginxの設定にuWSGIを組み込みます。uWSGI設定とNginxの設定を行い、それぞれをリンクさせます。
ステップ7: 動作確認
ブラウザでサーバーのURLにアクセスし、Flaskアプリが正常に動作しているか確認します。
- 例: http://your-domain.com/
まとめ
- Flaskアプリの準備: 必要なファイル(
app.py
、requirements.txt
、app.wsgi
)を準備。 - サーバーにアップロード: FTP/SFTPを使用してレンタルサーバーにアップロード。
- Python環境のセットアップ: 仮想環境を作成し、必要なパッケージをインストール。
- サーバー設定: ApacheやNginxを使ってFlaskアプリケーションをWSGI経由で動作させる。
- ブラウザで動作確認: ドメインにアクセスして動作確認。
この手順で、Flaskアプリケーションをレンタルサーバーで運用できます。
単に .py
ファイルをアップロードするだけでは動作しないことが多いです。特にFlaskのようなWebアプリケーションの場合は、サーバー側の設定や環境構築が必要です。その理由を簡単に説明します。
1. Webサーバーとアプリケーションの連携
通常のレンタルサーバーにはApacheやNginxのようなWebサーバーが稼働していますが、これらのWebサーバーはPythonコードをそのまま実行できません。Webサーバーは基本的にHTMLやCSS、画像ファイルをクライアントに配信する役割を持っていますが、Flaskアプリのような動的な処理を行うプログラムには対応していません。
そのため、WSGI(Web Server Gateway Interface)という標準的なプロトコルを使って、WebサーバーとFlask(PythonのWebアプリケーション)を連携させる必要があります。これは、ApacheやNginxに「このPythonコードを適切に実行して結果を返してね」という指示を出すための橋渡し役を果たすものです。
2. Python環境の整備
Flaskアプリケーションが依存するライブラリやモジュール(Flask自体やその他のPythonパッケージ)が存在しないと、アプリは正しく動作しません。多くのレンタルサーバーはPythonがインストールされていますが、Flaskやその依存パッケージがプリインストールされているわけではないため、仮想環境を作成して、自分のアプリに必要なライブラリをインストールする必要があります。
3. アプリケーションの自動起動
Pythonファイルをアップロードしても、サーバー上で自動的に実行されるわけではありません。Flaskアプリはサーバーの一部として動作させるために、サーバーが起動するたびに正しく実行されるようにWSGIやuWSGIなどの設定が必要です。これにより、アプリケーションが常時動作し、外部からのアクセスに対して即座に応答できるようになります。
4. セキュリティや最適化
単にPythonコードをアップロードして実行するだけではなく、セキュリティ設定やパフォーマンスの最適化も必要です。レンタルサーバー上でFlaskアプリを安全かつ効率的に動作させるには、適切な権限設定、エラーハンドリング、キャッシュの利用などが求められます。
まとめると:
- 単純なファイルアップロード ではFlaskアプリは動作しません。
- WebサーバーとFlaskの連携(WSGI設定) が必要。
- Pythonの仮想環境と必要なライブラリのインストール が必要。
- サーバー設定とセキュリティ対策 も重要。
これらの手順を踏むことで、FlaskアプリケーションがWeb上で正しく動作するようになります。