さくらインターネットでFlaskのアプリケーション実行環境を構築するには

さくらインターネットのレンタルサーバーでFlaskアプリを動かすには、いくつかの工夫が必要です。以下に基本的な構築手順をまとめました🛠️


🌐 基本構成の概要

さくらのレンタルサーバー(スタンダードプランなど)では、常駐プロセスが使えないため、FlaskアプリはCGI経由で動かす必要があります。


📁 ディレクトリ構成とファイル

以下のような構成にします:

/home/ユーザー名/www/hello/
├── .htaccess
├── app.py
└── index.cgi


🔧 各ファイルの内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /hello/index.cgi/$1 [QSA,L]

<Files ~ "\\\\.py$">
  deny from all
</Files>

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return "Hello, Sakura Internet!"

#!/usr/local/bin/python
import cgitb
cgitb.enable()

from wsgiref.handlers import CGIHandler
from app import app

class ProxyFix:
    def __init__(self, app):
        self.app = app
    def __call__(self, environ, start_response):
        return self.app(environ, start_response)

if __name__ == '__main__':
    app.wsgi_app = ProxyFix(app.wsgi_app)
    CGIHandler().run(app)


🛠️ 補足設定