Как запустить Django и PHP на одном сервере Apache?

В настоящее время я могу запустить Django через mod_wsgi или PHP на моем сервере Apache.

Мои проекты Django выполняются по адресу: http: // localhost и source находятся в C: / django_proj

Мои проекты PHP работают на: http: //php.localhost, а источник – на C: / web

Если я включу оба, php.localhost и localhost перейдут в проект Django. Я уже установил их через виртуальные хосты Apache.

Вот некоторые соответствующие строки в httpd.conf:

DocumentRoot "C:/web" <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> <Directory "C:/web"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <Directory "C:/django_proj"> Order allow,deny Allow from all </Directory> Include "C:/django_proj/apache/apache_django_wsgi.conf" 

Соответствующие строки в apache_django_wsgi.conf :

 WSGIScriptAlias / "C:/django_proj/apache/proj.wsgi" <Directory "C:/django_proj/apache"> Order allow,deny Allow from all </Directory> 

Внутри httpd-vhosts.conf:

 <Directory C:/web> Order Deny,Allow Allow from all </Directory> <Directory C:/django_proj> Order Deny,Allow Allow from all </Directory> <VirtualHost *:80> DocumentRoot "C:/django_proj" ServerName localhost </VirtualHost> <VirtualHost *:80> DocumentRoot "C:/web" ServerName php.localhost </VirtualHost> 

Мой PHP-проект недоступен в настоящее время. У кого-нибудь есть идеи, что мне не хватает?

Solutions Collecting From Web of "Как запустить Django и PHP на одном сервере Apache?"

Я запускаю десятки сайтов mod_wsgi / Django, сайтов PHP и сайта Rails с одним Apache.

В основном это делается с использованием виртуальных хостов, но у меня есть некоторые, которые работают как в одном домене.

Вам просто нужно разместить WSGIScriptAlias /... после каких-либо других директив Location / Alias.

Скажем, например, я хочу запустить phpMyAdmin в том же домене, что и сайт Django. Конфигурация будет выглядеть примерно так:

 Alias /phpmyadmin /full/path/to/phpmyadmin/ <Directory /full/path/to/phpmyadmin> Options -Indexes ...etc... </Directory> WSGIScriptAlias / /full/path/to/django/project/app.wsgi <Directory /full/path/to/django/project> Options +ExecCGI ...etc... </Directory> 

Изменить :

Ваша конфигурация должна выглядеть примерно так:

 <VirtualHost *:80> DocumentRoot "C:/django_proj" ServerName localhost WSGIScriptAlias / "C:/django_proj/apache/proj.wsgi" <Directory "C:/django_proj/apache"> Options +ExecCGI Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot "C:/web" ServerName php.localhost Alias / C:/web <Directory C:/web> Options Indexes FollowSymLinks AllowOverride None Order Deny,Allow Allow from all </Directory> </VirtualHost> 

Вам не нужны эти директивы <Directory> в http.conf … все ваши настройки на виртуальных хостах.

Кроме того, полностью избавиться от блока <Directory /> .

Ваша директива WSGIScriptAlias / ... сообщает Apache, что все запросы, начинающиеся с «/», должны получать через обработчик WSGI Django. Если вы изменили это, чтобы читать WSGIScriptAlias /django-proj/ ... вместо этого, запросы, начинающиеся с «/ django-proj», будут переданы в Django.

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

У меня такая же проблема. Попробуйте удалить этот блок <Directory /> в httpd-conf.

Включите httpd-vhost.conf и попробуйте WSGIScriptAlias / "/somewhere/file.wsgi" мой WSGIScriptAlias / "/somewhere/file.wsgi" в разделе виртуального хоста httpd-vhosts, который прослушивает порт 80.

Я хотел бы добавить, что если вы используете Apache ProxyPass , можно отклонить определенные шаблоны URL-адресов, чтобы он попадал в mod_php.

 ProxyPass /wordpress ! <Location /wordpress> Require all granted </Location>