在 AWS Elastic Beanstalk 上部署 Geodjango 应用程序
Deploying a Geodjango Application on AWS Elastic Beanstalk
我正在尝试在 AWS Elastic Beanstalk 上部署一个 geodjango 应用程序。配置为64bit 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: []
为了我未来的项目和其他任何试图开始使用 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(还需要 projdatum。当前版本不需要它)和 GDAL 2.4 警告:这个安装过程可能需要很长时间。此外,我不是 Linux 专业人士,因此其中一些命令可能是多余的,但它确实有效。
最后,我将以下两个环境变量添加到我的 Elastic Beanstalk 配置中:
LD_LIBRARY_PATH: /usr/local/lib:$LD_LIBRARY_PATH
PROJ_LIB: usr/local/proj
如果您仍有问题,我建议您检查 EC2 实例中的日志和 ssh-ing 以检查安装是否发生。原作归功于 this post
我正在尝试在 AWS Elastic Beanstalk 上部署一个 geodjango 应用程序。配置为64bit 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: []
为了我未来的项目和其他任何试图开始使用 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(还需要 projdatum。当前版本不需要它)和 GDAL 2.4 警告:这个安装过程可能需要很长时间。此外,我不是 Linux 专业人士,因此其中一些命令可能是多余的,但它确实有效。
最后,我将以下两个环境变量添加到我的 Elastic Beanstalk 配置中:
LD_LIBRARY_PATH: /usr/local/lib:$LD_LIBRARY_PATH
PROJ_LIB: usr/local/proj
如果您仍有问题,我建议您检查 EC2 实例中的日志和 ssh-ing 以检查安装是否发生。原作归功于 this post