โดยโปรเจคนี้ต้องการใช้ firebase ซึ่งมี pyrebase เป็นตัว warpper API ในการ รับส่งข้อมูล
และ pyrebase พัฒนาบน python3 ด้วยเหตุนี้ จึงจำเป็นต้องไป python3
GAE flex รองรับ python3 แต่ ด้วยราคาที่ลองใช้ดูแล้วตก $85 (3,000THB) ต่อเดือน เปรียบเทียบแล้ว ย้ายกลับมาใช้ EC2 freetier ดีกว่า
โดยเราสามารถ ย้าย code ที่เขียนอยู่บน GAE มาได้เลย โดยปรับนิดหน่อย
มี app.yaml ที่ไม่ต้องใช้ นอกนั้น copy มาได้หมดเลย
สิ่งที่เตรียมเพิ่มสำหรับการใช้งาน flask on EC2
sudo yum install mod24_wsgi-python35
เมื่อพร้อมแล้ว ไปสร้าง directory ไว้ที่
mkdir /var/www/flaskapp
สร้าง virtual environment เตรียมไว้ โดยลง package สำหรับ application
virtualenv -p python3 py3 source py3/bin/activate pip install -r requirements.txt* requiements.txt คือ ไฟล์ที่บอกว่า application ต้องลง package อะไรเพิ่มบ้าง หากไม่มีก็ไม่ต้องใช้
นำ source code มาวางไว้ใต้ path นี้ แล้ว สร้างไฟล์ใหม่เพิ่มอีก 1 ไฟล์ เพื่อเรียกใช้ wsgi
vi /var/www/flaskapp/deploy.wsgi
##############################################
import sys,os,site
# Add virtualenv site packages
site.addsitedir(os.path.join(os.path.dirname(__file__), 'py3/local/lib/python3.5/site-packages'))
site.addsitedir(os.path.join(os.path.dirname(__file__), 'py3/local/lib64/python3.5/site-packages'))
# Path of execution
sys.path.append('/var/www/flaskapp')
activate_env = os.path.expanduser(os.path.join(os.path.dirname(__file__), 'py3/bin/activate_this.py'))
exec(compile(open(activate_env,"rb").read(),activate_env,'exec'), dict(__file__=activate_env))
from flaskapp import app as application
สร้างไฟล์สำหรับ port 80 ให้มาเรียกใช้ flask
vi /etc/httpd/conf.d/vhost.conf
##############################################
<VirtualHost *:80>
ServerName flask.yuunai.com
WSGIDaemonProcess flaskapp threads=5 user=ec2-user home=/var/www/flaskapp
WSGIScriptAlias / /var/www/flaskapp/deploy.wsgi
<Directory /var/www/flaskapp>
WSGIProcessGroup flaskapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
ServerName ใส่อะไรก็ได้
จากนั้น restart service httpd
sudo service httpd restart
ลองเรียกใช้งานผ่านหน้าเวป (^_^)v