在同一个 apache 服务器上运行 django 和 flask

Posted

技术标签:

【中文标题】在同一个 apache 服务器上运行 django 和 flask【英文标题】:Running django and flask on same apache server 【发布时间】:2012-03-10 13:36:57 【问题描述】:

我正在尝试。

WSGISocketPrefix /var/www/wsgi
<VirtualHost *:80>
        ServerAdmin name@email.com
        ServerName  domain.com
        ServerAlias www.domain.com
        DocumentRoot /var/www/
        LogLevel warn
        WSGIDaemonProcess apache processes=2 maximum-requests=500 threads=1
        WSGIProcessGroup apache
        Alias /media /var/www/media/

        WSGIScriptAlias / /var/www/djangoapps/django.wsgi
        WSGIScriptAlias /app1 /var/www/flaskapps/app.wsgi
</VirtualHost>
    第一个WSGIScriptAlias 在根目录下运行一个django 应用程序:domain.com。 WSGIScriptAlias 的第二个实例需要在子域中运行烧瓶应用程序:app1

但是由于主站点位于 django 上,当我尝试点击:domain.com/app1 时,django 的 urls.py 尝试处理该 url 命令。但是 urls.py 不应该处理它,因为它是一个独立的烧瓶应用程序。

任何想法我该怎么做?

【问题讨论】:

【参考方案1】:

我不确定这是否能解决问题,但您是否尝试过更改脚本别名的顺序,以便在 / 之前找到 /app1

WSGISocketPrefix /var/www/wsgi
<VirtualHost *:80>
        ServerAdmin name@email.com
        ServerName  domain.com
        ServerAlias www.domain.com
        DocumentRoot /var/www/
        LogLevel warn
        WSGIDaemonProcess apache processes=2 maximum-requests=500 threads=1
        WSGIProcessGroup apache
        Alias /media /var/www/media/
        WSGIScriptAlias /app1 /var/www/flaskapps/app.wsgi
        WSGIScriptAlias / /var/www/djangoapps/django.wsgi

</VirtualHost>

【讨论】:

【参考方案2】:

对于任何想在 2018 年实现同样目标的人来说,这真的帮助了我:

https://www.phusionpassenger.com/library/deploy/apache/deploy/python/

我知道这是题外话,但在找到来自乘客的描述的链接之前,我发现这个问题像 20 次搜索一样......

这里的 ev 是本教程的摘录:

<VirtualHost *:80>
    ServerName www.phusion.nl
    DocumentRoot /websites/phusion/public
<Directory /websites/phusion>
    Allow from all
    Options -MultiViews
    # Uncomment this if you're on Apache >= 2.4:
    #Require all granted
</Directory>

Alias /subapp /websites/secondapp/public
<Location /subapp>
    PassengerBaseURI /subapp
    PassengerAppRoot /websites/secondapp

    PassengerAppType wsgi
    PassengerStartupFile passenger_wsgi.py
</Location>
<Directory /websites/secondapp/public>
    Allow from all
    Options -MultiViews
    # Uncomment this if you're on Apache >= 2.4:
    #Require all granted
</Directory>

【讨论】:

以上是关于在同一个 apache 服务器上运行 django 和 flask的主要内容,如果未能解决你的问题,请参考以下文章

如何在一台服务器上运行两个 django 项目

在同一台服务器上运行多个 Django Celery 网站

使用 apache2 在 mod_wsgi 上运行 django python 3.4

使用 PHP 或 Django 在 Apache 中重定向八位字节流

Django Logging 在 Ubuntu/Apache 服务器上部署时不起作用

如何在 ubuntu 上为 django restful 服务配置 apache2