Dotcloud 架设 Django 的几个问题

标签: dotcloud django 问题 | 发表时间:2011-09-18 15:05 | 作者:(author unknown) Ken
出处:http://simple-is-better.com/

几个月前写过一篇《在Dotcloud上架设Django网站》的文章,有读者将自己遇到的问题留在评论里,也有通过Gtalk联系我进行讨论的同学,在大家的帮助下解决了不少问题,现一并整理在这此。

关于404错误

这里说的是服务器的404错误,Django返回的404错误会有详细的提示,不在讨论范围内。服务器404错误通常——当然也有例外——是Dotcloud设置不当引起的。最常见的是三种情况:

1.目录结构错误

最简单,但可运行的目录结构如下,dmyz是Django项目目录,其他的是配置文件,他们都在dmyz-on-dotcloud之下。

dmyz-on-dotcloud/
├── dmyz
│   ├── __init__.py
│   ├── manage.py
│   ├── settings.py
│   └── urls.py
├── dotcloud.yml
├── requirements.txt
└── wsgi.py

2.wsgi.py文件错误

基本的wsgi.py文件写法如下:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'dmyz.settings' #项目名

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

唯一可能出错的就是项目名了,也就是第2行,这里的’dmyz.settings’应该是Django项目文件夹的名称,比如你的Django项目名为abc,那这里就设置成’abc.settings’。

3.文件错误

这倒是很偶然碰到的,某同学(因为觉得这事太丢人了所以当事人强烈要求隐藏真实姓名)出现了404错误一直找不到问题所在,后来才发现是settings文件某行少了一个逗号,因为它在本机运行和在Dotcloud运行会调用不同的settings文件,所以没发现这个错误。这也说明,如果settings文件错误同样会引发404错误。不过只要能在本机先检查一次,这个问题完全是可以避免的。

静态文件和数据库文件问题

在不进行特别的settings文件设置的情况下,静态文件夹和数据库文件要和Django项目文件夹放在同一级目录下:

dmyz-on-dotcloud/
├── dmyz
│   ├── __init__.py
│   ├── manage.py
│   ├── settings.py
│   └── urls.py
├── dev.db #sqlite数据库文件
├── dotcloud.yml
├── requirements.txt
├── static #静态文件夹
│   ├── css
│   ├── images
│   └── js
└── wsgi.py

如果一定要把dev.db文件放到Django项目目录下,也可以修改settings文件。

#当dev.db文件在Django项目目录下
import os
PROJECT_PATH = os.path.dirname(__file__)
PROJECT_NAME = os.path.basename(PROJECT_PATH)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(PROJECT_PATH,'dev.db'),
        ……
    }
}

当修改数据库文件,不能使用 dotcloud push dev.db 来更新,否则会报错 error: The application name “dev.db” is invalid. 。dotcloud虽然和git很像但毕竟不是git,只要用它的dotcloud push dmyz 命令就可以把dmyz-on-dotcloud里的内容都上传了。

但无论我怎么修改STATICFILES_DIRS,它都会无视Django项目目录和App目录下的static文件夹,所以没有找到把static文件夹也放到Django项目目录下的方法。

域名设置

首先利用alias命令绑定域名:

$ dotcloud alias add dmyz.www dot.dmyz.org
$ dotcloud url dmyz.www
www: http://54bbccc9.dotcloud.com/
www: http://dot.dmyz.org/

然后解析域名,创建一条CNAME记录到gateway.dotcloud.com就可以了。

但要注意的是,alias命令不能绑定空域名,也就是说不能直接绑定 dmyz.org。我们也不能直接做一个CNAME,将dmyz.org转到www.dmyz.org,这就是很常见的域名www解析问题了,因为很常见,所以有很多解决方案,偷懒的做法是直接把dmyz.org做一个A记录到174.129.25.170,这样当用户访问dmyz.org时,它就会自动跳转到www.dmyz.org

收费问题

之前Dotcloud打出99$/月的价格,导致大多数人都对它没了兴趣。其实如果你不需要绑定自己的域名,免费版相比专业版,只是没有足够的服务支持(SLA)和而已,没有其他功能上的限制,相比它带来的便利,这点小限制还是可以接受的。

# 来源:动漫驿站


在微博上关注: 新浪, 腾讯   投稿

最新招聘

更多>>

相关 [dotcloud django 问题] 推荐:

Dotcloud 架设 Django 的几个问题

