2015-12-20 2 views
1

Сайт работает нормально на локальном хосте, но когда я перехожу на localhost/site2, он просто загружает страницу 404 для сайта Django.Поместите сайт Django в подкаталог другого сайта django

<VirtualHost *:80> 
     ServerName localhost 
     #site1.com 
     #ServerAlias www.site1.com 
     ErrorLog /var/www/virtualenv-2.7/django-error-log 
     Alias /static/ /var/www/virtualenv-2.7/site1/mainapp/static/ 
     Alias /media/ /var/www/virtualenv-2.7/site1/media/ 
     WSGIDaemonProcess site1 python-path=/var/www/virtualenv-2.7/site1:/var/www/virtualenv-2.7/lib/python2.7/site-packages 
     WSGIProcessGroup site1 
     WSGIScriptAlias//var/www/virtualenv-2.7/site1/site1/wsgi.py 

     <Directory /var/www/virtualenv-2.7/site1> 
       <Files wsgi.py> 
       Allow from all 
       </Files> 
     </Directory> 

     WSGIDaemonProcess site2 python-path=/var/www/virtualenv-2.7/site2:/var/www/virtualenv-2.7/lib/python2.7/site-packages 
     WSGIProcessGroup site2 
     WSGIScriptAlias /site2 /var/www/virtualenv-2.7/site2/site2/wsgi.py 

     <Directory /var/www/virtualenv-2.7/site2> 
       <Files wsgi.py> 
       Allow from all 
       </Files> 
     </Directory> 
</VirtualHost> 

WSGISocketPrefix /var/run/wsgi 
WSGIPythonPath /var/www/virtualenv-2.7/site1:var/www/virutalenv-2.7/lib/python2.7/site-packages:/var/www/virutalenv-2.7/site2: 
WSGIPythonHome /var/www/virtualenv-2.7 
+1

Возможно, проблема в том, что вы настраиваете 2 сайта, когда вам нужно настроить 1 сайт с двумя субфольфами (это разные страницы). Но сайт - это корень, и только один –

+0

@HoapHumanoid и как это сделать? – User

ответ

1

Еще одна мысль. Что вам действительно нужно - условное config. Это возможно в Apache 2.4 (печального, но не в 2.2), используя <If> заявление (docs here)

Таким образом, ваш конфиг будет преобразован к чему-то вроде

<VirtualHost *:80> 
     ServerName localhost 
     #site1.com 
     #ServerAlias www.site1.com 
     ErrorLog /var/www/virtualenv-2.7/django-error-log 




<If "%{QUERY_STRING} =~ ^/site1"> 
     Alias /static/ /var/www/virtualenv-2.7/site1/mainapp/static/ 
     Alias /media/ /var/www/virtualenv-2.7/site1/media/ 

     WSGIDaemonProcess site1 python-path=/var/www/virtualenv-2.7/site1:/var/www/virtualenv-2.7/lib/python2.7/site-packages 
     WSGIProcessGroup site1 
     WSGIScriptAlias//var/www/virtualenv-2.7/site1/site1/wsgi.py 

     <Directory /var/www/virtualenv-2.7/site1> 
       <Files wsgi.py> 
       Allow from all 
       </Files> 
     </Directory> 
</If> 
<Else> 
     Alias /static/ /var/www/virtualenv-2.7/site2/mainapp/static/ 
     Alias /media/ /var/www/virtualenv-2.7/site2/media/ 

     WSGIDaemonProcess site2 python-path=/var/www/virtualenv-2.7/site2:/var/www/virtualenv-2.7/lib/python2.7/site-packages 
     WSGIProcessGroup site2 
     WSGIScriptAlias /site2 /var/www/virtualenv-2.7/site2/site2/wsgi.py 

     <Directory /var/www/virtualenv-2.7/site2> 
       <Files wsgi.py> 
       Allow from all 
       </Files> 
     </Directory> 
</Else> 
</VirtualHost> 

Я не система с Apache 2.4, чтобы проверить, так что, возможно, может что-то пропустить.

3

Вы не можете запустить два сайта или Джанго приложения внутри одной VirtualHost эта конфигурация является дефектным.

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

<VirtualHost *:80> 
     ServerName site1.com 
     ServerAlias www.site1.com 
     ErrorLog /var/www/virtualenv-2.7/django-error-log-from-site1 

     Alias /static/ /var/www/virtualenv-2.7/site1/mainapp/static/ 
     Alias /media/ /var/www/virtualenv-2.7/site1/media/ 

     WSGIDaemonProcess site1 python-path=/var/www/virtualenv-2.7/site1:/var/www/virtualenv-2.7/lib/python2.7/site-packages 
     WSGIProcessGroup site1 
     WSGIScriptAlias//var/www/virtualenv-2.7/site1/site1/wsgi.py 

     <Directory /var/www/virtualenv-2.7/site1> 
       <Files wsgi.py> 
       Allow from all 
       </Files> 
     </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
     ServerName site2.com 
     ServerAlias www.site2.com 
     ErrorLog /var/www/virtualenv-2.7/django-error-log-from-site2 

     Alias /static/ /var/www/virtualenv-2.7/site2/mainapp/static/ 
     Alias /media/ /var/www/virtualenv-2.7/site2/media/ 

     WSGIDaemonProcess site2 python-path=/var/www/virtualenv-2.7/site2:/var/www/virtualenv-2.7/lib/python2.7/site-packages 
     WSGIProcessGroup site2 
     WSGIScriptAlias /site2 /var/www/virtualenv-2.7/site2/site2/wsgi.py 

     <Directory /var/www/virtualenv-2.7/site2> 
       <Files wsgi.py> 
       Allow from all 
       </Files> 
     </Directory> 
</VirtualHost> 

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

  1. В Windows: C:\Windows\System32\Drivers\etc\hosts
  2. В Linux/Mac: /etc/hosts

В этом файле добавьте следующие строки:

127.0.0.1 site1.com 
127.0.0.1 site2.com 

Если вы используете доменное имя, то сделать там A Records укажите требуемый IP-адрес сервера.

Теперь, когда вы откроете site1.com, в вашем браузере будет использована первая конфигурация VH, а также для site2.com, если напечатайте ее как URL.

+0

Я хочу использовать одно и то же имя домена. Сайт 1 - 'site1.com', а сайт 2 -' site1.com/site2' – User

+0

@User, который нельзя сделать; два проекта django не могут работать в одном домене, все, что вы можете сделать, это создать URL-адрес в вашем приложении 'site1.com', и когда пользователь откроет его, вы сможете« HttpRedirect («http://site2.com») ». – anand

+0

Затем, пожалуйста, отредактируйте свой ответ, чтобы понять, что это невозможно. – User

Смежные вопросы