Lolipopサーバーにサブドメインでpythonのflask環境を構築する方法

Python

Lolipopサーバーでpythonのflask環境を構築するのに躓いた。

  • Lolipopサーバーを使ってflaskをサブドメインで運用したい
  • 下記のURLの記事とかだとうまく構築できなかった。
  • Lolipopサーバーでは、flaskはcgiモードで動かすことになるため色々設定が必要です。
ロリポップ!でpythonのpipを導入し、Flaskの環境を構築する | dattesar

なぜLolipopサーバー?

  • 安くflask環境を構築するためにLolipopサーバーを選びました。
  • Lolipopサーバーのメリット・デメリットをちょこっと書いてみた。まぁ価格を考えるとかなり優秀だと思います。
メリット
  • 安い。
  • pythonが最初からサーバーに入っている。
  • WordPressの移行が簡単

デメリット
  • 共用サーバー

Lolipopサーバーにflask環境を構築する方法

  • 基本的には、下記のURLをベースに構築していき、差異のある部分を紹介します。
ロリポップ!でpythonのpipを導入し、Flaskの環境を構築する | dattesar
.htaccess
  • このファイルの差異は、サブドメインで運用するために生まれたかもしれない。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]
CGI — Flask Documentation (1.1.x)
index.cgi
#!/home/users/0/*****/web/******/venv/bin/python3
# 上記はvenv内のpython3を設定した。
# flask環境は、webフォルダ直下のサブドメイン設定の公開フォルダに格納しています。

# coding:utf-8
import cgitb
cgitb.enable()
from wsgiref.handlers import CGIHandler
from app import app


class ProxyFix(object):
  def __init__(self, app):
      self.app = app

  def __call__(self, environ, start_response):
      environ['SERVER_NAME'] = "***.snuow.com" # サブドメインを入力
      environ['SERVER_PORT'] = "80"
      environ['REQUEST_METHOD'] = "GET"
      environ['SCRIPT_NAME'] = ""
      #environ['PATH_INFO'] = "/"         # コメントアウト
      environ['QUERY_STRING'] = ""
      environ['SERVER_PROTOCOL'] = "HTTP/1.1"
      return self.app(environ, start_response)


if __name__ == '__main__':
   app.wsgi_app = ProxyFix(app.wsgi_app)
   CGIHandler().run(app)
  • このあたりを参考に改良しました。
【さくらレンタルサーバー】flaskを使ってみる。 - Qiita
はじめに レンタルしたさくらレンタルサーバー(スタンダードプラン)に、APIサーバーを立てようと思ってflaskを使ってみる。(さくらレンタルサーバでは常駐デーモンプロセスは許可されていないため、注意が必要) 詰まった点もあった...
権限設定
  • 権限設定がLolipopサーバーの推奨設定になっていないと動きません。
権限設定
  • 権限の設定の詳細は公式サイト(下記)で確認してください。
CGI・SSI・PHP・SENDMAILについて / サーバー・プログラム / マニュアル - レンタルサーバーならロリポップ!
ロリポップ!レンタルサーバーのご利用マニュアル ロリポップ!レンタルサーバーでのCGIなどのプログラムに必要な設定などを説明したマニュアルページです。
chmod 700 index.cgi
chmod 705 static
chmod 705 templates
chmod 705 venv
chmod 600 app.py # 644でも動作確認

サブドメイン
  • サブドメインは下記のように設定
  • Lolipopサーバーのコントロールパネルで設定できます。
  • 公開フォルダは、サーバーのwebフォルダ配下に生成されるので、そこにFlask環境を一式入れます。

参考URL

CGI — Flask Documentation (1.1.x)
Flask開発環境 Debug Mode -Errorになる例も
1. Development Mode (1) ファイル名: test.py # coding: utf-8 from flask import Flask app = Flask(__name__) @app.route('/') @app.route('/...
【さくらレンタルサーバー】flaskを使ってみる。 - Qiita
はじめに レンタルしたさくらレンタルサーバー(スタンダードプラン)に、APIサーバーを立てようと思ってflaskを使ってみる。(さくらレンタルサーバでは常駐デーモンプロセスは許可されていないため、注意が必要) 詰まった点もあった...


コメント

タイトルとURLをコピーしました