让我感谢Stack Overflow社区的各位帮助我解决各种Django和Apache(带有mod_wsgi)错误.到目前为止,我已经询问了5个相关问题,现在我越来越接近在生产网站上获取我的内容了!
所以,我知道有这个很多类似的问题,我已经读了一堆 的 问题, 关于 服务 的静态 媒体 文件 上 的Django.
我读到了STATIC_URL,STATIC_ROOT(很快就会过时)ADMIN_MEDIA_PREFIX,并Alias /media/ ...在Apache配置中设置了一个.我试图逐个测试每个解决方案,但我无法正常工作.
这是我的管理网站现在的样子

我也有一个奇怪的情况,任何子域在我的服务器上工作.例如,我试图设置我的服务器,以便http://www.satoshi.example.com/允许我的正常(非Django)内容,而http://django.satoshi.example.com/将允许我的Django内容将被提供.但是目前任何子域名,无论是satoshi.example.com还是blahblahasdas.satoshi.example.com都在为我的Django文件提供服务(我知道因为我可以/admin在两个站点上访问该页面,尽管它们将在不同的会话中).
反正这里是我这是运行在服务器上的文件CentOS(不知道哪个版本)Apache 2.2.15,Python 2.6.6,django 1.3.1,和mod_wsgi 3.2.
我将发布我认为最相关的文件和配置如下:
每次重新启动时,Apache都会抛出这些错误
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module 'threading' from '/usr/lib64/python2.6/threading.pyc'> ignored
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module 'threading' from …Run Code Online (Sandbox Code Playgroud) 我一直在玩我自己的网络服务器(Apache + Ubuntu)和python.从我所看到的有三种(?)主要方式:
我记得读过Django更喜欢mod_wsgi,我对学习Django很感兴趣(我听说他们的官方教程非常优秀).
什么是"推荐"设置?我认为没有理由再使用mod_python了,但处理.py作为cgi和mod_wsgi之间的区别是什么?是否有可能同时运行它们(你想要吗?),或者这只是一个荒谬的想法,我应该停止思考这些疯狂的事情?
我想我真的只是在寻找关于Apache + Python的入门知识(链接也很好) - 到目前为止我所遇到的一切都非常有用 - 它们主要是指导方针.
我正在尝试在同一域下的子目录中设置两个(或更多)Django应用程序,例如:
http://example.com/site1/
http://example.com/site2/
Run Code Online (Sandbox Code Playgroud)
我知道通常这可以通过设置这样的apache虚拟主机来正常工作:
<VirtualHost *:80>
...
WSGIScriptAlias /site1 /path/to/site1.wsgi
WSGIScriptAlias /site2 /path/to/site2.wsgi
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
现在,我已经确认每个网站都是单独运作的.但是当我尝试并排运行时,apache会将我发送到工作进程首先加载的任何站点.例:
实际上,对于任何给定数量的工作进程,无论WSGIScriptAlias指令如何,它都会循环执行将请求发送到其首先命中的总数.无论我做什么(设置WSGIProcessGroup,守护进程模式与嵌入模式或指令),它都会继续表现出这种行为.
如果有人能指出我在这里做错了什么,那就太惊人了!
我想部署一个Django Web应用程序,因此我需要选择一个Web服务器来提供Python文件.
我应该提一下,我的生产站点将位于一台服务器上,该服务器将托管数据库和Web服务器.作为动力选择,我的目标是将数据库移动到专用服务器等.
这是我的问题:
提前谢谢了
我无法登录django管理页面.当我输入有效的用户名和密码时,它只会再次显示登录页面,没有错误消息
这个问题在django常见问题解答中,但我已经在那里找到答案,仍然无法通过初始登录屏幕.
我在ubuntu 12.04上使用django 1.4和apache2以及modwsgi.
我已经确认我在admin.py文件中注册了admin ,确保在添加后确认syncdb INSTALLED_APPS.当我输入了错误的密码我DO得到一个错误,所以我的管理员用户进行认证,只是没有在进行管理页面.
我已经尝试过设置SESSION_COOKIE_DOMAIN机器的IP和无.(确认cookie域显示为Chrome中机器的IP)
另外,检查用户是否通过shell进行身份验证:
>>> from django.contrib.auth import authenticate
>>> u = authenticate(username="user", password="pass")
>>> u.is_staff
True
>>> u.is_superuser
True
>>> u.is_active
True
Run Code Online (Sandbox Code Playgroud)
尝试使用IE8和chrome canary登录,两者都会导致返回登录屏幕.
还有别的什么我想念????
settings.py
...
MIDDLEWARE_CLASSES = (
'django.middleware.gzip.GZipMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.transaction.TransactionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
'django.contrib.staticfiles',
'django.contrib.gis',
'myapp.main',
)
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_SAVE_EVERY_REQUEST = True
SESSION_COOKIE_AGE = 86400 # …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个基于的应用程序flask.它运行良好,可以手动生成服务器app.run().我已经尝试过mod_wsgi了.奇怪的是,我得到500错误,日志中没有任何内容.我调查了一下,这是我的发现.
print >>sys.stderr, "hello"预期的那样插入一行.该消息显示在错误日志中.我的直觉告诉我,SQLAlchemy会发出错误,也许某些日志配置会导致日志在应用程序的某个时刻被丢弃.
另外,为了测试,我使用的是SQLite.据我所知,这只能从一个线程访问.因此,如果mod_wsgi生成更多线程,它可能会破坏应用程序.
我有点不知所措,因为它只会打破后面的运行mod_wsgi,这似乎也吞噬了我的错误.我该怎么做才能使错误冒泡到apache error_log中?
作为参考,代码可以在这个github永久链接上看到.
可能导致此错误的原因:
$ sudo tail -n 100 /var/log/apache2/error.log'
[Wed Dec 29 15:20:03 2010] [error] [client 220.181.108.181] mod_wsgi (pid=20343): Exception occurred processing WSGI script '/home/username/public_html/idm.wsgi'.
[Wed Dec 29 15:20:03 2010] [error] [client 220.181.108.181] IOError: failed to write data
Run Code Online (Sandbox Code Playgroud)
这是WSGI脚本:
$ cat public_html/idm.wsgi
import os
import sys
sys.path.append('/home/username/public_html/IDM_app/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)
为什么Django无法写入数据?
我正在运行Django 1.2.4
我想去mod_wsgi 3.3上班.当我运行make它告诉我,我错过了Python开发人员包.如何获取和安装Python开发人员包?
我得到的错误如下:
mod_wsgi.c:135:20: error: Python.h: No such file or directory
mod_wsgi.c:138:2: error: #error Sorry, Python developer package does not appear to be installed.
mod_wsgi.c:142:2: error: #error Sorry, mod_wsgi requires at least Python 2.3.0 for Python 2.X.
mod_wsgi.c:150:2: error: #error Sorry, mod_wsgi requires that Python supporting thread.
mod_wsgi.c:153:21: error: compile.h: No such file or directory
mod_wsgi.c:154:18: error: node.h: No such file or directory
mod_wsgi.c:155:20: error: osdefs.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
系统(Amazon EC2实例)
我试图安装django来使用apache和mod_wsgi但是得到这个错误:
ImportError: No module named django.core.handlers.wsgi,
Run Code Online (Sandbox Code Playgroud)
我读到可能是用户错误...
在控制台(ssh)上,使用root访问权限,访问django.core.handlers.wsgi时没有任何问题,但是当apache要求访问它时,它不能
我的django.wsgi:
import os
import sys
sys.path.append('my/rep/parents/of/my/project')
sys.path.append('/usr/lib/python2.4/site-packages/django')
os.environ['DJANGO_SETTINGS_MODULE'] = 'montest.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)
我的vhost.conf:
Alias /media/ my/rep/parents/of/my/projet/montest/media/
<Directory my/rep/parents/of/my/projet/montest/media>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias /montest my/rep/parents/of/my/projet/django.wsgi
<Directory my/rep/parents/of/my/projet>
Order deny,allow
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
编辑:
好我的ldd mod_wsgi.so的结果
linux-gate.so.1 => (0x0013c000)
libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00663000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00bff000)
libdl.so.2 => /lib/libdl.so.2 (0x0023b000)
libutil.so.1 => /lib/libutil.so.1 (0x00420000)
libm.so.6 => /lib/libm.so.6 (0x00110000)
libc.so.6 => /lib/libc.so.6 (0x00240000) /lib/ld-linux.so.2 …Run Code Online (Sandbox Code Playgroud) 我在配置CKAN DataPusher时遇到了以下错误.
无效的命令'WSGIScriptAlias',可能由服务器中未包含的模块拼写错误或定义.配置'configtest'失败.
我怎样才能解决这个问题?