【发布时间】:2012-07-19 13:00:39
【问题描述】:
问题
我正在尝试将我的 geodjango 应用程序部署到 Heroku。应用程序运行,但是当我尝试查看/admin/world/worldborder/ (the wolrd geodjango tutorial application) 或我自己的自定义 Spots 应用程序(使用 geodjango)时,站点崩溃。
如果我查看我的heroku logs,我会看到测功机出现 500 错误:
2012-07-20T08:16:23+00:00 heroku[router]: GET myapp.herokuapp.com/admin/spots/spot/ dyno=web.1 queue=0 wait=0ms service=654ms status=500 bytes=4922
然后我通过电子邮件收到此错误:
AttributeError: 'module' object has no attribute 'GeoSQLCompiler'
完整的回溯可以在here找到
我的数据库服务器位于其他地方的 aws ec2 实例上,并且在该服务器上通过了these installation instructions。
应用上下文
Django==1.4 gunicorn==0.14.2
我使用以下内容创建了我的 heroku 应用程序
heroku create myapp --stack cedar --buildpack http://github.com/cirlabs/heroku-buildpack-geodjango/
如您所见,我使用custom buildpack 来安装geodjango 所需的所有东西。如果我不使用这个自定义 buildpack 而只是使用heroku create myapp,那么我会得到this long error。
我也将这些添加到 heroku 配置变量中
GEOS_LIBRARY_PATH='/app/.geodjango/geos/lib/libgeos_c.so'
GDAL_LIBRARY_PATH='/app/.geodjango/gdal/lib/libgdal.so'
我已经尝试过了
我用谷歌搜索了这个错误,只发现了一篇帖子here。基本上说要确保我的数据库后端正确设置为使用(我已经这样做了)
'ENGINE': 'django.contrib.gis.db.backends.postgis',
我也试过改成以下:
GEOS_LIBRARY_PATH='/myapp/.geodjango/geos/lib/libgeos_c.so'
GDAL_LIBRARY_PATH='/myapp/.geodjango/gdal/lib/libgdal.so'
这个应用程序在我的本地开发机器上运行良好,python manage.py runserver 或 foreman start -f Profile.dev
为什么我不能在 Heroku 上使用基于 geodjango 的应用程序,我该如何解决这个问题?
【问题讨论】:
-
你解决过这个问题吗?
-
不,我没有。最后,我将我的 Web 应用程序移至 DotCloud。 docs.dotcloud.com/0.4/tutorials/python/geodjango
-
Heroku 对于 GeoDjango 应用程序来说似乎是半生不熟的。您对点云有何看法?
-
很高兴。在经历了痛苦之后,我尝试在 Heroku DotCloud 上部署我的应用程序是小菜一碟。从字面上看,刚刚完成了他们的小教程,中提琴它已经启动并运行了。事实上,我将所有的网络应用程序都移到了 DotCloud。唯一的问题是,我认为 Heroku 免费层要好一些,但甚至没有那么多功能。
-
它支持PostGIS吗?