我对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 ..。
编辑我已经安装了Python2.7和Django 1.5。现在我得到了一个500内部服务器错误。
发布于 2013-08-22 21:54:51
在DreamHost上使用Django 1.5,我就是这样做的:
~/virtualenv/myproject中~/projects/myproject中,安装程序如下:- The database file is in the project root, named `sqlite3.db`
- `STATIC_ROOT` is set to `os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', 'static')`, that is, the `static` directory in the project root.
- When the static files are updated in the project, I have to run `python manage.py collectstatic`
- I have per-environment settings in `~/projects/myproject/myproject`, named `prod_settings.py`, `beta_settings.py`, and so on.
~/sites/www.myproject.com中,布局在:- `myproject` -- symlink to the Django project
- `sqlite3.db` -- symlink to the database file in the Django project
- `public/static` -- symlink to the `STATIC_ROOT` defined in the Django project
- `tmp/restart.txt` -- `touch` this file to have Passenger reload the site settings
- `passenger_wsgi.py` -- the Passenger configuration
创建这样的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之后,在使用pip安装软件包时不再需要--user标志。当virtualenv处于活动状态时,所有包都安装在该virtualenv中。
关于requirements.txt:
pip freeze > requirements.txt请注意,virtualenv不是必需的,但建议使用。您可以不通过在INTERP中将passenger_wsgi.py中的/usr/bin/python设置为/usr/bin/python来进行操作。virtualenv对于在同一个帐户上有不同依赖项的多个Django站点非常有用。当您想升级站点的Django时,它也很有用,这样您就可以在beta.myproject.com上测试升级,而不会干扰主站点的通信。
最后,如果您使用共享托管,DreamHost支持鼓励为每个网站使用不同的用户帐户,但我不知道这有什么不同。对于大量的操作要小心,例如,大型数据导入,因为如果进程使用了大量内存,它可能会被DreamHost杀死。内存上限未指定,但相当低。因此,如果您的站点需要做一些繁重的操作,您需要使这样的操作容错,以便在死后恢复。
https://stackoverflow.com/questions/18390967
复制相似问题