3

听起来很简单,但我已经尝试了好几天了,但遇到了一堵砖墙。下面我列出了我迄今为止的尝试,在所有情况下,它在本地运行时都可以完美运行,但是一旦我部署到 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)
4

2 回答 2

1

我有 Django 和 MySQL 在 Azure 上工作。MySQLdb 模块不仅仅包含 MySQLdb 目录。它还包含 4 个以 . 开头的特定于平台的文件_mysql...。确保在推送到 Azure 时包含这些文件。如果你不这样做,你的 Django 项目将在本地工作,但不能在远程工作。您不需要使用纯 Python MySQL 适配器。

这是一个演练:如何在 Azure 上免费托管您的 Django 应用程序

于 2014-04-20T05:19:25.287 回答
0

解决了 - 种类:

使用纯 python mysql 驱动程序可以工作(我猜想它可能是由 azure 的环境限制引起的)

供将来参考 - 这个项目为我整理了所有内容:

https://github.com/jloic/django-mysql-pymysql

注意:Azure 似乎没有在站点包中提取 python 鸡蛋,所以我不得不将内容提取到站点包中,然后一切正常。

下一步是尝试使用 cython 版本,尽管到目前为止该站点的速度似乎还不错。

于 2013-06-26T14:35:38.513 回答