2013-11-18 7 views
0

У меня есть приложение Джанго со следующей структуройразвертывание Django с Apache на AWS - Структура каталогов

web/ 
    manage.py 
    settings.py 
    wsgi.py 
    urls.py 
    /subapp1/ 
    /subapp2/ 

При развертывании на сервере разработки runserver, все ссылки и работает правильно. Когда я развертываю все приложение web, ни один из моих веб-страниц не обслуживается. Ошибка 500 или 404. И журналы ошибок только шоу:

[notice] caught SIGTERM, shutting down 
[notice] Apache/2.2.22 (Ubuntu) mod_wsgi/3.3 Python/2.7.3 configured -- resuming normal operations 

Я следующий набор для моего Apache2.2.2:

wsgi.py:

import os 
import sys 
import site 

site.addsitedir('/home/ubuntu/.virtualenvs/venv/local/lib/python2.7/site-packages') 
sys.path.append('/var/www/ec2-XXX.us-west-1.compute.amazonaws.com/') 
sys.path.append('/var/www/ec2-XXX.us-west-1.compute.amazonaws.com/web') 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "web.settings") 

activate_env=os.path.expanduser("/home/ubuntu/.virtualenvs/venv/bin/activate_this.py") 
execfile(activate_env, dict(__file__=activate_env)) 

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

/etc/apache2/httpd.conf

WSGIScriptAlias//var/www/ec2-XXX.us-west-1.compute.amazonaws.com/web/wsgi.py 
WSGIPythonPath /var/www/ec2-XXX.us-west-1.compute.amazonaws.com/web:/home/ubuntu/.virtualenvs/venv/local/lib/python2.7/site-packages 
alias /static /var/www/ec2-XXX.us-west-1.compute.amazonaws.com/web/static 

<Directory /var/www/ec2-XXX.us-west-1.compute.amazonaws.com/web> 
<Files wsgi.py> 
Order allow, deny 
Allow from all 
</Files> 
</Directory> 

/etc/apache2/sites-available/ec2-XXX.us-west-1.compute.amazonaws.com

WSGIPythonPath /var/www/ec2-XXX.us-west-1.compute.amazonaws.com/web:/home/ubuntu/.virtualenvs/venv/local/lib/python2.7/site-packages 
<VirtualHost *:80> 
     ServerAdmin [email protected] 
     ServerName ec2-XXX.us-west-1.compute.amazonaws.com 
     DocumentRoot /var/www/ec2-XXX.us-west-1.compute.amazonaws.com/web 
     WSGIScriptAlias//var/www/ec2-XXX.us-west-1.compute.amazonaws.com/web/wsgi.py 

     <Directory /var/www/ec2-XXX.us-west-1.compute.amazonaws.com/web> 
     <Files wsgi.py> 
       Order allow,deny 
       Allow from all 
     </Files> 
     </Directory> 

Я сделал sudo a2ensite ec2-XXX.us-west-1.compute.amazonaws.com, чтобы иметь возможность использования сайта.

Как получить мои веб-страницы, обслуживаемые Apache? Я понимаю, что это может быть странная файловая структура.

ответ

1

Замените ваш wsgi.py на мир приветствия WSGI и извлеките Django из картинки.

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

Убедитесь, что вы пытаетесь что-нибудь приложение мира WSGI первый, хотя, а не просто прыгать в попытке решения, описанные в этой документации.

+0

Спасибо Грэм. Приложение WSGI hello world работает как шарм. Я посмотрю на ссылку, чтобы найти ответы. – nlr25

+0

Согласно ссылке, мне не хватало 'WSGIApplicationGroup% {GLOBAL}' в моем VirtualHost. Все работает сейчас, спасибо! – nlr25

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