在dotCloud上部署Django项目
上篇提到,在自己练手的同时做了一个腾讯微博的应用Demo,项目是基于Django框架,由于自己没有服务器,所以就寻找了一个支持Django的云服务器—dotCloud。dotCloud是国外的,除了慢一点外,其他还好!dotCloud的最大特点就是帮助用户在部署项目时脱离繁琐的部署步骤,当然还有一个特点是可以免费使用,不过有一些限制!
不过当我按照官方的文档步骤部署自己的Django项目时,却遇到了一些问题,所以记录一下分享给有需要的朋友们!
安装:
1.安装dotCloud的Command-Line Interface client (CLI)
$ sudo easy_install pip && sudo pip install dotcloud
安装好后,直接输入dotcloud,首次运行会提示输入api key,并且给出了去哪儿获取api key的地址,比较人性化。
$ dotcloud Enter your api key (You can find it at http://www.dotcloud.com/account/settings):
2.在dotCloud上创建一个名叫“weiboxdemo”的应用,名称必须唯一,并在本地创建一个名叫“weiboxdemo-on-dotcloud”的目录
$ dotcloud create weiboxdemo
这样,dotCloud的前期工作就做好了!接下来就开始部署Django项目。
部署:
在dotCloud的0.4版本以前,是使用deploy命令来部署的。但是在最新版本中,这种方式已经被丢弃了,而采用描述文件的方式,更加方便!
3.首先,告诉dotCloud,将要部署的项目使用哪一门开发语言和哪种数据库。
切换至上面在本地建立的目录,并在该目录下建立文件dotcloud.yml,用于描述项目所使用的开发语言和数据库类型。
$ cd weiboxdemo-on-dotcloud加入以下内容,表示项目是使用的python。
www:
type:python如果有使用数据库,则需要再加入以下内容,数据库type根据自己的情况填写。
data:
type:mysql由于我这个Demo中使用的是sqllite,所以在这里是不需要以上这部份数据库描述的内容。
4.由于Python项目需要使用WSGI来部署,所以需要继续创建一个名为wsgi.py的文件。如果按照官方文档中提供的,那文件内容应该如下:
import os os.environ['DJANGO_SETTINGS_MODULE'] = 'weiboxdemo.settings' #Django项目中的入口 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)
但是这样部署之后,网站竟然报404错误,即找不到。于是开始谷歌,最后,找到解决方案。修改wsgi.py文件中的内容如下:
import os import sys # 这就是漏掉的内容,需要设置WSGI的路径,让WSGI能正确的读取Django项目 sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__),'weiboxdemo'))) os.environ['DJANGO_SETTINGS_MODULE'] = 'weiboxdemo.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)
5.由于我的Python项目是采用的Django框架,所以是需要在服务器上安装Django的。众所周知,在本地可以通过下载Django的安装包然后使用终端来安装。而dotCloud则采取了更方便的方式,即在目录下建立名叫 requirements.txt的文件,在文件中填上项目所依赖的包名,可以直接填写包名,也可以填写pip地址。我的requirements.txt内容如下:
django pil
第二个是Python的图形处理库Python Imaging Library。
现在配置就已经完成了,将Django项目拷贝到之前建立的“weiboxdemo-on-dotcloud”目录下,我的Django项目名为“weiboxdemo”,所以现在的目录结构如下:
weiboxdemo-on-dotcloud
--weiboxdemo
--dotcloud.yml
--requirements.txt
--wsgi.py接下来就是将项目上传到dotCloud。切换回主目录,使用push命令将本地的“weiboxdemo-on-dotcloud”上传到之前在dotCloud上建立的“weiboxdemo”应用。
$ cd
$ dotcloud push weiboxdemo weiboxdemo-on-dotcloud在这个过程中,dotCloud会自动为你将一切部署完毕,包括依赖包的下载、安装,wsgi的启动等一系列工作。当所有都完成之后,dotCloud会给出刚刚所部署项目的访问地址。
OK,至此,整个部署工作就完成了,打开浏览器访问即可。
当然,还有一些问题,如Django项目中的css、js等静态文件目前是不能访问的,所以网站没有样式等,这些我将会在下一篇介绍。

不错的资源mark之
想问下dotcloud免费版空间大小限制是多少?
官网只找到数据库限制到10M
期待您下一篇的Dotcloud之css、js等樣式的教學。
这个东西也能写的出来,真的很牛B
纯支持了,对这个一窍不通。
你真的很强大、、。