这就是我在 DreamHost 上使用 Django 1.5 的方式:
一个专门用于我的项目的 virtualenv 在~/virtualenv/myproject
我的 Django 项目位于~/projects/myproject
,设置:
- 数据库文件位于项目根目录下,名为
sqlite3.db
STATIC_ROOT
设置为os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', 'static')
,即static
项目根目录下的目录。
- 当项目中的静态文件更新时,我必须运行
python manage.py collectstatic
~/projects/myproject/myproject
我在、named prod_settings.py
、等中有每个环境的设置beta_settings.py
。
我的网站在~/sites/www.myproject.com
,里面的布局:
myproject
-- 指向 Django 项目的符号链接
sqlite3.db
-- 符号链接到 Django 项目中的数据库文件
public/static
STATIC_ROOT
-- 指向Django 项目中定义的符号链接
tmp/restart.txt
--touch
这个文件让乘客重新加载站点设置
passenger_wsgi.py
-- 乘客配置
像这样创建passenger_wsgi.py
:
projectname = 'myproject'
virtualenv_root = '/home/jack/virtualenv/' + projectname
import sys
import os
INTERP = os.path.join(virtualenv_root, 'bin', 'python')
if sys.executable != INTERP:
os.execl(INTERP, INTERP, *sys.argv)
sys.path.append(os.path.join(os.getcwd(), projectname))
os.environ['DJANGO_SETTINGS_MODULE'] = projectname + '.prod_settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
像这样创建prod_settings.py
:
from myproject.settings import *
DEBUG = False
TEMPLATE_DEBUG = DEBUG
ADMINS = (('My Project', 'info@myproject.com'), )
MANAGERS = ADMINS
DATABASES = {} # Appropriately for your production environment
SECRET_KEY = "..." # Your secret key
ALLOWED_HOSTS = ["myproject.com", "www.myproject.com"]
对于 Django 1.4 或更早版本,您需要进行一些小的修改,但同样的想法是可行的。自 Django 1.2 以来,我一直在使用此设置的变体。
我virtualenv
这样设置:
# install pip and virtualenv in my home directory
easy_install --user pip
pip install --user virtualenv
# create a virtualenv dedicated to my django project
mkdir ~/virtualenv
virtualenv --distribute ~/virtualenv/myproject
# activate the virtualenv, install django and all project dependencies
. ~/virtualenv/myproject/bin/activate
cd ~/projects/myproject
pip install -r requirements.txt
请注意,激活 后,当您使用 安装软件包时不再virtualenv
需要该标志。当 a处于活动状态时,所有软件包都安装在该.--user
pip
virtualenv
virtualenv
关于requirements.txt
:
- 像这样在您的开发中创建它:
pip freeze > requirements.txt
- 编辑它,只留下你的项目真正需要的包。最好删除太多,稍后根据需要添加。
请注意,这virtualenv
不是必需的,但建议使用。INTERP
您可以通过设置passenger_wsgi.py
to 来做到这一点/usr/bin/python
。virtualenv
在同一个帐户上拥有多个具有不同依赖项的 Django 站点很有用。当您想为您的站点升级 Django 时,它也很有用,这样您就可以在beta.myproject.com
不中断主站点流量的情况下测试升级。
最后,如果您使用共享主机,DreamHost 支持鼓励为每个网站使用不同的用户帐户,但我不知道这有什么不同。小心繁重的操作,例如大数据导入,因为如果进程使用大量内存,它可能会被 DreamHost 杀死。内存上限未指定,但非常低。所以如果你的站点需要做一些繁重的操作,你需要让这些操作容错,以便在被杀死后恢复。