0

私はdjangoの初心者で、プロジェクトをサーバー(共有Dreamhostサーバー)にデプロイしようとして立ち往生しています。見つけたチュートリアルに従いましたが、うまくいきません。私のプロジェクト構造は次のとおりです。

/usr/mydomain.com
    - public
        * media
        * static
    - project
        * __init__.py
        * manage.py
        * settings.py
        * urls.py
        * views.py
    - tmp
    - django-setup.py
    - manage.py
    - passenger_wsgi.py
    - passenger_wsgi.pyc

私の domain.com/admin でのみ動作しますが、単純な ' hello world ' ビューを試してみましたが、表示されません。ドメインにアクセスすると、HTTP 404 しか返されません...

EDIT Python 2.7 と Django 1.5 をインストールしました。500 内部サーバー エラーが発生しました。

4

1 に答える 1

1

これは、Django 1.5 を使用して DreamHost で行う方法です。

  • 私のプロジェクト専用の virtualenv は~/virtualenv/myproject

  • 私のDjangoプロジェクトは、~/projects/myprojectセットアップ付きです:

    • データベース ファイルは、次の名前のプロジェクト ルートにあります。sqlite3.db
    • STATIC_ROOTos.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/staticSTATIC_ROOT-- Django プロジェクトで定義されたへのシンボリック リンク
    • tmp/restart.txt-- touchPassenger にサイト設定をリロードさせるためのこのファイル
    • 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が不要になることに注意してください。がアクティブな場合、すべてのパッケージがその にインストールされます。--userpipvirtualenvvirtualenv

requirements.txt:

  • 次のように開発で作成します。pip freeze > requirements.txt
  • それを編集して、あなたのプロジェクトが本当に本当に必要とするパッケージだけを残してください。削除しすぎて、必要に応じて後で追加することをお勧めします。

virtualenv必須ではありませんが、推奨されることに注意してください。toに設定することで、なしで行うことができINTERPます。同じアカウントに異なる依存関係を持つ複数の Django サイトがある場合に便利です。また、サイトの Django をアップグレードする場合にも役立ちます。これにより、メイン サイトのトラフィックを中断することなくアップグレードをテストできます。passenger_wsgi.py/usr/bin/pythonvirtualenvbeta.myproject.com

最後に、共有ホスティングを使用している場合、DreamHost のサポートでは、Web サイトごとに異なるユーザー アカウントを使用することを推奨していますが、それがどのような違いを生むかはわかりません。プロセスが大量のメモリを使用すると、DreamHost によって強制終了される可能性があるため、大量のデータのインポートなどの負荷の高い操作には注意してください。メモリの上限は指定されていませんが、かなり低いです。したがって、サイトで重い操作を行う必要がある場合は、強制終了後に再開できるように、そのような操作をフォールト トレラントにする必要があります。

于 2013-08-22T21:54:51.620 に答える