【问题标题】:Running django and flask on same apache server在同一个 apache 服务器上运行 django 和 flask
【发布时间】:2025-12-27 06:55:12
【问题描述】:

我正在尝试在同一个 apache 服务器上运行 django 和 flask。

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>
  1. 第一个WSGIScriptAlias 在根目录下运行一个django 应用程序:domain.com。
  2. WSGIScriptAlias 的第二个实例需要在子域中运行烧瓶应用程序:app1

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

任何想法我该怎么做?

【问题讨论】:

    标签: python django apache flask


    【解决方案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>
      

      【讨论】:

        最近更新 更多