繁体   English   中英

在AWS Beanstalk或EC2实例中使用GeoDjango支持设置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

另请查看我制作的工具:

https://github.com/radlws/django-awseb-tasks

我在2014.09堆栈上遇到了类似的问题,ami id ami-246ed34c并解决了这个问题:

  1. 我在这里这里找到并下载了所需的依赖项。 这些是有效的版本:

  2. 压缩.rpm文件

  3. 将.zip文件上载到S3并确保服务器可以访问它们。
  4. 添加到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
  5. 通过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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM