从 appengine 迁移到完整 django 的下一步是啥?

Posted

技术标签:

【中文标题】从 appengine 迁移到完整 django 的下一步是啥?【英文标题】:What's the next steps for moving from appengine to full django?从 appengine 迁移到完整 django 的下一步是什么? 【发布时间】:2011-06-05 17:19:46 【问题描述】:

我是编程新手,我一直在使用 appengine 来帮助我学习 Python 和通用编码。我很快就好起来了,我一直都很喜欢它:)

Appengine 非常棒,它让我可以潜心编写我的应用程序并获得一些有效的东西(请参阅 http://www.7bks.com/)。但我意识到,我在 appengine 上继续学习的时间越长,我就越会限制自己并将自己锁定在一个单一的系统中。

我想在完整的 django 上进行开发(因为 django 看起来超级酷!)。我的下一步是什么?为了让您了解我的知识水平:

我不是 unix 用户 我不熟悉命令行控件(我仍然完全通过 appengine SDK 使用 appengine/python) 我从来没有在 Python 之外的任何地方编程过,除了 appengine 之外的任何地方 我知道 SQL 这个词,但不知道 mysql 到底是什么或如何使用它。

所以,具体来说:

我需要学习哪些技能才能启动和运行完整的 django/python? 如果我要在其他地方托管,我想我需要学习一些系统管理员类型的技能(甚至可能是 unix?)。有没有提供简单托管(如 appengine)但支持 django 的地方? 我听说 Heroku 很棒,我正在考虑改用 RoR 并去那里

我很感激我可能还没有准备好离开 appengine,但我是一个非常热情的学习者 (http://www.7bks.com/blog/179001),如果我知道的话我会喜欢的我需要学习的所有步骤,以便我可以着手学习它们。目前,我什至不知道我需要学习哪些步骤!

非常感谢。抱歉,这不是一个特定的编程问题,但我环顾四周,并没有为我的经验水平的人找到一个好的方法,我认为其他人会喜欢我们需要学习的东西的好的路线图启动并运行。

谢谢,

汤姆

PS - 如果有人在伦敦并且想亲自向我展示绳索,那就太棒了:)

【问题讨论】:

App Engine 有多个替代平台,包括 Appscale 和 TyphoonAE,因此您不会因为使用 App Engine 而陷入困境。你想离开有什么具体原因吗? 【参考方案1】:

首先,您可以通过学习一门新语言来完成一些 RoR 工作。但是,我不知道这是否对您现在完全有益,因为您仍在学习。目前我会坚持使用 Python 和 Django(或 AppEngine),直到你掌握一些更高级的概念。然后,无论如何,学习新语言会很棒。

关于从 AppEngine 迁移到 Django。没有太多不同。定义模型的方式类似,但定义类型不同。正如您所提到的,托管是另一个考虑因素。

应该有很多基于 Apache 的托管选项(您需要的是 mod_wsgi)。尤其是 Django 已经相当受欢迎,并且托管通常会出现在流行的框架中。

我认为您不需要了解太多系统管理员的知识。这完全取决于您可以找到的托管类型。数据库也是如此。托管服务提供商通常会提供预配置的数据库,因此您不必担心太多。

Django 与许多其他框架一起提供了一个 ORM(对象关系映射器),它通过调用对象上的方法并访问它们的属性来抽象出编写 SQL 的过程。不过,我建议您至少学习一点 SQL 来理解它。

Django tutorial 非常棒!如果您决定走 Django 路线,我强烈建议您完成整个工作。开发服务器捆绑在一起,因此您可以立即尝试您的工作,而无需担心提供者。一旦你有了想要与世界分享的东西,你就可以担心托管了。

我开始使用 Windows 进行 Django 开发,这很容易。您需要做的命令行工作量很少。真的。无需担心,因为本教程涵盖了您需要了解的所有 4 个左右的命令。

Django hosting 提供指向托管服务提供商的链接,但我不确定该列表的最新情况。

Django 入门非常简单。一旦你想托管它,就会涉及更多的工作——但这​​可能会在以后发生。摩擦很小。按照教程,它将带您运行服务器、设置数据库(捆绑了免费的)和编写您的第一个应用程序。

【讨论】:

非常好-非常有帮助,谢谢。听起来不错的起点是完成 django 教程。我有点假设我需要先设置一个服务器,但如果我可以在没有它的情况下继续,那么这是一个很好的方式:) 感谢您澄清有关 SQL 等的一些内容。感觉比以前知识多了一点!【参考方案2】:

