代码之家  ›  专栏  ›  技术社区  ›  leelum1

在AWS Elastic Beanstalk上部署Geodjango应用程序

  •  3
  • leelum1  · 技术社区  · 7 年前

    我正在尝试在AWS Elastic Beanstalk上部署geodjango应用程序。配置为64位Amazon Linux 2017.09 v2.6.6,运行Python 3.6。尝试部署时出现以下错误:

    Requires: libpoppler.so.5()(64bit) Error: Package: gdal-java-1.9.2-8.rhel6.x86_64 (pgdg93) Requires: libpoppler.so.5()(64bit)
    

    如何安装所需的软件包?我通读了一遍 Setting up Django with GeoDjango Support in AWS Beanstalk or EC2 Instance 但我还是有问题。我的ebextensions当前看起来像:

    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
    
    packages:
      yum:
         git: []
         postgresql95-devel: []
         gettext: []
         libjpeg-turbo-devel: []
         libffi-devel: []
    
    1 回复  |  直到 7 年前
        1
  •  9
  •   leelum1    4 年前

    我要回答我自己的问题,为了我未来的项目和任何其他试图开始geodjango的人。截至2020年7月更新此答案

    创建一个ebextensions文件,以便在部署时在EC2实例上安装GDAL:

    01\u格达尔。配置

    commands:
      01_install_gdal:
        test: "[ ! -d /usr/local/gdal ]"
        command: "/tmp/gdal_install.sh"
    files:
      "/tmp/gdal_install.sh":
        mode: "000755"
        owner: root
        group: root
        content: |
          #!/usr/bin/env bash
          sudo yum-config-manager --enable epel
          sudo yum -y install make automake gcc gcc-c++ libcurl-devel proj-devel geos-devel
    
          # Geos
          cd /
          sudo mkdir -p /usr/local/geos
          cd usr/local/geos/geos-3.7.2
          sudo wget geos-3.7.2.tar.bz2 http://download.osgeo.org/geos/geos-3.7.2.tar.bz2
          sudo tar -xvf geos-3.7.2.tar.bz2
          cd geos-3.7.2
          sudo ./configure
          sudo make
          sudo make install
          sudo ldconfig
    
          # Proj4
          cd /
          sudo mkdir -p /usr/local/proj
          cd usr/local/proj
          sudo wget -O proj-5.2.0.tar.gz http://download.osgeo.org/proj/proj-5.2.0.tar.gz
          sudo wget -O proj-datumgrid-1.8.tar.gz http://download.osgeo.org/proj/proj-datumgrid-1.8.tar.gz
          sudo tar xvf proj-5.2.0.tar.gz
          sudo tar xvf proj-datumgrid-1.8.tar.gz
          cd proj-5.2.0
          sudo ./configure
          sudo make
          sudo make install
          sudo ldconfig
    
          # GDAL
          cd /
          sudo mkdir -p /usr/local/gdal
          cd usr/local/gdal
          sudo wget -O gdal-2.4.4.tar.gz http://download.osgeo.org/gdal/2.4.4/gdal-2.4.4.tar.gz
          sudo tar xvf gdal-2.4.4.tar.gz
          cd gdal-2.4.4
          sudo ./configure
          sudo make
          sudo make install
          sudo ldconfig
    

    如图所示,脚本使用测试函数检查gdal是否已经存在。然后下载Geos、Proj和GDAL库,并将它们安装在usr/local目录中。在撰写本文时,geodjango(Django 3.0)最多支持Geos 3.7、Proj 5.2(它也需要projdatum。当前版本不需要它)和GDAL 2.4 警告 :此安装过程可能需要很长时间。另外,我不是Linux专业人员,所以其中一些命令可能是多余的,但它可以工作。

    最后,我将以下两个环境变量添加到我的Elastic Beanstalk配置中:

    LD_LIBRARY_PATH: /usr/local/lib:$LD_LIBRARY_PATH
    PROJ_LIB: usr/local/proj
    

    如果您仍然有问题,我建议您检查EC2实例中的日志和ssh,以检查安装是否进行。原始贷方至 this post