我一直在尝试了几天,现在设立的Django下的Amazon Web Services'弹性魔豆。我觉得我打的问题是这样的一种:
ERROR - Your WSGIPath refers to a file that does not exist.
我跟着教程here和一切顺利,直到第6步结束,但我不能为我的生命得到任何来自步骤5,#2显示效果比一般的弹性魔豆页面等。当我运行
./manage.py runserver
我的本地机器上,一切正常,因为它应该,但我不能让该页面进行部署。我第一次尝试用小Django的网站,我写我自己。它没有工作,所以我删除了一切我做了一次又一次,没有工作,所以我删除了所有的并用新的Django安装再次尝试。我想那一堆倍小事摆弄,但我觉得我失去了一些东西重要。
我加了python.config文件中this tutorial描述。
这是我的文件结构:
-.git/
-.mysite/
-myapp/
-__init__.py
-models.py
-tests.py
-views.py
-mysite/
-__init__.py
-settings.py
-urls.py
-wsgi.py
-.ebextensions/
-python.config
-manage.py
-mysite.db
-requirements.txt
从我的settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'mysite.db',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
这里的python.config:
container_commands: 01_syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
option_settings:
- namespace: aws:elasticbeanstalk:container:python
option_name: WSGIPath
value: mysite/wsgi.py
- option_name: DJANGO_SETTINGS_MODULE
value: mysite.settings
- option_name: AWS_SECRET_KEY
value: <This is my secret key>
- option_name: AWS_ACCESS_KEY_ID
value: <This is my access key>
是否有其他地方我需要定义我的WSGIPath?有没有办法通过AWS控制台来做到这一点?我应该跳过EB干脆直接使用EC2?
从https://forums.aws.amazon.com/thread.jspa?messageID=396656񠵰
该“.ebextensions”目录必须是在你的应用程序的根级目录,但是从日志输出,该目录是不是在‘mysite的/ .ebextensions’目录。因此,例如,在文档以下Django的教程后,当你运行“混帐aws.push”你的根目录下是这样的:
.
├── .ebextensions
│ └── python.config
├── .elasticbeanstalk
│ ├── config
├── .git
├── .gitignore
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── requirements.txt
取而代之的是:
.
└── mysite
├── .ebextensions
├── .elasticbeanstalk
├── .git
├── .gitignore
├── manage.py
├── mysite
└── requirements.txt
在应用程序的根目录中找到.elasticbeanstalk/optionsettings.your-app-name
。搜索WSGIPath
并确保它是你想要的路径。它看起来像它默认为application.py
。
我有同样的问题(“你WSGIPath指的是不存在的文件”),终于找到了解决办法:
注意:首先,我是在错误的方向搜索,因为EB也显示这样的信息:构建过程中出现错误:命令01_migrate失败。所以我虽然文件,包括*的.config,分别位于正确。
好吧,这里我想一个亿的事情后,什么工作。你必须以更新的环境中运行eb update
。
所以一定要确保.elasticbeanstalk/optionsettings.whatever-env
有WSGIPath设置为你希望它是什么,并确保.ebextensions/whatever.config
有这样的:
option_settings:
- namespace: aws:elasticbeanstalk:container:python
option_name: WSGIPath
value: whatever/wsgi.py
然后运行eb update
,它应该工作。记住,你必须设置别名,以确保您的eb
命令实际工作。例如:
alias eb="python2.7 ../AWS-ElasticBeanstalk-CLI-2.6.3/eb/linux/python2.7/eb"
我有以下AWS的文档,以点后,同样的问题。我所做的,以避免它被初始化通过EB CLI一步一步的应用程序,而无需使用AWS文档指示命令(〜/ ebdjango $ EB初始化-p python2.7 Django的教程),并创建一个脚印的环境一步为好。我参加了EB CLI的步骤如下:
eb init
选择默认区域
输入应用程序名称(默认情况下使用按进入)
证实了我使用Python
选择兼容的Python版本与本地环境
设置SSHeb create
输入环境名称(默认情况下使用按进入)
输入DNS CNAME前缀(使用默认按enter)
选择负载平衡器类型(I选择经典通过输入1)环境创建后我用eb config
打开EB的配置文件,以确认路径到我的WSGI是它应该是什么:
aws:elasticbeanstalk:container:python:
NumProcesses: '1'
NumThreads: '15'
StaticFiles: /static/=static/
WSGIPath: path/to/wsgi.py
如果有任何更改,请务必保存文件并确认一切由你的终端进入eb open
打开使用在前面的步骤中指定的域名浏览器窗口结清了。
解决方案:使用EBCLI
开放eb config
对我来说,这表明WSGIPath: application.py
现在更改为
WSGIPath: my_app/wsgi.py
保存和部署。