听起来很简单,但我已经尝试了好几天了,但遇到了一堵砖墙。下面我列出了我迄今为止的尝试,在所有情况下,它在本地运行时都可以完美运行,但是一旦我部署到 Azure,它就会崩溃。请注意,我使用的是 Azure 网站而不是 VM(主要是因为成本问题 - 我知道使用 VM 很可能会解决问题)。我发现完成这项工作的唯一方法是使用项目中部署的 sqlite 数据库。
我尝试过的事情:
1) 使用 azure 合作伙伴 clearDB 创建 MySQL 数据库。“manage.py syncdb”工作正常,可以使用“manage.py runserver”在本地运行和使用该站点。部署到 azure,但由于 Python-MySqlDb 的未解决导入而失败。
2) 创建一个 SQLAzure 数据库并使用django-pyodbc-azure从 django 进行连接。同样,syncdb / runserver 在本地工作正常,部署到 Azure 为 dbapi 模块提供了未解决的导入。
3) 使用 sqllite3 作为数据库引擎 - 在这两种情况下都可以正常工作,但没有冗余和(看似)缓慢的数据访问。
查看在 Azure 网站上部署 Django 应用程序的教程,其中没有一个详细介绍数据库,只是在创建 Hello World 时停止!页。我指的是:这个和这个
我们尝试部署的网站正在一个预留实例上运行。我已经用 Django 1.4 和 1.5 尝试了所有这些。我正在使用 virtualenv / pip 来确保所有依赖项都包含在我正在部署的站点包中,所有这些都包含在 git 存储库中。还通过 FTP 进入以验证是否正在上传所有必需的文件。
当然 - 必须有一种方法来正确设置它?如果没有,将 Django 作为 azure 网站的功能似乎完全没有意义。
非常感谢任何帮助!
编辑
clearDB 解决方案的 Azure 错误日志记录的回溯:
File "D:\home\site\wwwroot\site-packages\django\utils\importlib.py", line 35, in import_module
__import__(name)
File "D:\home\site\wwwroot\site-packages\django\db\backends\mysql\base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
ErrorCode Access is denied.
(0x5)