Apache + uWSGI + Flask でHello World! @Amazon Linux 2

Apache + uWSGI + Flask でHello World! @Amazon Linux 2:


概要

Nginxを使いたかったけど既存環境がNginxでなかったので、Apacheを使ってFlaskを動かした話。

EC2の立ち上げについては他記事に投げてますすいません。


環境

  • AMI : 4.14.62-70.117.amzn2.x86_64
  • Apache : 2.4.34
  • uWSGI : 2.0.17.1
  • Python :2.7.14


EC2

ここら辺を読むとわかります。

AWSでWebサーバー構築!EC2を作成してSSH接続する(第3回)
https://miyabi-lab.space/blog/15


Apache

EC2を建てると既にApahce2がインストールされているのでそのまま利用しました。

また、

/etc/httpd/conf.modules.d/00-proxy.conf

を見ると必要なモジュールが既に存在しているのでこれもそのまま利用。

LoadModule proxy_http_module modules/mod_proxy_http.so ←コレ 
LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so 
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so 
LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so ←コレ 
リバースプロキシの設定を以下のようにし、/etc/conf.d/flask.confとして保存しました。

ProxyRequests Off //フォワードプロキシoff 
ProxyPass /hoge uwsgi://127.0.0.1:8930 //転送設定 
ProxyPassReverse /hoge uwsgi://127.0.0.1:8930  
詳しい説明は以下で、

Apache 2.4 で リバースプロキシの設定
https://qiita.com/gingi99/items/83c1fb07644cd232d91e


uWSGI

以下のように最小限の設定にし、uwsgi.iniとして保存。

[uwsgi] 
socket = 127.0.0.1:8930 #上記のProxyPassに合った設定を 
module = app   #app.pyならapp main.pyならmainを設定する 
callable = app #moduleで設定したファイル内のこの名前→app = Flask(__name__)  
master = True  #子プロセスが死んでもそれを蘇生する親プロセスを立ち上げる否かのフラグ 
Quickstart for Python/WSGI applications
https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html


Flask

上記uwsgi.iniの設定通りにapp.pyを作成

from flask import Flask 
 
app = Flask(__name__) 
 
@app.route('/') 
def upload(): 
    return 'Hello World!' 
 
if __name__ == '__main__': 
    app.run() 


実行

こんなディレクトリ構成になりました。

. 
├── app.py 
└── uwsgi.ini 
apache再起動して、uWSGIを実行します。

sudo service httpd restart 
uwsgi --ini uwsgi.ini 
curlコマンドで確認して出てました。

curl http://example.com/hoge 
Hello World! 
以上、Amazon Linux 2はいろいろ勝手に入っててくれるので環境構築が楽でした。

間違いがあればご指摘おねがします。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)