Uliweb 在 Dotcloud 上的尝试记录兼谈 Doccloud 的体会
在 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的体会,更进一步的尝试结果会及时写下来。欢迎大家与我交流。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。