Вы также можете сделать это без обычая AMI, просто использовать ebextensions. Я проверил это с Amazon Instance (2013.09) ami-35792c5c, поэтому используйте его вместо новых. Если у вас есть ваш Django in Elastic Beanstalk 101, вы знаете о ebextensions. Ниже приведенные ниже действия будут быстро развиваться, вы можете использовать следующие ebextensions. Просто поместите следующее в папку .ebextensions в базе вашего репозитория. Я также включают в Postgres 9.3 и Memcached в этих конфигурационных файлах:
00_repo_ostgis.config:
files:
"/etc/yum.repos.d/pgdg-93-redhat.repo":
mode: "000644"
owner: root
group: root
content: |
[pgdg93]
name=PostgreSQL 9.3 $releasever - $basearch
baseurl=http://yum.postgresql.org/9.3/redhat/rhel-6-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-93
[pgdg93-source]
name=PostgreSQL 9.3 $releasever - $basearch - Source
failovermethod=priority
baseurl=http://yum.postgresql.org/srpms/9.3/redhat/rhel-6-$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-93
commands:
epel_repo:
command: yum-config-manager -y --enable epel
remi_repo:
command: yum-config-manager -y --enable remi
packages:
rpm:
pgdg-redhat93-9.3-1: 'http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm'
remi: 'http://rpms.famillecollet.com/enterprise/remi-release-6.rpm'
qt4-devel: 'http://mirror.centos.org/centos/6/os/x86_64/Packages/qt-4.6.2-28.el6_5.x86_64.rpm'
01_app_postgis.config:
packages:
yum:
libtiff-devel: ''
libjpeg-devel: ''
libzip-devel: ''
freetype-devel: ''
postgresql-devel: ''
gdal: ''
gdal-python: ''
geos: ''
proj: ''
libmemcached: ''
libmemcached-devel: ''
cyrus-sasl-devel: ''
zlib-devel: ''
container_commands:
01_collectstatic:
command: 'PYTHONPATH=.:..:../lib cd site/<your_project> && ./manage.py collectstatic -c --noinput && cd ../..'
leader_only: true
02_migrate:
command: 'PYTHONPATH=.:..:../lib cd site/<your_project> && ./manage.py migrate --noinput && cd ../..'
leader_only: true
option_settings:
- namespace: aws:elasticbeanstalk:container:python
option_name: WSGIPath
value: site/<your_project>/wsgi.py
- namespace: aws:elasticbeanstalk:container:python:staticfiles
option_name: /static/
value: site/<your_project>/static/
- option_name: DJANGO_SETTINGS_MODULE
value: settings_prod
Структура моего проекта немного другой. Мой файл настроек и urls.py Я перешел в корень каталога проекта, поэтому мне пришлось изменить путь к настройкам в wsgi.py. Поэтому отрегулируйте это соответствующим образом. Просто используйте параметры container_commands и options_settings, которые вы использовали раньше.
Ваш файл requirements.txt должен содержать как минимум:
Django==1.7.1
Pillow
psycopg2
Я храню большинство других зависимостей питона в ../ Lib, которые я включил в моем PYTHONPATH так моя структура репо, как это:
<your_project>/
├── requirements.txt
├── .ebextensions/
│ ├── 00_repos_postgis.config
│ └── 01_app_postgis.config
└── site/
├── <your_project>
│ ├── wsgi.py
│ ├── settings_prod.py # used for EB, like settings_local.py but uses env vars
│ └── settings.py
└── lib/
└── <all pip dependencies>
Checkout инструмент развертывания я построил, он использует ткань. Я взял то, что мне понравилось из инструментов EB CLI, и скорректировался до тех пор, пока он не был адаптирован для django: https://github.com/radlws/django-awseb-tasks
ПРИМЕЧАНИЕ: Очень важно использовать AMI ami-35792c5c при запуске среды. Это единственный, который работал для меня для этой установки. Если другие экземпляры работают, не стесняйтесь редактировать их в этом ответе. Также см. my original question.
Отлично! Спасибо –
Должно ли 'LD_LIBRARYPATH' быть' LD_LIBRARY_PATH'? Это работает для меня после того, как я сделаю это изменение. –
Да, вы правы. Это была опечатка. Спасибо, что указали это, просто обновили ответ. – yellowcap