当前位置: 首页 > 知识库问答 >
问题:

在AWS Beanstalk或EC2实例中使用GeoDjango支持设置Django

阮星火
2023-03-14

因此,我曾一度通过Beanstalk使用亚马逊实例(2013.09)ami-35792c5c进行此操作。当时,此扩展脚本在 .eb 扩展/ 中放置在存储库的根目录中时效果很好

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

看起来同一个存储库现在正在返回一个更新版本的popple,它是12. x,现在它的22. x和gdal需要旧版本。

我还在EC2实例上对此进行了测试,得到了同样的错误。但是后来我在amazon上看到了这个关于将AMI锁定到其原始存储库版本的文档。

因此,在启动时通过EC2控制台将其添加到用户选项中可以修复EC2上的问题:

#cloud-config
repo_releasever: 2014.03

当您的 Beanstalk 代表您启动 EC2 实例时,始终具有此选项的最佳方式是什么?我读到有关云初始化的信息,也许通过扩展部署的脚本将是最好的选择?

对此的任何见解都是赞赏的,谢谢。

共有3个答案

杨昆
2023-03-14

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

>

  • 我在这里和这里在线找到并下载了所需的依赖项。以下是有效的版本:

    • lib64jpeg8-8b-5.1.mga1.x86_64.rpm
    • lib64poppler5-0.12.4-2.1mdv2010.1.x86_64.rpm

    压缩了两个. rpm文件

    通过yum在eb扩展/01_packages.config中安装。我必须使用这些命令才能安装它们。

    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
    

  • 马侯林
    2023-03-14

    所以我现在有一个在2013.09堆栈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'
    

    第二个扩展保持不变。这适用于亚马逊实例(2013.09)ami-35792c5c,我还没有尝试过较新的容器。

    备选方案1:

    如果您想减少对eb扩展文件中的repos/rpms的依赖,您可以将所有必需的rpms上传到S3并更新eb扩展“包”以指向您的s3 rpms。使用CORS标头设置您的S3存储桶以供公共获取访问。

    备选方案2:

    创建自定义 AMI,您可以在其中编译来自源的所有依赖项。这样就不会有 rpm 冲突,您也不必使用要自定义的 AMI 提供的默认存储库。请参阅此答案:使用 PostGIS 配置亚马逊弹性豆茎

    还可以查看我制作的工具:

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

    邵星光
    2023-03-14

    我对 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: []
    
     类似资料:
    • 问题内容: 我是Android的新手。 我正在为Android应用程序(位于现有的多模块项目中)设置一个maven模块,该模块使用Google支持库(v4,v7,v13)。使它与Maven一起使用的最合适的方法是什么。 我希望我的项目能够使用Jenkins(Maven)进行构建,因此我无法链接任何特定于IDE的项目或任何非Maven依赖项的方式。 在Jenkins中组合maven / gradle

    • 我试图从我的windows 7机器RDP到EC2实例,但是总是得到 远程桌面无法连接到这些原因之一的远程Comupter 1.)未启用远程桌面到服务器 2.)远程计算机已关闭 3.) 远程计算机在网络上不可用。 我能够RDP其他EC2实例。另外,作为一种解决方法,我能够从其他EC2机器(而不是从我的windows7机器和网络上的其他机器)将RDP映射到subject实例中。 检查了RDP工作和RD

    • 我试图使用AWS CDK旋转一个ec2实例,在很大程度上它工作得很好,但我希望用户数据持久化,这样它就可以在每次引导时运行...令人恼火的是,这并没有文档化(在我可以找到的任何地方),我只是不知道在哪里/如何定义它。下面是我的代码,但是由于userdata是由添加的,所以我不能添加,因为forWindows()将代码放在标记中... 我曾尝试使用及其变体,但没有成功,有人知道如何做到这一点吗? 下

    • 问题内容: com.amazonaws.services.ec2是否包含从现有AMI创建全新EC2实例的方法?我希望通过Java SDK而不是Web管理控制台来执行此操作。 问题答案: RunInstances是方法,它应该在SDK中。

    • 我的目标是能够使用boto3运行Python程序来访问DynamoDB,而无需任何本地配置。我一直在关注这个AWS文档https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html)使用“IAM角色”选项似乎是可行的https://boto3.amazonaws.com/v1/documentatio

    • 我似乎没有连接到远程主机。为什么不呢? 命令行: 这就是剧本。角色create_ec2_instance创建变量,该变量在剧本的第二部分(ansible/playbook.yml)中使用: 这只是一个简单的ec2模块创建。这按预期工作。(ansible/roles/create-ec2-instance/tasks/main.yml): 我还包含了额外的透明方法,尽管这些方法非常基本(ansibl