最近在做的项目需要用到CouchDB和Django,国内没有空间能支持(VPS又麻烦又贵不在考虑范围内),在国外也很难找到。幸好oppih同学推荐了Dotcloud这个网站,现在正在测试期,可以免费申请,支持几乎所有主流的Web编程语言和数据库。而且dotcloud的设置非常简单,每次coding以后运行一条命令就能把整个网站部署上去了。看看这华丽的列表,难道会找不到让你倍感亲切的语言吗?XD
Install
先安装dotcloud,可以在virtulenv里安装,以下是直接在真实环境中安装的方法:
#也可以用pip
Searching for dotcloud
Reading http://pypi.python.org/simple/dotcloud/
……
Finished processing dependencies for dotcloud
记得在终端输入dotcloud命令测试是否安装成功。dotcloud也是利用ssh来连接服务器的,所以pulickey什么的自然要先设置好,作为github的常客相信大家这一步都是没问题的。
首先要创建一个命名空间(namespace),作为应用的名称,必须是唯一的。首次命令运行后会提示输入apikey,还很贴心的告诉了你要去哪找这个apikey。没看到?那我再友情提示一下:登录dotcloud点击上面的Setting就能找到了,是一串很长的加密字符:
Warning: /home/perchouli/.dotcloud/dotcloud.conf does not exist.
Enter your api key (You can find it at http://www.dotcloud.com/account/settings): r9z7GDowBt7YlQo91rPE:08553355179041b0408a5563c74dad2ed159b21f
Created resp dmyz
这算是建立好一个namespace了,但还没告诉dotcloud这个网站要使用那种语言,所以接下来开始部署(deploy)。
Deploy
使用dotcloud,目录结构很重要,目录设置错误很容易引发404错误。比如django项目文件夹是dmyz,放在dmyz-on-dotcloud目录中,要在dmyz-on-dotcloud下(即django项目文件夹的父文件夹)创建一个requirements.txt文件,申明使用的模块,wsgi.py文件,指定使用的settings,还有dotcloud.yml文件,说明使用的语言:
www:
type: python
#wsgi.py
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'dmyz.settings' #项目名
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
$ cd dmyz-on-dotcloud
dmyz-on-dotcloud$ echo django > requirements.txt
$ ls #正确目录结构如下
dmyz dotcloud.yml requirements.txt wsgi.py
一个Django项目就配置结束了,现在只要上传即可。dotcloud的上传命令和git差不多(而且都是ssh方式上传):
# upload /home/perchouli/workspace/dmyz-on-dotcloud ssh://dotcloud@uploader.dotcloud.com:21122/dmyz
# rsync
……
从弹出的提示可以看到,dotcloud是会下载django程序到服务器上,然后自动安装脚本。和内测时不同,现在会自动生成一个URL地址,在push之后会显示,如果忘了的话可以dotcloud info命令来查看,这是搭建好Django环境后返回的信息:
www:
config:
path: /
static: static
uwsgi_processes: 4
instances: 1
type: python
url: http://54bbccc9.dotcloud.com/
Afterword
利用dotcloud ssh可以连接上服务器,但不能切换成root(不知道密码……)。我顺便测试了一下Web2Py框架,和一个PHP页面,运行正常,但暂时还没有测试过CouchDB数据库和其他我不熟悉的语言(比如Perl)。总之Dotcloud实在是太方便了,终于不用再纠结于Coding – FTP 这个麻烦的过程了,希望正式发布的时候能提供更多的支持,还有,别被墙掉才好(乌鸦嘴)= =||
2011年6月28日更新
今天收到Dotcloud的邮件,这个产品已经开始收费了,专业版价格是99$/mo,免费版不支持SLA,对内测阶段注册的用户免费提供一年的专业版服务。坦白说这个价格没什么竞争力,用免费版做调试倒是很好,是否要继续使用就看自身情况了……
2011年7月13日更新
新版的dotcloud的环境配置更简单了,但之前配置的网站仍然是可以使用的,如果你不升级dotcloud的话。
升级后搭建:http://www.dmyz.dotcloud.com
内测时搭建:http://www.perchouli.dotcloud.com
如果其中某一个打不开,就说明官方更新布置方式了。
[…] 新建一个项目,目录结构和其他应用基本相同。忘了的话可以参考这篇架设Django的文章。根目录是kanoya-on-dotcloud,kanoya是NodeJS项目目录,目录中的文件列表如下: kanoya-on-dotcloud/ ├── kanoya │ ├── app.js │ ├── node_modules │ ├── package.json │ ├── public │ ├── supervisord.conf │ └── views └── dotcloud.yml […]
你好。请问为什么在我push完以后,返回的信息当中url为None呢?
是No Url found
是dotcloud push后的最后一段输出 *Deployment finished. Your application is available at the following URLs* 这里是No url found?
还是说Django的报错?
对就是你说那一段后报的no url found,不是django的。
请问目录结构是? 如果目录下没有正确的dotcloud.yml会报类似的错误。把运行dotclod push后所有的输出email一份给我吧。
邮件收到了,报错是 Expected a type dictionary but got a type string in “dotcloud.yml”
yml格式要求很严格的,你写的是 type:python,冒号之后没有空格,系统就认为这是一个string而不是dict,加个空格修改成 type: python 再试试。
嗯,加空格后可以了。非常感谢,我想知道你怎么追踪到的报错信息呢?我怎么没找到呢?
顺便问下在这个服务器怎么调试我的出错信息呢?目前总报404错误,我看过你的那篇博客,感觉哪个都不符合我的。我还没用到静态文件和数据库呢,settings.py没动过它的配置,wsgi.py我对照了也没错。有什么办法把错误信息输出出来呢?
dotcloud有报错了的,你可能看漏了,在你发给我的邮件里,”Screenshot-1.png”这张截图,倒数第四行就是:
01:39:19 —> Expected a type dictionary but got a type string in “dotcloud.yml”, line 2, colum 5
[…] 之前写过一篇《在Dotcloud上架设Django网站》的文章,有些读者将自己遇到的问题在下面留言了,还有通过Gtalk联系我的同学,也讨论过一些问题,现在其一并整理在这里。 […]
想问一下,我上传了一个app,上传过程没有任何错误,但是打开页面是404,请问博主遇到过这样的问题吗?
请问目录结构是?
在不进行域名重定向的情况下,最常见的就是目录结构设置不当引起的404错误了。
目前最新版本0.4.3確實沒有了deploy
http://54bbccc9.dotcloud.com/
长门大萌神这个随机的url怎么改成http://www.dmyz.dotcloud.com?我想用dotcloud做静态空间
这个版本支持多应用,而且支持域名别名,可以添加alias以后设置cname,比如我就设置了 http://dot.dmyz.org/ 指向 http://54bbccc9.dotcloud.com
后续,通常只要上传新的应用之后,之前的helloworld页就会被替换,也就是说, http://www.dmyz.dotcloud.com 默认会是你的应用地址,但因为我在内测时已经注册了dmyz.www的应用,所以导致了这个Bug,见官方的回复:
谢谢大萌神~你的头像微猎奇啊>.<
正式版改了以后,我升级到0.4.1,重新填了dotcloud.yml,结果之前架在上面的django没法用了,显示404。ssh连进去没有问题,uwsgi也在运行,这是咋回事呢。
目前常见的包括:
1.使用nginx.conf设置了rewrite,导致页面重定向错误引起的404,请检查rewrite文件
2.目录结构不正确引起的404,请参考本文的Deploy一节设置目录结构
祝好运 =)
正式收费,版本升到0.4.x,改动较大,deploy被移除,services需要dotcloud.yml配置文件…
博主有空更新下吧
确实是更新到0.4.x了,但dotcloud deploy 还是能用…您说的被移除的意思是?…= =?
已推荐到:http://simple-is-better.com/news/378
挺美的网站,进来留个言~~~~^_^