3

我正在尝试将我的 Geo-Django 应用程序部署到 Zappa 1st 我得到

django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library 
(tried "gdal", "GDAL", "gdal2.2.0", "gdal2.1.0", "gdal2.0.0", "gdal1.11.0", 
"gdal1.10.0", "gdal1.9.0"). Is GDAL installed? If it is, try setting 
GDAL_LIBRARY_PATH in your settings.

然后我点击此链接并添加了以下内容

我在我的 AWS Lambda 控制台中设置了这些环境变量:

"LD_LIBRARY_PATH": "/tmp/code/lib/",
"PROJ_LIB": "/tmp/code/lib/proj4/",

在我的(Django)应用程序的设置文件中,我设置:

GDAL_LIBRARY_PATH = "/tmp/code/lib/libgdal.so.20.1.3"
GEOS_LIBRARY_PATH = "/tmp/code/lib/libgeos_c.so.1"

现在我收到错误

OSError: /tmp/code/lib/libgdal.so.20.1.3: cannot open shared object file: No such file or directory

我怎样才能解决这个问题 ?

我所做的总结

$ pip install zappa
$ zappa init
$ zappa deploy prod

下面是我的 zappa_settings.json

{
    "prod": {
        "aws_region": "us-east-1",
        "django_settings": "Cool.settings",
        "profile_name": "default",
        "project_name": "cool",
        "runtime": "python3.6",
        "s3_bucket": "coolplaces-t47c5adgt",
        "extra_permissions": [{
            "Effect": "Allow",
            "Action": ["rekognition:*"],
            "Resource": "*"
        }]
    }
} 
4

2 回答 2

1

我假设您已将两个必需的库捆绑到您的 Lambda 部署包中。

在 Lambda 容器中,它被提取到/var/task目录中。该目录已经在LD_LIBRARY_PATH. 尝试将其他必要的 ENVVARS 也设置/var/task为。

于 2019-01-22T14:35:04.120 回答
1

好的,我想我几乎明白了这就是我所做的

zappa undeploy prod
pip uninstall zappa
delete the zappa_settings.json file

步骤1)

$ pip install git+git://github.com/bahoo/Zappa.git#egg=zappa

步骤2)然后输入zappa init然后你会看到它会自动创建一个名为的文件zappa_settings.json

添加到您的 zappa_settings.json:

"project_directory": "/tmp/code",(如果这是最后一条语句,则将其复制为没有“,”) "slim_handler": true(如果它给您一个错误提示,请使用它。您的文件太大。我相信它会因为 lib 文件大小为 107.1 MB。也没有"," 因为这是我在 zappa_settings.json 中的最后一条语句,所以没有引号表示 true)

步骤 3)lib在我的根目录中创建了一个名为的目录并将文件复制到其中。(复制这些文件)见下面的图片 https://imgur.com/yyd0ixn

Step4) 在您的 AWS lambda 控制台中。

"LD_LIBRARY_PATH": "/tmp/code/lib/",
"PROJ_LIB": "/tmp/code/lib/proj4/",

记住不要替换code保持原样 https://imgur.com/a/UZIz65B

Step5)将这些添加到您的Django settings.py中:(不要替换code为您的路径保持原样)

GDAL_LIBRARY_PATH = "/tmp/code/lib/libgdal.so.20.1.3"
GEOS_LIBRARY_PATH = "/tmp/code/lib/libgeos_c.so.1"

步骤 6)最后,zappa deploy dev或者zappa deploy prod你想要的任何阶段

步骤 7)如果它给你错误,zappa tail它会给你所有日志并告诉你错误是什么,修复它们并执行zappa update

这是成功的。非常感谢 bahoo 的帮助,并花时间为我简化它。也非常感谢你让 geodjango 在 zappa 上工作

它给了我一个错误,说错误的请求告诉我向我允许的主机添加一个长亚马逊链接。做过某事。现在下一个错误是添加我的数据库。我正在这样做。但我觉得我明白了

有关更多详细信息,请参阅 https://github.com/Miserlou/Zappa/issues/985

于 2019-01-24T06:33:37.167 回答