Настройка VirtualHost для запуска второго веб-сайта, проблема с ‹VirtualHost *:8080›, ошибка с `Listen`

Я пытаюсь понять, как разместить второй веб-сайт Django с моей виртуальной машины, и мне интересно, мог ли кто-нибудь увидеть, где я допустил какие-либо очевидные ошибки.

В настоящее время любой сайт, для которого установлено значение <VirtualHost *:80>, работает. Из этого ответа я узнал, что мне следует указать второй веб-сайт для <VirtualHost *:8080>. Однако, когда я пытаюсь использовать Listen, я получаю следующую ошибку, когда пытаюсь перезагрузить apache

Сбой задания для apache2.service. Подробности смотрите в 'systemctl status apache2.service' и 'journalctl -xn'.

  • Кто-нибудь понимает, что может быть не так?

  • Почему <VirtualHost *:80>, а не <VirtualHost *:8080>?

  • И почему я получаю ошибку, когда я указываю 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>

Любая помощь, как всегда, очень ценится.


person Deepend    schedule 19.11.2016    source источник
comment
Вы следовали этим инструкциям, чтобы увидеть, что было не так? Что он сказал?   -  person Daniel Roseman    schedule 19.11.2016


Ответы (1)


Вы не можете установить ServerName таким, какой вы есть. Директива ServerName должна быть только именем хоста, иначе именованные виртуальные хосты не будут работать, если у вас есть несколько определений 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, чтобы оба сайта работали под одним и тем же именем хоста и не мешали друг другу.

person Graham Dumpleton    schedule 19.11.2016
comment
Спасибо Грэм. Я обновил все (я думаю) в путях к файлам settings.py, SITE_ID и т. д. Спасибо за советы и за то, что показали мне, как правильно это сделать с помощью WSGIDaemonProcesses. Мой план состоял в том, чтобы заставить его работать без них (согласно вашему предыдущему ответу Я сослался), а затем попытайтесь понять это. Еще раз спасибо - person Deepend; 19.11.2016
comment
Важный, о котором я думаю, это SESSION_COOKIE_PATH. docs.djangoproject.com/en/1.10/ref/settings / - person Graham Dumpleton; 19.11.2016
comment
Спасибо, только сейчас добавил. Я на самом деле вообще не знал об этом. - person Deepend; 20.11.2016