Python Tech

在Dotcloud上架设Django网站[更新为0.4版]

最近在做的项目需要用到CouchDB和Django,国内没有空间能支持(VPS又麻烦又贵不在考虑范围内),在国外也很难找到。幸好oppih同学推荐了Dotcloud这个网站,现在正在测试期,可以免费申请,支持几乎所有主流的Web编程语言和数据库。而且dotcloud的设置非常简单,每次coding以后运行一条命令就能把整个网站部署上去了。看看这华丽的列表,难道会找不到让你倍感亲切的语言吗?XD

Install

先安装dotcloud,可以在virtulenv里安装,以下是直接在真实环境中安装的方法:

$ sudo easy_install dotcloud
#也可以用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就能找到了,是一串很长的加密字符:

$ dotcloud create dmyz
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()
$ mkdir dmyz-on-dotcloud
$ cd dmyz-on-dotcloud
dmyz-on-dotcloud$ echo django > requirements.txt
$ ls #正确目录结构如下
dmyz dotcloud.yml requirements.txt wsgi.py

一个Django项目就配置结束了,现在只要上传即可。dotcloud的上传命令和git差不多(而且都是ssh方式上传):

dmyz-on-dotcloud$ dotcloud push dmyz
# upload /home/perchouli/workspace/dmyz-on-dotcloud ssh://dotcloud@uploader.dotcloud.com:21122/dmyz
# rsync
……

从弹出的提示可以看到,dotcloud是会下载django程序到服务器上,然后自动安装脚本。和内测时不同,现在会自动生成一个URL地址,在push之后会显示,如果忘了的话可以dotcloud info命令来查看,这是搭建好Django环境后返回的信息:

$ dotcloud info dmyz.www
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
如果其中某一个打不开,就说明官方更新布置方式了。

0 0 投票数
文章评分
订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

24 评论
最新
最旧 最多投票
内联反馈
查看所有评论
trackback

[…] 新建一个项目,目录结构和其他应用基本相同。忘了的话可以参考这篇架设Django的文章。根目录是kanoya-on-dotcloud,kanoya是NodeJS项目目录,目录中的文件列表如下: kanoya-on-dotcloud/ ├── kanoya │   ├── app.js │   ├── node_modules │   ├── package.json │   ├── public │   ├── supervisord.conf │   └── views └── dotcloud.yml […]

sharon
sharon
13 年 前

你好。请问为什么在我push完以后,返回的信息当中url为None呢?

sharon
sharon
13 年 前
回复给  sharon

是No Url found

sharon
sharon
13 年 前
回复给  Perchouli

对就是你说那一段后报的no url found,不是django的。

sharon
sharon
13 年 前
回复给  Perchouli

嗯,加空格后可以了。非常感谢,我想知道你怎么追踪到的报错信息呢?我怎么没找到呢?

sharon
sharon
13 年 前
回复给  sharon

顺便问下在这个服务器怎么调试我的出错信息呢?目前总报404错误,我看过你的那篇博客,感觉哪个都不符合我的。我还没用到静态文件和数据库呢,settings.py没动过它的配置,wsgi.py我对照了也没错。有什么办法把错误信息输出出来呢?

trackback

[…] 之前写过一篇《在Dotcloud上架设Django网站》的文章,有些读者将自己遇到的问题在下面留言了,还有通过Gtalk联系我的同学,也讨论过一些问题,现在其一并整理在这里。 […]

Alan
Alan
13 年 前

想问一下,我上传了一个app,上传过程没有任何错误,但是打开页面是404,请问博主遇到过这样的问题吗?

dan
dan
13 年 前

目前最新版本0.4.3確實沒有了deploy

第二家店员
第二家店员
13 年 前

http://54bbccc9.dotcloud.com/
长门大萌神这个随机的url怎么改成http://www.dmyz.dotcloud.com?我想用dotcloud做静态空间

第二家店员
第二家店员
13 年 前
回复给  Perchouli

谢谢大萌神~你的头像微猎奇啊>.<

嘉音
嘉音
13 年 前

正式版改了以后,我升级到0.4.1,重新填了dotcloud.yml,结果之前架在上面的django没法用了,显示404。ssh连进去没有问题,uwsgi也在运行,这是咋回事呢。

indexofire
indexofire
13 年 前

正式收费,版本升到0.4.x,改动较大,deploy被移除,services需要dotcloud.yml配置文件…

博主有空更新下吧

python.cn(news, jobs)

已推荐到:http://simple-is-better.com/news/378

血衫非弧
13 年 前

挺美的网站,进来留个言~~~~^_^