несколько django сайтов с апачем и mod_wsgi

Существует также "шаг в определенную" запись в контекстном меню, которое перечислит функции, которые могли ступиться в на текущей строке, и можно выбрать тот, который Вы хотите.

57
задан Serjik 19 December 2015 в 10:12
поделиться

1 ответ

Директивы ServerName / ServerAlias ​​неверны. ServerName должно быть именем хоста. Вероятно, вам следует просто удалить ServerAlias.

Затем просто выполните очевидные и дублирующие директивы VirtualHost / Listen, просто изменив номер порта и расположение скриптов в файловой системе.

Наконец, не устанавливайте DocumentRoot там, где ваш Django code упрощает случайную загрузку исходного кода, если вы заполнили конфигурацию Apache. Итак, просто удалите директиву DocumentRoot из VirtualHost для сайтов Django.

Listen 80

<VirtualHost *:80>
ServerName www.example.com
WSGIScriptAlias / /opt/django/site1/apache/django.wsgi
Alias /media /opt/django/site1/media/statics
Alias /admin_media  /home/myuser/Django-1.1/django/contrib/admin/media

<Directory opt/django/site1/apache>
Order allow,deny
Allow from all
</Directory>

<Directory /home/myuser/Django-1.1/django/contrib/admin/media>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Listen 8080

<VirtualHost *:8080>
ServerName www.example.com
WSGIScriptAlias / /opt/django/site2/apache/django.wsgi
Alias /media /opt/django/site2/media/statics
Alias /admin_media  /home/myuser/Django-1.1/django/contrib/admin/media

<Directory opt/django/site2/apache>
Order allow,deny
Allow from all
</Directory>

<Directory /home/myuser/Django-1.1/django/contrib/admin/media>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Listen 8090

<VirtualHost *:8090>
ServerName www.example.com
WSGIScriptAlias / /opt/django/site3/apache/django.wsgi
Alias /media /opt/django/site3/media/statics
Alias /admin_media  /home/myuser/Django-1.1/django/contrib/admin/media

<Directory opt/django/site3/apache>
Order allow,deny
Allow from all
</Directory>

<Directory /home/myuser/Django-1.1/django/contrib/admin/media>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Я также добавил недостающую директиву Directory для разрешения доступа к статическим файлам. Однако вам следует просмотреть пути.

Убедитесь, что вы прочитали:

http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango http://code.google. com / p / modwsgi / wiki / ConfigurationGuidelines # Hosting_Of_Static_Files

для получения дополнительной информации.


ОБНОВЛЕНИЕ 1

Кстати, поскольку вы используете PHP в том же Apache, вам было бы намного лучше использовать режим демона mod_wsgi и нажимать каждый Экземпляр Django вынесен в отдельный процесс. Это позволяет этим процессам быть многопоточными, хотя основные процессы Apache вынуждены быть однопоточными из-за PHP. Конечным результатом будет намного меньше используемой памяти, чем при запуске нескольких экземпляров Django в каждом процессе во встроенном режиме с prefork MPM. Ваш код Django просто должен быть потокобезопасным. Конфигурация в дополнение к вышеизложенному будет заключаться в добавлении WSGIDaemonProcess / WSGIProcessGroup к каждому виртуальному хосту Django, где имя группы процессов демона отличается для каждого VirtualHost.

<VirtualHost *:80>
WSGIDaemonProcess site1 display-name=%{GROUP}
WSGIProcessGroup site1
... existing stuff
</VirtualHost>

<VirtualHost *:8080>
WSGIDaemonProcess site2 display-name=%{GROUP}
WSGIProcessGroup site2
... existing stuff
</VirtualHost>

<VirtualHost *:8090>
WSGIDaemonProcess site3 display-name=%{GROUP}
WSGIProcessGroup site3
... existing stuff
</VirtualHost>

Это также позволяет вам более легко перезапускать каждый экземпляр Django без перезапуска всего Apache. Прочтите:

http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

104
ответ дан 24 November 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: