GCEでApacheにWSGI経由のflaskを建てるまで(後半)

久しぶりにWSGIを再開です。
すっかりわすr・・・

前回の復習(どこまでやったっけ)

WSGI用のモジュールをインストールして、起動し、ブラウザでWSGI単独で動くウィスキー(ウィズギー)の中の蛇を見るところまで。
まだFlaskは関係なくて、純粋なWSGIの稼働を確認しました。

再開の準備(思い出しつつ)

GCEでVMインスタンスを選択して、起動。ついでに、SSHのプルダウンから、「ブラウザウィンドウで開く」を選んで、SSH画面を開いておきます。

GCPの全体のメニューからVPCネットワーク>ファイアウォール。
前半で作った、port 8000 を有効にします。(なんとなく無効にしてたので)

------

後半開始!

Flaskを準備

pythonのモジュールにFlaskがないので、pipインストールします。

その前に、pythonのバージョンいくつかな?と下記で確認。

$ python -V
Python 2.7.5

$ python3 -V
Python 3.6.8

うっかりpythonで起動させちゃうと、2系が動きます。あぶない。

Flaskをpipインストール。3系に入れたいので、pip3します。

$ sudo su
# pip3 install flask

rootユーザーじゃないとエラーになったので、suで切り替えてからのpip3でした。

Flaskのソースはないので(?)適当に作ります。(急に手作り感)↓

# vi my_flask_site.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
 return 'Hello! I am WSGI!'

あとこれを蹴っ飛ばす用のソースも作成。↓

# vi my_flask_kicker.py
import sys
import os
sys.path.insert(0, os.getcwd())
from my_flask_site import app as application

サイトの準備ができたので、サーバーを起動!
(rootだと、パスの問題かなんかで起動できないので、exitで元のユーザーに戻ってます)

# exit
$ mod_wsgi-express start-server my_flask_kicker.py

ブラウザでアクセスして・・・きききたーー!
なかなか遠い道のりでしたが、ここでゴール。

Flaskでサイトを作ったら、ファイル一式をコピーして、このkickerみたいのを作ればよさげです。

上には恥ずかしくて書いていませんが、kickerを使わずに直でファイルを指定してたので、しばらくハマっておりました。mod_wsgi-express を起動するときに、ログファイルのパスとかも丁寧に出るので、それを見たりググったりして、解決できました。躓いている方はログファイルを見てみてください。

-----

所感

いろいろなサイトを見ながら、ここに書いてないエラーも乗り越え、訳のわからないことを見て見ぬふりしてなんとかできましたが、一番気になっているのは、mod_wsgi-expressというモジュール。expressだけに本当はもっと面倒な手順があって、今回の方法の何かでそれを短縮して、mod_wsgi-expressで起動しているのでしょう。(←本当にわかっていない)その気持ち悪さが残ります。

けれど、知ってる人に聞かずにググってなんとかたどり着けたので、自分で自分を褒めたい。

いいなと思ったら応援しよう!