在 Dotcloud 上架设 Django 网站

dotcloud最近在做的项目需要用到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 perchouli
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 “perchouli

这算是建立好一个namespace了,但还没告诉dotcloud这个网站要使用那种语言,所以接下来开始部署(deploy)。

Deploy

部署需要一个服务名(servername),可以是任意小写字母+数字的组合:

$ dotcloud deploy -t python perchouli.www
Created “perchouli.www”.

命令中的”www”就是servername,建议使用较短的字母组合,因为在doctloud会根据填写的servername生成一个url,这里我用的是www,所以这条命令会生成:http://www.perchouli.dotcloud.com/ 这个url。

现在访问url,就可以看到一些基本的部署信息了。也可以在终端中使用dotcloud info命令,它会给出一些具体信息:

$ dotcloud info perchouli.www
cluster: wolverine
config:
path: /
static: static
created_at: 1304574197.515197
name: perchouli.www
namespace: perchouli
ports:
- name: ssh
url: ssh://dotcloud@www.perchouli.dotcloud.com:3857
- name: http
url: http://www.perchouli.dotcloud.com/
state: running
type: python

Setup & Push

之前执行的命令告诉了dotcloud,我们这个项目需要使用python语言,但dotcloud还不知道你用的是哪个框架,所以现在需要告诉dotcloud这是一个django项目。

在本机上创建Django项目可以点击这里。比如django项目文件夹是dmyz,放在dmyz-on-dotcloud目录中,现在要在dmyz-on-dotcloud下(即django项目文件夹的父文件夹)创建一个requirements.txt文件和wsgi.py文件:

$ mkdir dmyz-on-dotcloud
$ cd dmyz-on-dotcloud
dmyz-on-dotcloud$ echo django > requirements.txt

#wsgi.py
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'dmyz.settings' #项目名
import django.core.handlers.wsgi
djangoapplication = django.core.handlers.wsgi.WSGIHandler()
def application(environ, start_response):
    if 'SCRIPT_NAME' in environ:
        del environ['SCRIPT_NAME']
    return djangoapplication(environ, start_response

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

dmyz-on-dotcloud$ dotcloud push perchouli.www .
# upload . ssh://dotcloud@uploader.dotcloud.com:1060/perchouli.www
# git
……

从弹出的提示可以看到,dotcloud是会下载django程序到服务器上,然后自动安装脚本。现在打开 http://www.perchouli.dotcloud.com/ ,就可以看到Django安装成功的提示了。

Afterword

利用dotcloud ssh可以连接上服务器,但不能切换成root(不知道密码……)。我顺便测试了一下Web2Py框架,和一个PHP页面,运行正常,但暂时还没有测试过CouchDB数据库和其他我不熟悉的语言(比如Perl)。总之Dotcloud实在是太方便了,终于不用再纠结于Coding – FTP 这个麻烦的过程了,希望正式发布的时候能提供更多的支持,还有,别被墙掉才好(乌鸦嘴)= =||

# 作者微博:http://weibo.com/perchouli

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