Внутренняя ошибка сервера для проекта Hello World в проекте django - PullRequest
0 голосов
/ 17 января 2019

У меня есть сервер apache, перенаправляющий трафик с mysite.com/home на мой файл wsgi.py, но когда вызывается get_wsgi_application(), я получаю внутреннюю ошибку сервера.

Запуск apache2 на amazon linux EC2. В wsgi.py я заменил строку

application = get_wsgi_application()

с функцией,

def application(environ, start_response):

    status = '200 OK'
    output = b'sys.path = %s\n' % repr(sys.path).encode('UTF-8')
    output += b'sys.version = %s\n' % repr(sys.version).encode('UTF-8')
    output += b'sys.prefix = %s\n' % repr(sys.prefix).encode('UTF-8')


    response_headers = [('Content-type', 'text/plain'),
                    ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

и ошибка сервера исчезает. Это показывает, что apache использует правильную версию Python (3.7) и не возвращает ошибку, когда я import get_wsgi_application() из django.core.wsgi. Насколько я понимаю, это означает, что apache очень хорошо находит точку доступа к моему проекту django, и у него есть разрешение просматривать файл и показывать его содержимое. Чего мне не хватает?

Другая, возможно, важная информация, о которой я могу подумать Пользователь "apache" и группа "apache" владеют внешним каталогом mysite и всем, что в нем. Я установил все параметры в settings.py для производства в соответствии с контрольным списком развертывания django. https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/

wsgi.py:

import os, sys

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
sys.path.append('/usr/local/wsgi/django')
sys.path.append('/usr/local/wsgi/django/mysite')

application = get_wsgi_application()

httpd.conf:

<VirtualHost *:80>
    ServerName www.mysite.com
    Redirect permanent / httpswww.mysite.com
</VirtualHost>

<VirtualHost *:443>

    ServerName httpswww.mysite.com
    ServerAlias mysite.com
    ServerAdmin person@gmail.com

    DocumentRoot "/var/www/html/efs/Website"

    WSGIDaemonProcess mysite
    WSGIProcessGroup mysite

    WSGIScriptAlias /home /usr/local/wsgi/django/mysite/mysite/wsgi.py

    <Directory "/usr/local/wsgi/django/mysite/mysite">
    <Files "wsgi.py">
        Require all granted
    </Files>
    </Directory>

    SSLEngine on
    SSLCertificateFile "/crt/path.crt"
    SSLCertificateKeyFile "/key/path.key"

</VirtualHost>

settings.py:

SECRET_KEY = 'string_I_havent_moved_yet'

DEBUG= False

ALLOWED_HOSTS = ['www.mysite.com', e2-serial-numbers.compute-1.amazonaws.com']
...