FlaskをとりあえずWebサーバにするまで
先週、インストールのエントリを書いたflaskですが、入れた以上はまずはサーバとして起動するところまでいかなくては。とりあえず、トップページでtestと返すだけのサーバ。
①
これは、flaskとは何ら関係ありません。私の趣味。これがあると、python3のコマンドを明示的に指定しなくてもLinuxのシェルから起動できる、という効果だけです。この行がない状態で、chmod 755 server.pyなどで実行権をつけても
エラーになります。このファイルがpython3向けのプログラムであることをLinux(正確にはbashやdash)が知らないためです。これをshellが理解できるようにするのが、先頭の#!です。ここにpython3のパスを書くことで、
と、明示的に指定しなくても実行できます。もちろん、実行権は設定してください。
②
fromとimportですが、これは、flaskモジュール利用するための宣言で、これがないと、利用することができません。
③
インスタンスを定義します。__name__は、python3の予約語で、pythonで起動されたファイルに記載されている場合は、__name__には__main__が設定され、importで指定したファイルの場合は、そのファイルの名前(モジュール名)になります。サンプルとして次のようなコマンドを実行してみます。
最初の出力は、__main__、testfunc.py内のabcの出力は、testfuncになっています。
④
ここは、コンテンツを示しており、@app.route('URLのパス')を宣言します。それに続いて、パスへのアクセスがあったときに実行される関数を定義します。関数内では、DBへアクセスしたりPOSTされたデータを解析する等、様々なpythonの処理を定義できます。いったん、ここでは"test\n"を返すページとして定義しています。
⑤
app.runで実際にflaskを実行するところですが、先に__name__が__main__かどうかチェックしています。③で示したとおり、このファイルが実行ファイルなのか、インポートされたファイルかをチェックし、実行された本体のファイル(__main__)であれば、flaskアプリケーションとして実行する、という流れです。
さて、これを実行すると、
となります。ここに書かれているとおり、URLはhttp://127.0.0.1:5000/です。デフォルトのportが5000?これでは、ブラウザでテストするにしても都合が悪い場合もあると思います。なので、ちょいと設定を追加します。
hostでlistenするIPアドレス、portで待ち受けするポートを指定します。IPアドレスに0.0.0.0を指定した場合は、サーバが持つすべてのIPアドレスで待ち受けることを意味します。この状態で起動すると、
URLが変わりました。この状態でもブラウザからアクセスできない、といった問題があるようなら、サーバのパケットフィルタを確認してみてください。