听起来相当简单,但我已经尝试了好几天了,并打了一堵砖墙。下面我列出了我到目前为止的尝试,在所有情况下,它在本地运行时都能完美运行,但是一旦我部署到Azure就会崩溃。请注意,我使用的是Azure网站而不是VM(主要是因为成本问题 - 我知道使用VM很可能会解决问题)。我发现这项工作的唯一方法是使用项目中部署的sqlite数据库。
我尝试的事情:
1)使用azure partner 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!页。我指的是:this和this
我们尝试部署的网站正在保留的实例上运行。我已经用Django 1.4和1.5尝试了所有这些。我正在使用virtualenv / pip来确保所有依赖项都包含在我正在部署的站点包中,所有这些都包含在git存储库中。还通过FTP进入以验证是否正在上传所有必需的文件。
SURELY - 必须有办法正确设置吗?如果没有,将Django作为蔚蓝网站的一个特征似乎完全没有意义。
任何帮助都非常感谢!
修改
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)
答案 0 :(得分:1)
我让Django和MySQL在Azure上工作。 MySQLdb模块不仅包含MySQLdb目录。它还包含4个以_mysql...
开头的特定于平台的文件。当您推送到Azure时,请确保包含这些文件。如果你不这样做,你的Django项目将在本地工作,但不能远程工作。您不需要使用纯Python MySQL适配器。
答案 1 :(得分:0)
解决了 - 有点:
使用纯python mysql驱动程序工作(因为我猜它可能,这是由azure的环境限制引起的)
供将来参考 - 这个项目为我排序:
https://github.com/jloic/django-mysql-pymysql
注意:Azure似乎不会在站点包中拾取python egg,因此我必须将内容提取到site-packages中并且tadaa才能完成。
下一步是尝试使用cython版本,尽管到目前为止网站的速度似乎很好。