Ameba Ownd

アプリで簡単、無料ホームページ作成

適当に過ごす日常blog

FlaskをとりあえずWebサーバにするまで

2020.04.26 03:33

先週、インストールのエントリを書いた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が変わりました。この状態でもブラウザからアクセスできない、といった問題があるようなら、サーバのパケットフィルタを確認してみてください。