Развертывание приложения Django (Apache, Passenger, Virtualenv) - PullRequest
0 голосов
/ 18 марта 2020

Я застрял в развертывании моего рабочего Django приложения на рабочем сервере PLESK. Проект можно успешно запустить как сервер разработки, набрав:

httpdocs# cd mysite
httpdocs/mysite# source myvenv/bin/activate
httpdocs/mysite# export LD_LIBRARY_PATH="/usr/local/lib"
httpdocs/mysite# python manage.py runserver <freyt.de>:8000

Затем, если я укажу браузеру на freyt.de:8000, я смогу увидеть свое приложение. Хорошо. Прямо сейчас я пытаюсь позвонить своему приложению через Passenger с Apache. При проверке через «passenger-config restart-app» он запускается, но при curl freyt.de он показывает мне html с 403 Forbidden. Итак, я предполагаю, что мое Django приложение не запущено успешно.

Это моя текущая структура папок:

Folder structure

Я уже изменил некоторые темы в PLESK следующим образом:

  • Apache Веб-сервер: wsgi активирован

  • Я создал план обслуживания и подписал его на свой домен freyt.de

  • В плане обслуживания на вкладке «Веб-сервер» я добавил дополнительные директивы для HTTP следующим образом.

PassengerEnabled On
PassengerAppType wsgi
PassengerStartupFile passenger_wsgi.py
  • В плане обслуживания в разделе «Параметры хостинга» я включил S SH доступ к оболочке сервера: / bin / bash

  • Для «Домена» я установил Документ root в «..httpdocs / publi c». Также я добавил в "Apache & nginx Settings" те же директивы. (Я тоже пробовал без, но, похоже, не дает эффекта.)

Некоторые подробности в Документе Root:

  • Я добавил. htaccess в publi c с теми же директивами (только для тестирования). Нет других файлов в publi c.

  • Мой passenger_wsgi.py содержит, что вроде бы нормально:

import sys, os
cwd = os.getcwd()
sys.path.append(cwd)
sys.path.append(cwd + '/mysite')

if sys.version < "2.7.9":
  os.execl(cwd + "/mysite/myvenv/bin/python", "python3.6", *sys.argv)

sys.path.insert(0, cwd + '/mysite/myvenv/bin')
sys.path.insert(0, cwd + '/mysite/myvenv/lib/python3.6')
#sys.path.insert(0, cwd + '/mysite/myvenv/lib/python3.6/site-packages/django')
sys.path.insert(0, cwd + '/mysite/myvenv/lib/python3.6/site-packages')

os.environ['DJANGO_SETTINGS_MODULE'] = "mysite.settings"
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
  • Файл mysite / mysite / wsgi.py не тронут:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
application = get_wsgi_application()

Было бы здорово, если бы кто-то мог указать мне правильное направление. Я думаю, это просто небольшая ошибка где-то :-) Заранее спасибо.

...