是什么让您认为自己被锁定在一个平台上?您知道 Google 的 App Engine SDK 是开源的吗?此外,是否有大学和其他组织正在构建将在 Google 环境之外使用 App Engine SDK 的平台? Amazon EC2 还能够以有限的容量运行 App Engine 的 SDK。我想说锁定可能不是正确的词。

此外,我相信随着时间的推移,AppEngine 会继续改进。谷歌是互联网的领导者;他们做了伟大的事情,并将继续这样做。我相信任何坚持平台即服务的人都会在未来几年体验到这些巨大的好处。

如果您搬家的理由纯粹是学术性的,我建议您开始一个新项目。离开 AppEngine 的 SDK 类似于在已构建的应用程序上从一个框架切换到另一个框架。与任何框架或平台一样,为了将应用程序从平台 A 成功迁移到平台 B,必须处理一些依赖项。

【讨论】:

虽然我同意您的观点,但我不确定 appengine 本身是否应该被视为一个完整的解决方案选项。我喜欢挑选一些东西并坚持下去的想法,但 appengine 现在感觉有点太封闭了。例如,许多“标准”python 模块必须修改才能在 appengine 和一些完整的 django 好处上工作,例如docs.djangoproject.com/en/dev/topics/auth(我认为它不能轻易移植到 appengine 中?)。当然,我对此仍然很陌生,但就我目前的经验而言,我觉得我应该考虑 GAE 以外的其他东西 @Tom - 如果你的工作只需要几个月的时间就可以发布,那么搬家可能没问题。您确实提到这是为了扫描学生证。但对于一个可能跨越数年的长期项目,我建议向前看,考虑一下 App Engine 2 到 5 年后会是什么样子。我的猜测是会有更多的特性和功能可用。搬家是您必须根据项目标准自己做出的决定。祝你的项目好运:)【参考方案3】:

django-nonrel 使得在 Google AppEngine 上运行 Django 成为可能:http://www.allbuttonspressed.com/projects/django-nonrel

此外还有一些云服务,例如 djangy https://www.djangy.com/

通过这两个选项,您可以专注于 Django 和 Python 编程,而不必关心系统管理员的事情。

django 主页上有一个很好的 django 开发入门教程:http://docs.djangoproject.com/en/1.2/intro/tutorial01/

【讨论】:

感谢您指出 django non-rel。您认为这会是 appengine 和其他地方的完整 django 之间的一个很好的垫脚石吗?我已经注册了 djangy,但还没有收到邀请。【参考方案4】:

我需要学习哪些技能才能启动和运行完整的 django/python?

这个问题不容易回答,因为您没有描述该应用程序。你必须真正写下技术堆栈——详细——否则你永远不会知道你需要什么技能。

技能列表主要来自您的技术选择。所以写下你的技术选择。 (这是配置管理的一部分,如果您离开 GAE,您将需要一项重要技能。)

既然你选择谈论你自己而不是你的技术选择,我只能猜测你正在使用什么技术以及你需要什么技能。

