在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等静态文件目前是不能访问的,所以网站没有样式等,这些我将会在下一篇介绍。

声明: 本文采用 BY-NC-SA 协议进行授权 | heroicYang
转载请注明转自《在dotCloud上部署Django项目
标签: ,

这篇文章目前有6条评论

  1. 胡阳: 2011-12-13 10:06

    不错的资源mark之

    沙发王 !
  2. 亦斯: 2011-12-08 12:41

    想问下dotcloud免费版空间大小限制是多少?
    官网只找到数据库限制到10M

    板凳党 !
  3. Andy: 2011-10-18 15:50

    期待您下一篇的Dotcloud之css、js等樣式的教學。

    地板砖 !
  4. 宁波绘图仪维修: 2011-10-02 20:24

    这个东西也能写的出来,真的很牛B

    4 #
  5. 朵未: 2011-09-22 12:59

    纯支持了,对这个一窍不通。

    5 #
  6. 济南装修: 2011-09-03 18:44

    你真的很强大、、。

    6 #
Leave a Reply

(必填项)

(必填项)

(可选)

Spam Protection by WP-SpamFree

字体大小: 减小一号 减小一号
▲ Back to top 繁體