我目前正在尝试部署我的第一个基于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]
mysite.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为我的项目看起来像这样。
requirements.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))
答案 0 :(得分:0)
我对FastCGI的了解并不多,但似乎第二个选择是抛出此错误File does not exist: /home/users/myuser/www/mysite.fcgi/favicon.ico
必须是Apache配置文件中的设置。 mysite.settings似乎是正确的,所以可能找到一种方法来删除对.ico文件的引用(我在Mod-WSGI上的django设置将在apache2配置中)或者将ico文件添加到它当前不能的路径被发现。