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で起動しているのでしょう。(←本当にわかっていない)その気持ち悪さが残ります。
けれど、知ってる人に聞かずにググってなんとかたどり着けたので、自分で自分を褒めたい。