我有一个现有的django项目,我正尝试将其部署到Oracle的云服务Application Container。
我遵循Oracle's guide进行此操作,但是本指南中缺少一些细节。具体来说,该指南引用了一个 app.py 文件,该文件似乎来自this guide。但是我看不到如何在Django项目中使用它。
我尝试替换对 app.py 的调用,以使用Django的 manage.py 或 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.
我在制作我的 start.sh 文件时也发现了this guide中的用法。
#!/bin/sh
pip --no-cache-dir install -r ./requirements.txt -t modules
export PYTHONPATH=$PYTHONPATH:modules
python manage.py runserver
我已经联系了Oracle的支持,但是他们也找不到解决方案。他们的建议是在服务器中 wsgi.py 文件中使用的PORT变量中进行尝试。
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合作?
答案 0 :(得分:1)
该指南绝对具有误导性,将Django和Flask混合使用。
runserver
命令仅用于在本地计算机上进行开发,不适合生产使用。您必须使用某种WSGI网络服务器来运行Django应用。
我建议您使用gunicorn
:
requirements.txt
中添加金枪鱼在您的start.sh
中开始使用金枪鱼:
pip --no-cache-dir install -r ./requirements.txt -t modules
export PYTHONPATH=$PYTHONPATH:modules
gunicorn -b $PORT DjangoProject.wsgi
(免责声明:在阅读您的问题之前,我什至不知道Oracle ACCS的存在)
答案 1 :(得分:0)
在Oracle支持的更多帮助下,我设法使Django在应用程序容器上工作。
问题出在ALLOWED_HOSTS
中的settings.py
变量中。我发现所有教程都建议使用ALLOWED_HOSTS = ['*']
。这不起作用。
为了使Django正常工作,我需要包括Oracle分配给应用程序容器的特定URL。类似于ALLOWED_HOSTS = ['ProjectName-AccountName.oracle-region-0.oraclecloud.com']
。