最近写了个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

https://stackoverflow.com/questions/33320889/invalid-command-wsgidaemonprocess-deploy-django-application-on-centos-6-7

https://www.lulutong.net.cn/?p=61

https://blog.csdn.net/anchui6644/article/details/101125644

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注