- Ken - python.cn(jobs, news)
几个月前写过一篇《在Dotcloud上架设Django网站》的文章,有读者将自己遇到的问题留在评论里,也有通过Gtalk联系我进行讨论的同学,在大家的帮助下解决了不少问题,现一并整理在这此. 这里说的是服务器的404错误,Django返回的404错误会有详细的提示,不在讨论范围内. 服务器404错误通常——当然也有例外——是Dotcloud设置不当引起的.

Django class-based view 基础

- Ken - python.cn(jobs, news)
自从Django在1.3中新增了class-based view以来,还没有仔细研究它,开始感觉这个东西是否有点多余. 因为Django已经有了Generic veiws了啊, 可是仔细看过class-based veiw之后, 这种想法打消了, 因为你完全可以用类方法实现你所有的视图, 而代码阅读起来却更容易!.

Django class-based view 深入

- Ken - python.cn(jobs, news)
上一篇我们粗略介绍了Django中的class-based view基础知识, 本篇我们继续来看关于class-based view的高级应用.. 我们继续沿用上篇中的model:. 我们来看看如何对一个Book实例进行更新, 我们要做的只是在视图类中更新 :.     template_name = 'updatebook.html'  #这里是你的模板文件名.

Django 子域的实现

- est - python.cn(jobs, news)
Django作为一个典型的MVC三层框架,有着自己一套full-stack的实现. 针对开发和运行效率而言,有人想用[SQLAlchemy]来替换Django的ORM;有人会吐槽Django的Template模板渲染系统,转而尝试[Jinjia2];但或许没有人对Django的URL处理机制不满. StackOverflow上说,面对愈发大型的系统,Django的URL Routing可能是唯一剩下的模块.

Nginx+uWSGI 部署 Django 应用

- Ken - python.cn(jobs, news)
常见的django webapp 部署方式采用FCGI 或 WSGI的方式部署,今天我这备忘下采用uWSGI的部署方式. 目前我这博客就是采用 Nginx + uWSGI + Python + Django 构建的,部署虽没有php那样扔到目录那么方便,但是并发和性能消耗还是非常不错的. 这里不想赘述关于FCGI, WSGI,uWSGI之间的比较,网上关于这样的对比测试也有很多,例如这里.

知名Python Web框架Django被墙

- Haisheng HU - Solidot
xuby 写道 "今天发现,知名Python Web框架Django的官方网站被墙. 目前尚不清楚是迎八一暂时屏蔽,还是永久屏蔽. " 北京联通ISP可以访问Https版.

合理的组织 django 的 settings 文件

- Ken - python.cn(jobs, news)
django在一个项目的目录结构划分方面缺乏必要的规范,因此不同人的项目组织形式也千奇百怪,而且也很难说谁的做法就比较好. 我根据自己的项目组织习惯,发布了一个项目dj-scaffold. 前些天在reddit上为我的项目dj-scaffold打了个“广告”(见:http://redd.it/kw5d4).

如何阅读Django的文档

- - the5fire的技术博客
“大神你好,请问我打算学习Django,应该怎么做. “Django的文档都是英文,我看不下去,怎么办”. 答:“bla bla bla. “Django的文档那么多,我是不是都得看完才行. 答:“不用,用到哪看到哪,没事可以随意浏览”. 上面的对话经常会出现在我的QQ消息框中,有很多初学Django的人通常都会有这样或者那样的疑问,我之前写过一篇 《从Django的Turotial中可以学到什么》 ,在那篇文章中我总结过,练习完这个新手入门教程,基本上可以独自开发web项目了.

Django介绍、安装配置、基本使用、Django用户注册例子

- - CSDN博客编程语言推荐文章
    Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站.     DjangoMTV的思想.     没有controller,把view当成mvc的controller. 可以配合参考: http://blog.csdn.net/jerome_s/article/details/46340079 ( Python介绍、环境搭建、第一个程序).

Dotcloud 推出正式版,原内测用户可获一年专业版服务

- huacnlee - python.cn(jobs, news)
Dotcloud 推出正式版了,网站的整个界面都变了,CLI也升级了,开始支持付费用户. 不过免费版的还有,只是只能架2个服务了,而原来的测试用户好像送了一年的专业版. 那免费版了也就只能运行一个mysql和一个python,不过好像对open source的有优惠啥的. 99$/M 的专业版,没有其他服务可选,这不符合从小做到大的应用啦.