Запустите Django в контейнере приложений Oracle - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть существующий проект django, который я пытаюсь развернуть в облачной службе Oracle, Application Container .

Я следовал Руководству Oracle , но в этом руководстве отсутствуют некоторые детали.В частности, руководство ссылается на файл app.py , который, похоже, взят из этого руководства .Но я не понимаю, как использовать это в проекте django.

Я попытался заменить вызовы app.py на использование manage.py в django.или wsgi.py файлов, но серверы Oracle по-прежнему не запускаются.Журналы сервера, предоставляемые Oracle, также не помогают, только сообщая, что устанавливаются пакеты python.

ACCS[web.1]: Content of APP_HOME [ /u01/app/ ] dir
ACCS[web.1]: total 96
ACCS[web.1]: -rw-r----- 1 apaas apaas 28423 May 17 10:51 readme.html
ACCS[web.1]: -rw-r----- 1 apaas apaas 40960 May 17 10:51 db.sqlite3
ACCS[web.1]: -rw-r----- 1 apaas apaas   355 Sep 10 13:26 manage.py
ACCS[web.1]: -rw-r----- 1 apaas apaas   254 Sep 10 13:28 DjangoProject.pyproj.user
ACCS[web.1]: -rw-r----- 1 apaas apaas  6990 Sep 10 13:28 DjangoProject.pyproj
ACCS[web.1]: -rw-r----- 1 apaas apaas   186 Sep 12 11:24 manifest.json
ACCS[web.1]: drwxr-x--- 1 apaas apaas    10 Sep 13 03:42 obj
ACCS[web.1]: drwxr-x--- 1 apaas apaas   160 Sep 13 03:42 app
ACCS[web.1]: drwxr-x--- 1 apaas apaas    94 Sep 13 03:42 DjangoProject
ACCS[web.1]: drwxr-xr-x 1 apaas apaas   286 Sep 13 03:42 .
ACCS[web.1]: drwxr-xr-x 1 apaas apaas    46 Sep 13 03:42 ..
ACCS[web.1]: -rw-r----- 1 apaas apaas   290 Sep 13  2018 start.sh
ACCS[web.1]: -rw-r----- 1 apaas apaas    51 Sep 13  2018 requirements.txt
ACCS[web.1]: Application should listen on 0.0.0.0:$PORT [enabling app to listen on all interfaces on $PORT env variable]
ACCS[web.1]: Starting application with launch command [ sh ./start.sh ]
APP[web.1]: Collecting Django==1.11.15 (from -r ./requirements.txt (line 1))
APP[web.1]:   Downloading https://files.pythonhosted.org/packages/f8/1c/31112c778b7a56ce18e3fff5e8915719fbe1cd3476c1eef557dddacfac8b/Django-1.11.15-py2.py3-none-any.whl (6.9MB)
APP[web.1]: Collecting pytz==2018.5 (from -r ./requirements.txt (line 2))
APP[web.1]:   Downloading https://files.pythonhosted.org/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl (510kB)
APP[web.1]: Collecting setuptools==39.0.1 (from -r ./requirements.txt (line 3))
APP[web.1]:   Downloading https://files.pythonhosted.org/packages/20/d7/04a0b689d3035143e2ff288f4b9ee4bf6ed80585cc121c90bfd85a1a8c2e/setuptools-39.0.1-py2.py3-none-any.whl (569kB)
APP[web.1]: Installing collected packages: pytz, Django, setuptools
APP[web.1]: Successfully installed Django-1.11.15 pytz-2018.5 setuptools-39.0.1
APP[web.1]: You are using pip version 9.0.1, however version 18.0 is available.
APP[web.1]: You should consider upgrading via the 'pip install --upgrade pip' command.

Я нашел применение из этого руководства при запуске .файл sh .

#!/bin/sh
pip --no-cache-dir install -r ./requirements.txt -t modules
export PYTHONPATH=$PYTHONPATH:modules
python manage.py runserver

Я связался со службой поддержки Oracle, но они также не смогли найти решение.Их рекомендация заключалась в том, чтобы включить переменную PORT, которую сервер использует в файле wsgi.py , который я пробовал.

import os
import sys

from django.core.management import call_command
from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoMedmin.settings")
application = get_wsgi_application()

PORT_NUMBER = int(os.environ.get('PORT', 8084))
call_command('runserver',  '0.0.0.0:'+str(PORT_NUMBER))

Чего мне не хватает?Можно ли заставить django работать с Oracle?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

С помощью поддержки Oracle мне удалось заставить Django работать над контейнером приложений.

Проблема была в переменной ALLOWED_HOSTS в settings.py.Все учебники, которые я нашел, предлагают использовать ALLOWED_HOSTS = ['*'].Это не работает.

Чтобы заставить Django работать, мне нужно было включить определенный URL-адрес, который Oracle назначает контейнеру приложений.Так что-то вроде ALLOWED_HOSTS = ['ProjectName-AccountName.oracle-region-0.oraclecloud.com'].

0 голосов
/ 14 сентября 2018

Руководство определенно вводит в заблуждение и смешивает Django и Flask.

Команда runserver предназначена только для разработки на локальном компьютере и не подходит для производственного использования.Для запуска приложения Django вы должны использовать какой-нибудь веб-сервер WSGI.

Я предлагаю вам использовать gunicorn:

  1. Добавить gunicorn к вашему requirements.txt
  2. Запустите gunicorn в вашем start.sh:

    pip --no-cache-dir install -r ./requirements.txt -t modules
    export PYTHONPATH=$PYTHONPATH:modules
    gunicorn -b $PORT DjangoProject.wsgi
    

(Отказ от ответственности: до прочтения вашего вопроса я даже не знал Oracle ACCSсуществовала)

...