January 22, 2016

Python3のFlaskをwsgiで動かす

自分の環境ではdocker上で動かしていましたが、本筋には影響を与えないので省略します。

Flaskのドキュメントであるmod_wsgi (Apache)に書いてあるし、Python2の頃は試したことあるから、余裕だろうと油断していた。


sudo apt-get install -y apache2 \

    apache2-mpm-prefork \

    apache2-utils \

    libexpat1 \

    ssl-cert \

    libapache2-mod-wsgi-py3

上のようにインストールした。

また、

/etc/apache2/sites-available/000-default.conf


<VirtualHost *:80>

ServerName example.com

WSGIDaemonProcess app user=www-data group=www-data

WSGIScriptAlias / /app/app.wsgi

<Directory /app>

WSGIProcessGroup app

WSGIApplicationGRoup %{GLOBAL}

# Order deny,allow

# Allow from all

Require all granted

</Directory>

</VirtualHost>

にします。dockerで動かすだけなので、ファイルを直に編集しています。

ハマりポイント1

libapache2-mod-wsgi-py3をインストールする。

パッケージ名から想像できるが、wsgiはPython3とPython2系で異なる。

ハマりポイント2

apacheの設定では、

Require all grantedを使う。

Python2系では、

Order deny,allow

Allow from all

で良かった。

http://stackoverflow.com/questions/30642894/getting-flask-to-use-python3-apache-mod-wsgiに救われました。

ちなみにPyttho2系の時は、Flaskでhttpsを使うに書きましたので参考にどうぞ。

© gepuro 2013