這是我如何做到這一點,在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