在apache2上部署flask程序
最近写了个flask小的后端api,向部署到apache2上,没想到坑还挺多,折腾了半天。
我的场景是在xxx.com:80端口已经跑了一个php的网站,现在我想在xxx.com:6666部署一个flask的后端api
首先需要安装
sudo apt-get install apache2-dev
这个安装好了以后才能
pip3 install mod_wsgi
然后确定你flask的python版本
apt-get install libapache2-mod-wsgi #if you are using python2
apt-get remove libapache2-mod-wsgi-py3 #if you are using python3
必要一些东西安装好了以后,需要找个网站的路径,比如/var/www/xxx吧,在其中放入flask程序,再新建一个xxx.wsgi,其中内容为(假设flask app所在的文件名为xxx_app.py,)
import sys
sys.path.insert(0, '/var/www/xxx')
from xxx_app import app as application
网站的内容放好以后,开始配置apache2
在/etc/apache2/sites-available中创建新的文件xxx.conf,内容大概如下
<VirtualHost *:6666>
ServerName xxx.com:6666
WSGIDaemonProcess xxx threads=5 home=/var/www/xxx
WSGIScriptAlias / /var/www/xxx/xxx.wsgi
WSGIScriptReloading On
<Directory /var/www/xxx>
WSGIProcessGroup xxx
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/xxx_error.log
CustomLog ${APACHE_LOG_DIR}/xxx_access.log combined
</VirtualHost>
还要在/etc/apache2/ports.conf文件中加入一句
Listen 6666
然后执行
a2ensite xxx
service apache2 restart
即可
以上内容基于回忆,所以不一定对,仅供参考
参考的一些资料如下:
http://www.pythondoc.com/flask/deploying/mod_wsgi.html
https://modwsgi.readthedocs.io/en/latest/configuration-directives/WSGIDaemonProcess.html