Geodjango 的 Beanstalk 迁移失败
Beanstalk Migration Failing for Geodjango
我想在 aws beanstalk 中部署 geodjango。
我已经尝试过这个解决方案。以前用过。
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: yum --enablerepo=epel -y install gdal gdal-devel
packages:
yum:
git: []
postgresql96-devel: []
gettext: []
libjpeg-turbo-devel: []
libffi-devel: []
但是现在显示这个错误。
AttributeError: /usr/lib64/libgdal.so.1: undefined symbol: GDALGetMetadataDomainList
(ElasticBeanstalk::ExternalInvocationError)
这里是完整的error log
看起来像使用 Django==2.2.1
搞砸了。当前有效的 requirements.txt
如下:
Django==2.1.8
django-cors-headers==2.5.2
django-debug-toolbar==1.11
django-extensions==2.1.6
django-model-utils==3.1.2
djangorestframework==3.9.2
psycopg2-binary==2.8.2
pytz==2019.1
six==1.12.0
sqlparse==0.3.0
我 运行 也关注这个问题,结果是 django 2.2 drops support for GDAL 1.9 and 1.10,EPEL 存储库有 1.7 版。我最终使用以下脚本从源代码安装了所有内容:
commands:
01_execute_script:
test: test ! -e /usr/bin/gdalinfo
command: "/tmp/gdal_install.sh"
files:
"/tmp/gdal_install.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
# Geos
cd ~
wget -O ~/geos-3.7.2.tar.bz2 http://download.osgeo.org/geos/geos-3.7.2.tar.bz2
tar xjf ~/geos-3.7.2.tar.bz2
cd ~/geos-3.7.2
./configure --prefix=/usr --enable-python
make
sudo make install
# Proj4
cd ~
wget -O ~/proj-6.1.0.tar.gz http://download.osgeo.org/proj/proj-6.1.0.tar.gz
wget -O ~/proj-datumgrid-1.7.tar.gz http://download.osgeo.org/proj/proj-datumgrid-1.7.tar.gz
tar xzf ~/proj-6.1.0.tar.gz
cd ~/proj-6.1.0/data
tar xzf ~/proj-datumgrid-1.7.tar.gz
cd ..
./configure --prefix=/usr
make
sudo make install
# GDAL
cd ~
wget -O ~/gdal-2.3.2.tar.gz http://download.osgeo.org/gdal/2.3.2/gdal-2.3.2.tar.gz
tar xzf ~/gdal-2.3.2.tar.gz
cd ~/gdal-2.3.2
./configure --prefix=/usr --with-python --with-pg --with-geos --with-curl
make
sudo make install
sudo ldconfig
如果有人找到更好的解决方案,请告诉我们,从源代码构建所有内容可能需要 30 分钟以上,具体取决于实例大小
@Jorge Alfaro 就在 Django 2.2 dropping support for GDAL 1.9 and 1.10. I tried his solution of installing things from source in an ebextensions .config file, but at least on a small EC2 instance, it would time out even w/the max-3600-seconds setting. A more robust and quick-launching solution is recommended at https://github.com/vancityhuddy/aws-eb-gdal-example 中,你:
- 创建一个 EC2 实例,您可以通过 SSH 连接到该实例,并且它有权推送到 S3 存储桶。
- 在实例上使用 build script 在本地构建 Geos、Proj4 和 GDAL。
- 不要依赖那些版本的 repo 的特定编号 - 请参考 Django's site 关于与您的 Django 版本兼容的版本。
- 为了最大限度地提高可靠性,还建议修改脚本以将基准网格文件引用为 Django's site advises。
- 另请注意,该构建脚本的作者错误地将 Proj4 构建了两次。参考 needed edit.
- 将构建推送到您的 S3 存储桶。
- 如果您不再需要它,请停止并终止您在 #1 中创建的实例。
- Update your Beanstalk config 从 S3 下载构建并依赖它们进行 GDAL 设置。
- 那个 repo 中的 PYTHONPATH 对我不起作用 - 你可能需要更新它,例如/opt/python/current/app
- 例如,如果您通过 yum 在您的服务器上安装了以前运行的 GeoDjango 版本,您可能希望通过 EB 控制台更新您的 Beanstalk 部署设置以使用
immutable
策略,以便这个新的安装是全新的。否则使用滚动部署,您将在同一台服务器上安装不同版本的 GeoDjango,这会导致我的经验错误(例如 OP 的原始 GDALGetMetadataDomainList
)。
我想在 aws beanstalk 中部署 geodjango。
我已经尝试过这个解决方案。以前用过。
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: yum --enablerepo=epel -y install gdal gdal-devel
packages:
yum:
git: []
postgresql96-devel: []
gettext: []
libjpeg-turbo-devel: []
libffi-devel: []
但是现在显示这个错误。
AttributeError: /usr/lib64/libgdal.so.1: undefined symbol: GDALGetMetadataDomainList
(ElasticBeanstalk::ExternalInvocationError)
这里是完整的error log
看起来像使用 Django==2.2.1
搞砸了。当前有效的 requirements.txt
如下:
Django==2.1.8
django-cors-headers==2.5.2
django-debug-toolbar==1.11
django-extensions==2.1.6
django-model-utils==3.1.2
djangorestframework==3.9.2
psycopg2-binary==2.8.2
pytz==2019.1
six==1.12.0
sqlparse==0.3.0
我 运行 也关注这个问题,结果是 django 2.2 drops support for GDAL 1.9 and 1.10,EPEL 存储库有 1.7 版。我最终使用以下脚本从源代码安装了所有内容:
commands:
01_execute_script:
test: test ! -e /usr/bin/gdalinfo
command: "/tmp/gdal_install.sh"
files:
"/tmp/gdal_install.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
# Geos
cd ~
wget -O ~/geos-3.7.2.tar.bz2 http://download.osgeo.org/geos/geos-3.7.2.tar.bz2
tar xjf ~/geos-3.7.2.tar.bz2
cd ~/geos-3.7.2
./configure --prefix=/usr --enable-python
make
sudo make install
# Proj4
cd ~
wget -O ~/proj-6.1.0.tar.gz http://download.osgeo.org/proj/proj-6.1.0.tar.gz
wget -O ~/proj-datumgrid-1.7.tar.gz http://download.osgeo.org/proj/proj-datumgrid-1.7.tar.gz
tar xzf ~/proj-6.1.0.tar.gz
cd ~/proj-6.1.0/data
tar xzf ~/proj-datumgrid-1.7.tar.gz
cd ..
./configure --prefix=/usr
make
sudo make install
# GDAL
cd ~
wget -O ~/gdal-2.3.2.tar.gz http://download.osgeo.org/gdal/2.3.2/gdal-2.3.2.tar.gz
tar xzf ~/gdal-2.3.2.tar.gz
cd ~/gdal-2.3.2
./configure --prefix=/usr --with-python --with-pg --with-geos --with-curl
make
sudo make install
sudo ldconfig
如果有人找到更好的解决方案,请告诉我们,从源代码构建所有内容可能需要 30 分钟以上,具体取决于实例大小
@Jorge Alfaro 就在 Django 2.2 dropping support for GDAL 1.9 and 1.10. I tried his solution of installing things from source in an ebextensions .config file, but at least on a small EC2 instance, it would time out even w/the max-3600-seconds setting. A more robust and quick-launching solution is recommended at https://github.com/vancityhuddy/aws-eb-gdal-example 中,你:
- 创建一个 EC2 实例,您可以通过 SSH 连接到该实例,并且它有权推送到 S3 存储桶。
- 在实例上使用 build script 在本地构建 Geos、Proj4 和 GDAL。
- 不要依赖那些版本的 repo 的特定编号 - 请参考 Django's site 关于与您的 Django 版本兼容的版本。
- 为了最大限度地提高可靠性,还建议修改脚本以将基准网格文件引用为 Django's site advises。
- 另请注意,该构建脚本的作者错误地将 Proj4 构建了两次。参考 needed edit.
- 将构建推送到您的 S3 存储桶。
- 如果您不再需要它,请停止并终止您在 #1 中创建的实例。
- Update your Beanstalk config 从 S3 下载构建并依赖它们进行 GDAL 设置。
- 那个 repo 中的 PYTHONPATH 对我不起作用 - 你可能需要更新它,例如/opt/python/current/app
- 例如,如果您通过 yum 在您的服务器上安装了以前运行的 GeoDjango 版本,您可能希望通过 EB 控制台更新您的 Beanstalk 部署设置以使用
immutable
策略,以便这个新的安装是全新的。否则使用滚动部署,您将在同一台服务器上安装不同版本的 GeoDjango,这会导致我的经验错误(例如 OP 的原始GDALGetMetadataDomainList
)。