我目前正在尝试部署我的第一个基于 django 的站点,并且遇到了一些问题,因为我几乎没有配置服务器的经验。
我遵循了主机提供的指南,我的文件现在看起来像这样。
文件夹结构。
mysite/
manage.py
mysite/
apps
settings/
__init__.py
base.py
local.py
production.py
requirements.txt
venv
www/
.htaccess
mysite.fcgi
.htaccess
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA, L]
我的网站.fcgi
#!/usr/local/bin/python
import sys
import os
sys.path.append("home/users/myuser")
from django.core.handlers.wsgi import WSGIHandler
from flup.server.fcgi import WSGIServer
os.chdir("/home/users/myuser/mysite/")
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
WSGIServer(WSGIHandler()).run()
主机提供的指南说他们正在运行 FastCGI,但是在 .htaccess 中添加处理程序时,我看到他们添加了 fcgid-script 而不是 fastcgi-script。所以我两个都试过了。
使用fcgid-script时,我从错误日志中收到此错误:
mod_fcgid: stderr: ImportError: Could not import settings 'mysite.settings'
(Is it on sys.path?): No module named mysite.settings
使用fastcgi-script时,我从错误日志中收到此错误:
File does not exist: /home/users/myuser/www/mysite.fcgi/favicon.ico
我也在为我的项目使用 virtualenv,看起来像这样。
要求.txt
Django==1.4.2
Markdown
PIL=1.1.7
MySQL-python
South
flup
如果有人能看到我做错了什么,我们将不胜感激。谢谢你。
当我使用 virtualenv 时,我必须将其添加到我的 .fcgi 文件中以解决问题
venv = '/home/users/myuser/mysite/venv/bin/activate_this.py'
execfile(venv, dict(__file__=venv))