【问题标题】:Configuring VirtualHost to run a second website, issue with <VirtualHost *:8080>, error with `Listen`配置 VirtualHost 以运行第二个网站,<VirtualHost *:8080> 问题,`Listen` 错误
【发布时间】:2017-04-03 11:28:24
【问题描述】:

我想弄清楚如何从我的虚拟机托管第二个 Django 网站,我想知道是否有人能看到我在哪里犯了任何明显的错误。

当前设置为&lt;VirtualHost *:80&gt; 的任何站点都有效。我从this answer 那里得知,我应该将第二个网站指定为&lt;VirtualHost *:8080&gt;。但是,当我尝试使用 Listen 时,当我尝试重新加载 apache 时出现以下错误

apache2.service 的作业失败。请参阅“systemctl status apache2.service” 和 'journalctl -xn' 了解详情。

  • 有人知道可能出了什么问题吗?

  • 为什么是&lt;VirtualHost *:80&gt; 而不是&lt;VirtualHost *:8080&gt;

  • 为什么我在指定Listen时会收到错误消息?

我正在使用 Debian 8.5、Apache 2.4.10 和 mod-wsgi 4.3.0-1。

Listen 80
<VirtualHost *:80>

ServerName myserver.scss.tcd.ie/bias_experiment/

Alias /bias_experiment/static/ /var/www/bias_experiment/static/
<Directory /var/www/bias_experiment/static>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias /bias_experiment /var/www/bias_experiment/src/bias_experiment/index.wsgi
<Directory /var/www/bias_experiment/src/bias_experiment>
<Files index.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>

</VirtualHost>


Listen 8080
<VirtualHost *:8080>

ServerName myserver.scss.tcd.ie/bias_experiment_two/

Alias /bias_experiment_two/static/ /var/www/bias_experiment_two/static/
<Directory /var/www/bias_experiment_two/static>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias /bias_experiment_two /var/www/bias_experiment_two/src/bias_experiment/index.wsgi
<Directory /var/www/bias_experiment_two/src/bias_experiment>
<Files index.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>

</VirtualHost>

任何帮助都一如既往,非常感谢。

【问题讨论】:

  • 您是否按照这些说明查看出了什么问题?它说了什么?

标签: django mod-wsgi wsgi django-wsgi


【解决方案1】:

您不能照原样设置ServerNameServerName 指令必须是主机名,否则当您有多个 VirtualHost 定义时,基于命名的虚拟主机将不起作用。完全按原样处理任何事情的唯一原因是,当基于名称的虚拟主机未正确设置或没有主机名匹配时,Apache 将向读取配置时找到的第一个 VirtualHost 发送请求。如果您希望通过相同的主机名访问它们,您应该做的是将所有东西都放在一个 VirtualHost 中。可以使用不同的端口,但不太方便。

<VirtualHost *:80>

ServerName myserver.scss.tcd.ie

WSGIDaemonProcess bias_experiment

Alias /bias_experiment/static/ /var/www/bias_experiment/static/
<Directory /var/www/bias_experiment/static>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias /bias_experiment /var/www/bias_experiment/src/bias_experiment/index.wsgi \
    process-group=bias_experiment application-group=%{GLOBAL}

<Directory /var/www/bias_experiment/src/bias_experiment>
<Files index.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>

WSGIDaemonProcess bias_experiment_two

Alias /bias_experiment_two/static/ /var/www/bias_experiment_two/static/
<Directory /var/www/bias_experiment_two/static>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias /bias_experiment_two /var/www/bias_experiment_two/src/bias_experiment/index.wsgi \
    process-group=bias_experiment_two application-group=%{GLOBAL}

<Directory /var/www/bias_experiment_two/src/bias_experiment>
<Files index.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>

</VirtualHost>

为了保持 WSGI 应用程序独立,声明了两个独立的守护进程组,每个 WSGI 应用程序委托给不同的进程组。

这两个 WSGI 应用程序将被访问为:

如果这些是 Django 站点,您可能需要在 Django 设置文件中进行额外的设置更改,以允许两者在相同的主机名下运行并且不会相互干扰。

【讨论】:

  • 谢谢格雷厄姆。我已经更新了 settings.py 文件路径、SITE_ID 等中的所有内容(我认为)。感谢您的提示以及向我展示如何使用 WSGIDaemonProcesses 正确执行此操作,我的计划是让它在没有这些的情况下正常工作(根据您之前的回答我参考了),然后试着弄清楚这些。再次感谢
  • 我想到的重要的一个是SESSION_COOKIE_PATHdocs.djangoproject.com/en/1.10/ref/settings/…
  • 谢谢,我现在才添加。我实际上根本不知道这件事。
猜你喜欢
  • 2014-11-11
  • 2021-05-06
  • 2014-12-08
  • 1970-01-01
  • 2023-03-09
  • 2012-05-21
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
相关资源
最近更新 更多