如何配置 Apache 以与多个 Django 应用程序协同工作?

如何配置 Apache 以与多个 Django 应用程序协同工作?

我想在 Apache2 服务器上运行多个 Django 项目。因此,如果我输入我的 URL:

localhost/OpenGMS

我的OpenGMS项目将在 apache2 服务器中运行,如果我输入以下 URL:

localhost/my_other_site

我的其他项目将在 apache2 服务器中运行。

为此,我配置了/etc/apache2/sites-available/000-default.conf。它看起来像这样:

<VirtualHost *:80>
    ServerName OpenGMS.org
    ServerAlias www.OpenGMS.org
    ServerAdmin [email protected]

    DocumentRoot /var/www/OpenGMS

    WSGIScriptAlias / /var/www/OpenGMS/OpenGMS/wsgi.py

    ErrorLog /var/www/logs/error.log
    CustomLog /var/www/logs/custom.log combined
</VirtualHost>

并配置了/etc/apache2/apache2.conf。我在文件末尾添加了一行。该行是

WSGIPythonPath /var/www/OpenGMS

我发现一个与此相关的问题这里. 它说

另一种方法需要做更多工作,但也有其他好处,即切换到使用 mod_wsgi 的守护进程模式来运行 Django 实例,并将每个实例委托给一组单独的进程。通过在单独的进程中运行 Django 实例,环境变量不可能从一个实例泄漏到另一个实例。

WSGIDaemonProcess project-2 WSGIScriptAlias /suburl
> /some/path/project-2/wsgi.py process-group=project-2

 WSGIDaemonProcess project-1 WSGIScriptAlias /
> /some/path/project-1/wsgi.py process-group=project-1

然后我再次配置/etc/apache2/sites-available/000-default.conf。它看起来像这样:

 <VirtualHost *:80>
    ServerName OpenGMS.org
    ServerAlias www.OpenGMS.org
    ServerAdmin [email protected]

    DocumentRoot /var/www/OpenGMS

    WSGIDaemonProcess my_other_site 
    WSGIScriptAlias /my_other_site /var/www/my_other_site/my_other_site/wsgi.py process-group=my_other_site


    WSGIDaemonProcess OpenGMS
    WSGIScriptAlias / /var/www/OpenGMS/OpenGMS/wsgi.py process-group=OpenGMS

    ErrorLog /var/www/logs/error.log
    CustomLog /var/www/logs/custom.log combined
</VirtualHost>

但是我没有配置该/etc/apache2/apache2.conf文件。

现在,当我运行localhost/OpenGMS或/和时localhost/my_other_site,我收到内部服务器错误 500。

发生错误是因为我/etc/apache2/apache2.conf在添加新站点后没有编辑/etc/apache2/sites-available/000-default.conf,还是我做错了其他事情或者我不知道?

答案1

一个可能的解决方案是使用 /etc/hosts 文件中的条目。然后,您可以使用不同的名称引用 localhost,然后拥有不同的虚拟主机条目。

例如:

127.0.0.1     localhost host1 host2 host3 host4

您现在可以通过任何其他名称来引用 localhost
http://host1/
http://主机2/

然后为每个虚拟主机设置一个

<VirtualHost *:80>
    ServerName host1 
    ... 
<VirtualHost *:80>
    ServerName host2

相关内容