这是一个通用技术栈。

    从技术上讲,操作系统并不重要。大多数托管环境使用开源 GNU/Linux,因为许可费用低廉。你也可以做到这一点。您可以从 VMWare 开始并下载一个不错的 Linux 发行版。或者,您可以购买一台非常便宜的 PC 并直接从可以下载和刻录的 DVD 映像安装 Linux。

    我的公司要求我使用他们给我的 Windows PC。所以我在 Windows 中开发并在 VMWare Linux(实际上是 Fedora 14)中进行测试

    要学习 Linux,请从下载和安装开始。然后找教程。然后停止使用 Windows,边做边学。在 Windows 和 Linux 之间来回切换很困难。我可以做到,因为我不太了解 Windows。我将 Windows 视为一个超复杂的 IDE,具有我试图忽略的各种非标准、非 POSIX 怪癖。

    关系数据库管理系统。 Python 带有 SQLite。对于很多应用程序,它工作正常。它之所以有效,是因为网站往往查询繁重而更新/插入很少,因此 SQLite 运行良好。 MySQL 不错。它易于在 Windows 和其他操作系统上安装和运行。

    Django 的好处是您只需要了解很少的 SQL。很少。

    但是,您需要对“数据控制语言”(授予、撤销和创建用户)有一点了解才能使用 MySQL。您不会创建很多用户。但是你确实需要创建一些来让事情运行起来。此外,随着数据库的成熟,您通常需要了解一点“数据定义语言”(Drop Table)。

    您需要知道如何备份和恢复您的数据库。这绝对是至关重要的。

    因此,请查找数据库管理员教程以开始使用。

    如果您的应用程序确实使用了大量复杂的数据,那么您需要购买真正的数据库设计书籍,以便了解 Django 模型的真正工作原理。您无需成为 SQL 专家,但了解数据库内部的实际情况确实会有所帮助。

    应用服务器。我们将 Apache 与 mod_wsgi 模块一起使用。有很多选择。托管服务的要求和允许的范围各不相同。有些预配置了 Apache、mod_wsgi 和 Django。有些没有。有些不允许修改 Apache 配置。有些人会。您可能不需要对此了解太多,因为您可能会找到可以处理详细信息的托管服务。

    Apache 教程无处不在。 mod_wsgi 非常简单;一旦你了解了 Apache 的工作原理,mod_wsgi 就很明显了。

    既然你有东西在工作,大概你知道 html 和 CSS。这些都是重要的技能,但您可能已经具备了。

    既然你有工作,你也可能知道很多关于配置管理和如何控制变化的知识。这并不明显,很多人都做错了。如果你不了解 CM,你应该找一些关于配置管理和变更控制的书籍或文章。

    既然你有工作,你也可能知道很多关于质量保证、单元测试和相关主题的知识。如果您没有一套完整的单元测试,您可能应该在为您的产品的下一个版本开始任何认真的编码之前开始学习单元测试。

    错误跟踪、问题报告、功能请求和其他管理技能也很重要。我不知道你有没有。或者您为此使用了什么工具。如果你自己工作,你不需要太多的手续。但是,即使您是单人开发人员,这些都是关键技能。工作站上的便笺可以工作。重要的是管理错误和功能的技能。

【讨论】:

感谢您的详细解答!我还没有想到一个特定的应用程序——我猜想类似于 7bks,即交互式网络应用程序。当前堆栈是 appengine/python/webapp。【参考方案5】:

嘿,汤姆, 我建议您可以做出的合理评估是仔细列出选择的优缺点。

我不后悔采用的方式是物理机架服务器(2006 年 7 月),迁移到虚拟主机(2008 年),现在迁移到 GAE(2009 年至今)。看到新功能添加到 GAE 的速度和成本效益是留下的更多理由。我同意 django 需要更多的东西,比如在我的案例中,表单预览和使用 GAE 进行表单验证很难或太难设置。

我尝试了 RoR,很快就认为 RoR 需要更多代码才能用更少的代码完成相同的 GAE。 同样使用 GAE,您绝对没有可以破坏的硬件。如果您移动到机架服务器或虚拟主机,您可以免费获得 5 GB 主机,但当您用完 5 GB 时您没有计划,并且可能需要再次迁移,而您不希望这样做.

MySQL 已经存在了 10 多年,是一种完全不同的系统。可以在 MySQL 中保存 blob,但您不认为 GAE 的 blobstore 更好吗?

如果您选择迁移到使用 MySQL 的解决方案,您可以从 GAE 导出数据,然后使用 approcket 等工具将其导入 MySQL。

亲切的问候/Niklas R

【讨论】:

以上是关于从 appengine 迁移到完整 django 的下一步是啥?的主要内容,如果未能解决你的问题,请参考以下文章

谷歌的AppEngine数据存储的选择吗?

从Appengine SDK迁移到Cloud SDK后,在使用AppEngineRun运行时无权创建文件

从 AppEngine 迁移

在 AppEngine 中思考

对 memcache 将 AppEngine py2.7 应用程序迁移到 py3 感到困惑

Appengine Django 模板 - 读取模板标签