การ deploy Flask App บน production server

สำหรับ Apache2 ให้ติดตั้ง WSGI

sudo apt-get install libapache2-mod-wsgi-py3
sudo a2enmod wsgi

โครงสร้างของ flask app

├── FlaskApp
    ├── flaskapp.wsgi
    └── FlaskApp
        ├── static
        ├── venv
        ├── templates
        └── __init__.py

ตัวอย่าง flaskapp.wsgi

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")

from FlaskApp import app as application
application.secret_key = 'your secret key'

ตัวอย่างปรับ conf ใน Apache2

<VirtualHost *:80>
            ServerName yourdomain.com
            ServerAdmin youemail@email.com
            WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
            <Directory /var/www/FlaskApp/FlaskApp/>
                    Order allow,deny
                    Allow from all
            </Directory>
            Alias /static /var/www/FlaskApp/FlaskApp/static
            <Directory /var/www/FlaskApp/FlaskApp/static/>
                    Order allow,deny
                    Allow from all
            </Directory>
            ErrorLog ${APACHE_LOG_DIR}/error.log
            LogLevel warn
            CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

เป็น Best Practice เลยที่ควรจะใช้ virtualenv บน production server ด้วย

ให้ใส่บรรทัดด้านล่างนี้ในส่วนบนสุดของไฟล์ .wsgi

activate_this = '/path/to/env/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))


เครดิต:
http://leonwang.me/post/deploy-flask
http://flask.pocoo.org/docs/0.12/deploying/mod_wsgi/#installing-mod-wsgi

Author: boon

Leave a Reply

Your email address will not be published. Required fields are marked *