Django在亚马逊网络服务(AWS)上

bys*_*reg 5 python django amazon-ec2 amazon-web-services amazon-elastic-beanstalk

我已经阅读了这些教程:https://realpython.com/blog/python/deploying-a-django-app-to-aws-elastic-beanstalk/http://docs.aws.amazon.com/elasticbeanstalk/latest /dg/create-deploy-python-django.html

我使用Django 1.8.2似乎亚马逊的文档有点过时(他们仍然使用django-admin.py而不是django-admin),并且它的某些部分不起作用(当东西不起作用时,我回退到realpython链接一).

所以,除非我的管理页面没有加载静态文件,否​​则我完成了所有工作.因此,未加载css文件.

这是我的settings.py:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static/')
Run Code Online (Sandbox Code Playgroud)

我也试过用:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static'). 
Run Code Online (Sandbox Code Playgroud)

但它仍然无效.

这是我的eb配置文件:

container_commands:
  01_migrate:
    command: "source /opt/python/run/venv/bin/activate && python papp/manage.py migrate --noinput"
    leader_only: true
  02_createsuperuser:
    command: "source /opt/python/run/venv/bin/activate && python papp/manage.py createsu"
    leader_only: true
  03_collectstatic:
    command: "source /opt/python/run/venv/bin/activate && python papp/manage.py collectstatic --noinput"

  option_settings:
    "aws:elasticbeanstalk:application:environment":
      DJANGO_SETTINGS_MODULE: "papp.settings"
      PYTHONPATH: "/opt/python/current/app/papp:$PYTHONPATH"
    "aws:elasticbeanstalk:container:python":
      WSGIPath: "papp/papp/wsgi.py"
    "aws:elasticbeanstalk:container:python:staticfiles":
      "/static/": "static/"
Run Code Online (Sandbox Code Playgroud)

我在进行更改后使用了eb deploy命令.

我需要做额外的步骤吗?我在这里读到:默认Django 1.5 admin css无法工作,我需要更改别名,但它是为apache.

我还读取了django doc文件,例如https://docs.djangoproject.com/en/1.8/howto/static-files/,但我不确定要在AWS的STATIC_ROOT中放入什么

任何帮助深表感谢.谢谢

bys*_*reg 3

事实证明,“aws:elasticbeanstalk:container:python:staticfiles”将 EC2 实例上的目录 (/opt/python/current/app/static/ ) 中的文件映射到 /static/

将 settings.py 中的 STATIC_ROOT 设置为 os.path.join(BASE_DIR, '..','static') 解决了该问题