![](/img/trans.png)
[英]AWS Elastic Beanstalk hosting PostreSQL on deployed EC2 server with Django
[英]Setting up Django with GeoDjango Support in AWS Beanstalk or EC2 Instance
所以我有一次通过Beanstalk使用Amazon Instance(2013.09)ami-35792c5c。 当这个ebextension脚本在.ebextensions /中放置在你的仓库的根目录时工作得很好
00_repo.config
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'
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
01_app.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/kpmkhv && ./manage.py collectstatic -c --noinput && cd ../..'
leader_only: true
02_syncdb:
command: 'PYTHONPATH=.:..:../lib cd site/kpmkhv && ./manage.py syncdb --noinput && cd ../..'
leader_only: true
03_migrate:
command: 'PYTHONPATH=.:..:../lib cd site/kpmkhv && ./manage.py migrate --noinput && cd ../..'
leader_only: true
option_settings:
- namespace: aws:elasticbeanstalk:container:python
option_name: WSGIPath
value: site/kpmkhv/wsgi.py
- namespace: aws:elasticbeanstalk:container:python:staticfiles
option_name: /static/
value: site/kpmkhv/static/
- option_name: DJANGO_SETTINGS_MODULE
value: settings_prod
所以现在当我使用相同的实例并启动我的环境时,我得到了关于依赖的这个错误。
Error: Package: gdal-libs-1.9.2-5.rhel6.x86_64 (pgdg93)
Requires: libpoppler.so.5()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
看起来同样的repo现在返回更新版本的poppler,它是12.x,现在它的22.x和gdal需要旧版本。
我还在EC2实例上对此进行了测试,并得到了相同的错误。 但后来我从亚马逊那里遇到了关于将AMI锁定到其原始存储库版本的文档 。
因此,在启动时通过EC2控制台将此选项添加到用户选项可修复EC2上的问题:
#cloud-config
repo_releasever: 2014.03
当您的Beanstalk代表您启动EC2实例时,始终拥有此选项的最佳方法是什么? 我读过关于cloud-init的内容,也许通过ebextensions部署的脚本是最好的选择?
对此有任何见解表示赞赏,谢谢。
我对2017.03图像的解决方案是:
commands:
01_yum_update:
command: sudo yum -y update
02_epel_repo:
command: sudo yum-config-manager -y --enable epel
03_install_gdal_packages:
command: sudo yum -y install gdal gdal-devel
files:
"/etc/httpd/conf.d/wsgihacks.conf":
mode: "000644"
owner: root
group: root
content: |
WSGIPassAuthorization On
packages:
yum:
git: []
postgresql95-devel: []
gettext: []
libjpeg-turbo-devel: []
libffi-devel: []
所以我现在在2013.09 stack ami ami-35792c5c上有一个有效的ebextensions工作流程。 对于2014.09堆栈,请参阅其他解决方案。 下面的解决方案通过安装所需的gdal组件与postgis一起使用,00_repo.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'
第二次延期保持不变。 这适用于Amazon Instance(2013.09)ami-35792c5c,我还没有尝试过更新的容器。
备选方案1 :
如果你想从ebextensions文件中减少对repos / rpms的依赖,你可以将所有必需的rpms上传到S3,并更新ebextensions'包'以指向你的s3 rpms。 使用CORS标头设置S3存储桶以进行公共访问。
备选方案2 :
创建自定义AMI,从源代码编译所有依赖项。 这样就不会出现rpm冲突,也不必使用您正在自定义的AMI提供的默认存储库。 请参阅以下答案: 使用PostGIS配置Amazon Elastic Beanstalk
另请查看我制作的工具:
我在2014.09堆栈上遇到了类似的问题,ami id ami-246ed34c并解决了这个问题:
压缩.rpm文件
ebextensions/00_sources.config
以下代码: /etc/mylibs/jpeg8/ : https://s3.amazonaws.com/path-to-first-rpm-file.rpm.zip /etc/mylibs/poppler/ : https://s3.amazonaws.com/path-to-second-rpm-file.rpm.zip
通过ebextensions/01_packages.config
yum安装。 我必须使用这些命令才能安装它们。
commands: jpeg8_repo: command: yum -y install /etc/mylibs/jpeg8/lib64jpeg8-8b-5.1.mga1.x86_64.rpm ignoreErrors: true poppler_repo: command: yum -y install /etc/mylibs/poppler/lib64poppler5-0.12.4-2.1mdv2010.1.x86_64.rpm ignoreErrors: true
我终于能够在2015.03图像和PostgreSQL 9.4上使用我在PostgreSQL yum邮件列表中找到的建议( http://www.postgresql.org/message-id/1429688221.3808.17.camel@gunduz。组织 )
具体来说,我直接从CentOS 6镜像安装了libpoppler。 我还使用了Mike Edward对Amazon Linux特定pgdg rpm的建议。 总的来说,它最终成为一个相当简单的解决方案,看起来像:
yum -y install http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-ami201503-94-9.4-1.noarch.rpm
yum --enablerepo=epel -y install postgis2_94 http://centos-distro.cavecreek.net/centos/6.6/os/x86_64/Packages/poppler-0.12.4-3.el6_0.1.x86_64.rpm
对于2015.03图像,我很幸运将此值用于pgdg repo:
pgdg-redhat93-9.3-1: 'http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-ami201503-93-9.3-1.noarch.rpm'
有了这个,我能够安装gdal而无需引入libpoppler等,作为S3的单独rpms。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.