LoginSignup
7
11

More than 5 years have passed since last update.

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

Posted at

概要

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はいろいろ勝手に入っててくれるので環境構築が楽でした。
間違いがあればご指摘おねがします。

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11