gpt4 book ai didi

python - 在 AWS Elastic Beanstalk 上创建 Django super 用户

转载 作者:太空狗 更新时间:2023-10-30 01:33:51 24 4
gpt4 key购买 nike

我有一个名为 MyUser 的自定义用户类。它在本地可以很好地处理注册、登录等。我正在尝试将我的应用程序部署到 AWS Elastic Beanstalk,但在创建我的 super 用户时遇到了一些问题。

我尝试制作一个脚本文件并以官方方式运行它 AWS guide建议。效果不佳,所以我决定尝试第二种方法 suggested here并创建自定义 manage.py 命令来创建我的用户。

部署时,我在日志中收到以下错误。

[Instance: i-8a0a6d6e Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: [CMD-AppDeploy/AppDeployStage0/EbExtensionPostBuild] command failed with error code 1: Error occurred during build: Command 02_createsu failed.

[2015-03-10T08:05:20.464Z] INFO [17937] : Command processor returning results:
{"status":"FAILURE","api_version":"1.0","truncated":"false","results":[{"status":"FAILURE","msg":"[CMD-AppDeploy/AppDeployStage0/EbExtensionPostBuild] command failed with error code 1: Error occurred during build: Command 02_createsu failed","returncode":1,"events":[]}]}


[2015-03-10T08:05:20.463Z] ERROR [17937] : Command execution failed: [CMD-AppDeploy/AppDeployStage0/EbExtensionPostBuild] command failed with error code 1: Error occurred during build: Command 02_createsu failed (ElasticBeanstalk::ActivityFatalError)
at /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.1/lib/elasticbeanstalk/activity.rb:189:in `rescue in exec'
...
caused by: command failed with error code 1: Error occurred during build: Command 02_createsu failed (Executor::NonZeroExitStatus)

代码如下所示:

这是我在 .ebextensions/中的 mysite.config 文件

01_syncdb03_collectstatic 工作正常。

container_commands:
01_syncdb:
command: "django-admin.py migrate --noinput"
leader_only: true
02_createsu:
command: "manage.py createsu"
leader_only: true
03_collectstatic:
command: "django-admin.py collectstatic --noinput"
option_settings:
- namespace: aws:elasticbeanstalk:container:python
option_name: WSGIPath
value: treerating/wsgi.py
- option_name: DJANGO_SETTINGS_MODULE
value: treerating.settings

这是我的 /profiles/management/commands/createsu.py 文件:

from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
from profiles.models import MyUser

class Command(BaseCommand):
def handle(self, *args, **options):
if MyUser.objects.count() == 0:
MyUser.objects.create_superuser("admin", "treerating", "password")

我在 /management//commands/ 文件夹中都有 __init__.py 文件。

我从命令行在本地尝试了这个命令,它工作正常并且创建用户时没有错误。因此命令本身或 MyUser.objects.create_superuser() 应该没有任何问题。

编辑:我尝试更改我的 def handle(): 函数以仅将变量设置为 True,但我仍然遇到相同的错误。所以看起来问题与 create_superuser 函数或句柄无关,而更多与使用 manage.py 有关。

有什么想法吗?

编辑 2:我尝试通过 SSH 执行命令但失败了。然后我按照 this post 中的说明进行操作并手动设置 Python 路径:

source/opt/python/run/venv/bin/activate来源/opt/python/current/env

然后我就能够成功地创建我的用户。官方的 AWS Django 部署指南对此没有提及任何内容。但我猜你应该以某种方式在 .config 文件中设置你的 Python 路径。我不确定具体该怎么做,所以如果有人仍然想回答这个问题,我会测试它并接受它作为答案,如果这能解决部署错误的话。

最佳答案

仔细检查您的辅助方法的链接。您可以在您创建的选项设置 (.ebextensions/02_python.config) 中设置 python 路径:

option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "iotd.settings"
"PYTHONPATH": "/opt/python/current/app/iotd:$PYTHONPATH"
"ALLOWED_HOSTS": ".elasticbeanstalk.com"

但是,我已经这样做了,但仍然遇到您描述的问题,所以您必须看看它是否可以解决。

编辑:原来我的问题是文件结构问题。我在项目目录中有管理目录,而它本应在我的一个应用程序的目录中更深一层。

这使它比示例中显示的更深一层位于我的 manage.py 和 settings.py 之下,但它现在工作正常。

关于python - 在 AWS Elastic Beanstalk 上创建 Django super 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28959063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com