Si può anche fare a meno di un costume AMI, basta usare ebextensions. Ho provato questo con Amazon Instance (2013.09) ami-35792c5c, quindi usa quello invece di quelli più recenti. Se hai il tuo Django in Elastic Beanstalk 101 completato, sai di ebextensions. Le ebextension qui sotto andranno rapidamente puoi usare le seguenti estensioni. Basta inserire quanto segue nella cartella .ebextensions alla base del repository. Includo anche Postgres 9.3 e memcached in questi file di configurazione:
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
La struttura del mio progetto è un po ' diverso. Il mio file delle impostazioni e urls.py mi sono spostato nella directory principale della directory del progetto, quindi ho dovuto modificare il percorso delle impostazioni in wsgi.py. Quindi aggiustalo di conseguenza. Utilizza i comandi contenitore_opzioni e le opzioni_opzioni che stavi utilizzando in precedenza.
Il file requirements.txt dovrebbe contenere al minimo:
Django==1.7.1
Pillow
psycopg2
ho immagazzinare la maggior parte altre dipendenze python in ../ Lib, che includo nel mio PYTHONPATH così la mia struttura repo è come questo:
<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 strumento di distribuzione che ho costruito, utilizza tessuti. Ho preso ciò che mi piaceva dagli strumenti EB CLI e adattato finché non è stato adattato per django: https://github.com/radlws/django-awseb-tasks
NOTA: È estremamente importante utilizzare AMI ami-35792c5c quando si avvia l'ambiente. È l'unico che ha funzionato per me per questa configurazione. Se altre istanze funzionano, sentiti libero di modificarle in questa risposta. Vedi anche my original question.
Perfetto! Grazie –
Se 'LD_LIBRARYPATH' è' LD_LIBRARY_PATH'? Funziona per me dopo aver apportato questo cambiamento. –
sì, hai ragione. Quello era un errore di battitura lì. Grazie per avermelo fatto notare, ho appena aggiornato la risposta. – yellowcap