这是我如何做到这一点,在Django 1.5,在DreamHost的:
致力于自己的项目中的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
每个环境设置,命名prod_settings.py
,beta_settings.py
,等等。
我的网站是在~/sites/www.myproject.com
,里面的布局:
myproject
- 符号链接到Django项目
sqlite3.db
- 符号链接在Django项目数据库文件
public/static
- 符合Django项目中定义的STATIC_ROOT
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', '[email protected]'),)
MANAGERS = ADMINS
DATABASES = {} # Appropriately for your production environment
SECRET_KEY = "..." # Your secret key
ALLOWED_HOSTS = ["myproject.com", "www.myproject.com"]
F或者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
,你不要当你与pip
安装软件包需要--user
标志了。当virtualenv
处于活动状态时,所有包都安装在该virtualenv
中。
关于requirements.txt
:
- 在开发这样的创建:
pip freeze > requirements.txt
- 编辑它,只留下您的项目真的需要的软件包。最好删除太多,然后根据需要添加回来。
请注意,virtualenv
是没有必要的,但建议。您可以在passenger_wsgi.py
至/usr/bin/python
之间设置INTERP
。 virtualenv
对于在同一个帐户上拥有多个具有不同依赖关系的Django站点很有用。当您想为您的站点升级Django时,它也很有用,因此您可以在beta.myproject.com
上测试升级,而不会中断主站点上的流量。
最后,如果您使用的是共享主机,DreamHost支持会鼓励为每个网站使用不同的用户帐户,但我不知道这会产生多大的差异。要小心繁重的操作,例如大数据导入,因为如果进程使用大量内存,它可能会被DreamHost杀死。内存上限未指定,但相当低。因此,如果您的网站需要执行一些繁重的操作,则需要对这些操作进行容错,以便在杀死后恢复。
谢谢你的回答!我会尝试这些步骤!现在我得到的是一个500错误。 我已经在我的服务器 – lorenag83
中安装了Python 2.7和Django 1.5,但仍无法使其工作......请问您是如何设置virtualenv的?谢谢! – lorenag83
@ lorenag83我添加了virtualenv的设置步骤。 – janos