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

在AWS弹性豆茎上部署Geodjango应用程序

郁明诚
2023-03-14

我试图在AWS Elastic Beanstek上部署一个geodjango应用程序。配置是64位AmazonLinux2017.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)

如何安装所需的软件包?我通读了在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: []

共有1个答案

沈飞翔
2023-03-14

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

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

01_gdal.config

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(也需要投影数据。当前版本不需要它)和GDAL 2.4警告:此安装过程可能需要很长时间。此外,我不是Linux专业人士,所以其中一些命令可能是多余的,但它可以工作。

最后,我将以下两个环境变量添加到我的弹性豆茎配置中:

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

如果您仍然有问题,我建议您检查EC2实例中的日志和ssh-ing来检查安装是否发生了。本帖原创

 类似资料:
  • 我有一个用Python 2.7/Tornado编写的服务器,我正在尝试将其部署到AWS上。我遇到了AWS弹性豆茎,它看起来是一种非常方便的方法来部署我的代码。 txt文件中有一个tornado==4.4.2的条目。 我尝试添加一些日志语句来写入外部文件,但该文件没有被创建,这可能意味着应用程序甚至没有启动。 如果有人能提供一些在AWS-EB上部署龙卷风应用程序的步骤,或者我应该如何开始解决这个问题

  • 我想使用 AWS 弹性豆茎在 AWS 上部署一个Spring启动应用程序,但我没有看到上传 jar 文件的选项,只有 zip 和 war (?!) 在本教程中,他们正在部署一个jar文件:https://AWS . Amazon . com/es/blogs/devo PS/deploying-a-spring-boot-application-on-AWS-using-AWS-elastic-b

  • 假设我在Wordpress中创建了一个站点,它运行在Elastic Beanstalk上。现在,在运行的应用程序上,我将创建帖子/页面,上传图像等。也就是说,数据库中的一些数据、视频、文件和记录将被添加到运行的应用程序中。 从我在AWS控制台中看到的情况来看,我可以部署一个应用程序的不同版本--但是根据上面的场景,如果我部署了一个新版本,我会不会丢失直接上传到正在运行的应用程序中的所有文件(即文件

  • 我对Amazazon Web服务提供的弹性IP服务的使用有点困惑。我想主要的想法是,按照以下简单的过程,我可以切换到web应用程序的新版本,而不会停机: null 抱歉,如果有些问题听起来很愚蠢,但我只是一个程序员,这是我第一次建立云系统。 谢谢!

  • 我正在将我的第一个应用程序(Flask)部署到EB,遇到了一个障碍。使用PostgreSQL需要安装psycopg2,但我不知道如何让它运行。 我在这篇文章(Amazon Elastic Beanstalk上的Psycopg2)和这篇文章中都看到了(https://realpython.com/blog/python/deploying-a-django-app-to-aws-elastic-be

  • 我的Flask应用程序需要包cryptography==2.2.2。我在requirements.txt中包含了这一点。 但是当部署到AWS上时,我得到了一个错误 对于那些感兴趣的人,我使用的是运行在64位debian/2.10.0上的Python 3.4。后来我将配置切换到运行在64位Amazon Linux/2.7.0上的Python 3.6,似乎解决了这个问题。 我现在的问题是我得到了这个错