これは、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
、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 にサイト設定をリロードさせるためのこのファイル
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
が不要になることに注意してください。がアクティブな場合、すべてのパッケージがその にインストールされます。--user
pip
virtualenv
virtualenv
約requirements.txt
:
- 次のように開発で作成します。
pip freeze > requirements.txt
- それを編集して、あなたのプロジェクトが本当に本当に必要とするパッケージだけを残してください。削除しすぎて、必要に応じて後で追加することをお勧めします。
virtualenv
必須ではありませんが、推奨されることに注意してください。toに設定することで、なしで行うことができINTERP
ます。同じアカウントに異なる依存関係を持つ複数の Django サイトがある場合に便利です。また、サイトの Django をアップグレードする場合にも役立ちます。これにより、メイン サイトのトラフィックを中断することなくアップグレードをテストできます。passenger_wsgi.py
/usr/bin/python
virtualenv
beta.myproject.com
最後に、共有ホスティングを使用している場合、DreamHost のサポートでは、Web サイトごとに異なるユーザー アカウントを使用することを推奨していますが、それがどのような違いを生むかはわかりません。プロセスが大量のメモリを使用すると、DreamHost によって強制終了される可能性があるため、大量のデータのインポートなどの負荷の高い操作には注意してください。メモリの上限は指定されていませんが、かなり低いです。したがって、サイトで重い操作を行う必要がある場合は、強制終了後に再開できるように、そのような操作をフォールト トレラントにする必要があります。