Uliweb 在 Dotcloud 上的尝试记录兼谈 Doccloud 的体会

在6月6日我申请到了dotcloud的帐号以后,首先做的事情就是看文档,包括dotcloud上有关python,django,web2py的文档。还有simple-is-better.com上的关于flask部署的文档。然后在前天开始尝试,但是因为我是在windows下,结果无法成功运行,经查文档,dotclould客户端目前只支持Linux,所以我在昨天又切换到我的Ubuntu虚拟机上开始尝试。

在 Dotcloud 上部署 Uliweb 应用

开始我是先创建了一个uliwebproject的简单工程:

uliweb makeproject uliwebproject

cd uliwebproject

uliweb support dotcloud

uliweb makeapp uliwebproject

好,上面的命令将创建一个uliwebproject的项目,为了能运行,需要创建一个app,我起名为uliwebproject。同时为了支持dotcloud,需要执行support命令。这个support命令是新加到uliweb中的,目的是为了支持dotclould。它会向当前项目目录写两个文件,一个是wsgi.py,这个是dotclould需要的,用在uwsgi配置中的。另一个是requirements.txt,将用于配置哪些包要通过pip来安装的,它会在你同步代码之后由dotcloud来自动运行。我发现requirements.txt还是挺不错的,可以减少手工操作的工作量。这里有一个requirements.txt格式的参考。它是pip使用的一种格式。说实话,pip我很少用。它其实是setuptools的一个替代品,不过我平时主要使用setuptools。但是dotcloud使用pip。目前uliweb缺省的requirements.txt中只有一行,就是Uliweb。原本我写的是svn+http://的格式,目的是从svn中获得Uliweb,这样我就不用发布版本。但是在我上传之后,发现无法执行。于是我使用dotcloud ssh来试验svn命令,发现根本没有。搜了一下dotcloud论坛,发现好象只支持git, hg,这不逼着我将uliweb转到git上去嘛。

所以为了能够使用requirements.txt,而不是让用户手工上传uliweb源码,我昨天将uliweb和plugs都打了包上传到了pypi上去了。因此,大家就可以方便安装uliweb和plugs了。不过,uliweb由于还在开发中,所以可能会频繁升级,而requirements.txt中的Uliweb并没有指定版本,所以有可能造成pip会认为当前版本已经是最新的了。因此为了更新,可能有时需要手工更新,那么可以运行:

easy_install -U Uliweb

来升级。

因为上面的项目是最简单的,它只会显示一个“Hello, Uliweb”,所以我们的准备工作做好了。开始部署dotcloud吧。

dotclould deploy -t python uliweb.www

dotcloud push uliweb.www .

OK了。下面可以访问: http://www.uliweb.dotcloud.com 了。请注意,我已经把应用叫为uliweb了,所以你要是尝试的话,不要使用这个名字,换成其它的。

Dotcloud的概念很有意思。我认为它比GAE要好。

其于以下理由:

1. 定制性强。你可以选python, ruby, php等环境,而GAE目前只有python和java。

2. 自由不受限。dotcloud可能不象GAE是集群的(具体是不是我也不清楚),好象是使用HA来做的。但是它提供mysql,mongodb等关系和非关系数据库,这样给你的应用很大的自由。也可以支持象sqlite这样的文件数据库。因为它的静态文件和程序文件不是象GAE是强行分离的,并且我想可能还是由于是HA方式,所以可以将静态文件和程序文件放在一块,所以对某些小应用更方便。python环境是使用2.6,在我尝试GAE时还是2.5。并且dotcloud的python环境不是受限的,而GAE好多东西不能用,还受限。这是让我最不能忍受的。许多本来Python已经提供的功能,在GAE中都要使用其它的替换。这样就造成,为GAE开发的框架基本上无移植的可能。对于我这个做框架的人来说是无法忍受的。所以我没有在GAE上花什么大精力,更何况我开发的基于sqlalchemy的ORM根本无法在GAE上运行。当然这只是出于我个人的需要我认为不好,GAE可能对于做应用的人来说可能还是一个不错的选择吧。另一个GAE的麻烦就是文件数,记得是不能超过1000个吧。而dotcloud则没这个限制。

3. 提供ssh。可以登录到后台进行命令行操作,非常方便。GAE则没有办法。因此有时需要命令行操作时,dotcloud非常方便。

update:

4. 提供nginx+uwsgi的组合也是我正在用的,感觉比较舒服。不过我使用uwsgi自已来监控,而dotcloud使用supervisor来监控。

现在你可以访问:http://www.uliweb.dotcloud.com/ 。不过你会发现它和上面部署的不一样。这是写准备写的一个展示uliweb的项目。目前还没有什么功能,目前你看到的界面和功能全部是来源于plugs,和weblogs一样。因此现在的requirements.txt是这样的:

Uliweb

plugs

SQLAlchemy==0.6.7

MySQL-python

PIL

可以看到除了uliweb和plugs外,还将使用sqlalchemy和mysql,以及PIL。不过mysql我还没有配置上去,打算今天试一试。

静态文件处理我是使用uliweb exportstatic static将所有静态文件抽取到项目的顶层目录上去,符合dotcloud的要求。

以上是我在dotcloud上部署uliweb的体会,更进一步的尝试结果会及时写下来。欢迎大家与我交流。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。