2015-05-22 3 views
0

Я пытаюсь развернуть сайт песочницы django-oscar на сервере с mod_wsgi и apache2.Внутренняя ошибка сервера с mod_wsgi и apache2

Дело в том, всякий раз, когда я открываю адрес веб-сайта, я получаю ошибку 500 со следующим в моем журнале:

[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] mod_wsgi (pid=28331): Exception occurred processing WSGI script '/tmp/mod_wsgi-localhost:8001:1000/htdocs/en-gb'. 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] Traceback (most recent call last): 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/local/lib/python2.7/dist-packages/mod_wsgi/server/__init__.py", line 1299, in handle_request 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  return self.application(environ, start_response) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox/wsgi.py", line 24, in application 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  return _application(environ, start_response) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 187, in __call__ 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  response = self.get_response(request) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 199, in get_response 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 231, in handle_uncaught_exception 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  'request': request 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/lib/python2.7/logging/__init__.py", line 1166, in error 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  self._log(ERROR, msg, args, **kwargs) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/lib/python2.7/logging/__init__.py", line 1258, in _log 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  self.handle(record) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/lib/python2.7/logging/__init__.py", line 1268, in handle 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  self.callHandlers(record) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/lib/python2.7/logging/__init__.py", line 1308, in callHandlers 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  hdlr.handle(record) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/lib/python2.7/logging/__init__.py", line 748, in handle 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  self.emit(record) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/lib/python2.7/logging/__init__.py", line 929, in emit 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  self.stream = self._open() 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/local/lib/python2.7/dist-packages/oscar/core/logging/handlers.py", line 26, in _open 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  return BaseFileHandler._open(self) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] File "/usr/lib/python2.7/logging/__init__.py", line 916, in _open 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200]  stream = open(self.baseFilename, self.mode) 
[Fri May 22 16:53:48 2015] [error] [client 2.190.60.200] IOError: [Errno 13] Permission denied: '/var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox/logs/errors.log' 

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

теперь вот мой wsgi.py сценарий:

import os 
import sys 
import site 
import urllib 

sys.stdout = sys.stderr 

# Project root 
root = '/var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox' 
sys.path.insert(0, root) 

# Packages from virtualenv 
activate_this = '/var/www/setak/setakenv/setakmain/django-oscar/oscar/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 

# Set environmental variable for Django and fire WSGI handler 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
#import django.core.handlers.wsgi 
from django.core.wsgi import get_wsgi_application 
_application = get_wsgi_application() 

def application(environ, start_response): 
    environ['PATH_INFO'] = urllib.unquote(environ['REQUEST_URI'].split('?')[0]) 
    return _application(environ, start_response) 

и это мой apache2 конфигурации:

<VirtualHost *:8080> 
     WSGIDaemonProcess setak python-path=/var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox:/var/www/setak/setakenv/lib/python2.7/site-packages 
     WSGIProcessGroup setak 
     WSGIScriptAlias//var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox/wsgi.py 
     ServerAdmin [email protected] 
     ServerName shop.setakshop.ir 

     Alias /robots.txt /var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox/static/robots.txt 

     Alias /media/ /var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox/public/media/ 
     Alias /static/ /var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox/public/static/ 

     <Directory /var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox/public/static> 
       Order allow,deny 
       allow from all 
     </Directory> 

     <Directory /var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox/public/media> 
       Order allow,deny 
       allow from all 
     </Directory> 

     DocumentRoot /var/www 
     <Directory /> 
       Options FollowSymLinks 
       AllowOverride None 
     </Directory> 
     <Directory /var/www/> 
       Options Indexes FollowSymLinks MultiViews 
       AllowOverride None 
       Order allow,deny 
       allow from all 
     </Directory> 

     ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
     <Directory "/usr/lib/cgi-bin"> 
       AllowOverride None 
       Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
       Order allow,deny 
       Allow from all 
     </Directory> 

     ErrorLog ${APACHE_LOG_DIR}/error.log 

     # Possible values include: debug, info, notice, warn, error, crit, 
     # alert, emerg. 
     LogLevel warn 

     CustomLog ${APACHE_LOG_DIR}/access.log combined 

    Alias /doc/ "/usr/share/doc/" 
    <Directory "/usr/share/doc/"> 
     Options Indexes MultiViews FollowSymLinks 
     AllowOverride None 
     Order deny,allow 
     Deny from all 
     Allow from 127.0.0.0/255.0.0.0 ::1/128 
    </Directory> 

</VirtualHost> 

Я также запустить проект с помощью команды:

mod_wsgi-express start-server wsgi.py --port=8001  --user www-data --group www-data 

а также более простая команда:

mod_wsgi-express start-server wsgi.py --port=8001 

но такое же бывает.

Я не знаю, что я делаю неправильно, и любая помощь будет оценена по достоинству. заранее спасибо.

+1

Попробуйте мой сценарий. Просто, как только получается. https://github.com/limtaesu/django-easy-deploy – taesu

+0

похоже, что вам нужно установить разрешения в папке журнала –

+0

@taesu. Мне бы хотелось исправить это и избежать любых других расширений и пакетов django, поскольку они были единственное, что меня достало, но спасибо! –

ответ

1

Try путем изменения разрешения на 777 .Но это не рекомендуется. (Попробуйте изменить владельца хороший подход.)

sudo chmod 777 /var/www/setak/setakenv/setakmain/django-oscar/sites/sandbox/logs/errors.log 
Смежные вопросы