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

lee*_*um1 2 django gdal geodjango amazon-web-services amazon-elastic-beanstalk

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

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

如何安装所需的软件包?我阅读了在AWS Beanstalk或EC2实例中通过GeoDjango支持设置Django的内容,但仍然遇到问题。我的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: []
Run Code Online (Sandbox Code Playgroud)

lee*_*um1 6

为了将来的项目以及尝试使用geodjango的其他人员,我将回答自己的问题。所有功劳都归功于这篇中型文章。我在这里总结一下。

  1. 创建一个EB env并将一个密钥对与其关联。尝试使用t2-micro。
  2. 使用PuTTY,通过实例的公共DNS和从密钥对创建的私钥文件,SSH进入EC2实例。这是Windows程序。对于Linux,请参见https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
  3. 运行以下命令。警告:可能需要30分钟以上

    wget http://download.osgeo.org/geos/geos-3.4.2.tar.bz2
    tar xjf geos-3.4.2.tar.bz2
    cd geos-3.4.2
    ./configure
    make
    sudo make install
    cd ..
    
    wget http://download.osgeo.org/proj/proj-4.9.1.tar.gz
    wget http://download.osgeo.org/proj/proj-datumgrid-1.5.tar.gz
    tar xzf proj-4.9.1.tar.gz
    cd proj-4.9.1/nad
    tar xzf ../../proj-datumgrid-1.5.tar.gz
    cd ..
    ./configure
    make
    sudo make install
    cd ..
    
    sudo yum-config-manager --enable epel
    sudo yum -y update
    
    sudo yum install make automake gcc gcc-c++ libcurl-devel proj-devel geos-devel autoconf automake gdal
    cd /tmp
    
    curl -L http://download.osgeo.org/gdal/2.2.3/gdal-2.2.3.tar.gz | tar zxf -
    cd gdal-2.2.3/
    ./configure --prefix=/usr/local --without-python
    
    make -j4
    sudo make install
    cd /usr/local
    tar zcvf ~/gdal-2.2.3-amz1.tar.gz *
    
    Run Code Online (Sandbox Code Playgroud)

下一部分对于让环境找到gdal非常重要。

export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
sudo ldconfig
Run Code Online (Sandbox Code Playgroud)

然后,只需确保已给出所有正确的权限并使用了正确的数据库引擎,就可以了。希望。