标签: mod-wsgi

用WSGI和apache设置django

我已经在mod_wsgi和apache而不是mod_python上出售了.我安装了所有部件(django,apache,mod_wsgi),但遇到了部署问题.

我在osx 10.5上使用apache 2.2和django 1.0b2,mod_wsgi-2.3

我的应用程序叫做tred.

以下是相关文件:httpd-vhosts(包含在httpd-conf中)

NameVirtualHost tred:80



  ServerName tred

  Alias /admin_media /usr/lib/python2.5/site-packages/django/contrib/admin/media

  
    Order allow,deny
    Allow from all
  

  Alias /media /Users/dmg/Sites/tred/media

  
    Order allow,deny
    Allow from all
  

  Alias / /Users/dmg/Sites/tred/

  
        Order allow,deny
        Allow from all
    

  WSGIScriptAlias / /Users/dmg/Sites/tred/mod_wsgi-handler.wsgi

  WSGIDaemonProcess tred user=dmg group=staff processes=1 threads=10
  WSGIProcessGroup tred


mod_wsgi的-handle.wsgi

import sys
import os

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')
os.environ['DJANGO_SETTINGS_MODULE'] = 'tred.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

当我去http:// tred时,我得到一个目录列表而不是渲染的网站.我想我已经正确地遵循了教程,但显然不对.我能做些什么来完成这项工作?

python apache django mod-wsgi

9
推荐指数
3
解决办法
1万
查看次数

Django部署:削减Apache的开销

我有一个小型VPS服务器,它有一个Nginx前端,提供静态媒体文件,并将Django请求传递回运行mod_wsgi的Apache 2.2 prefork MPM服务器.

有一个(非常)小网站加载和工作,它目前使用143MB的256MB RAM.

使用该top命令,我可以看到Apache使用了52.9%的可用RAM,其中memcache使用了2.1%.

考虑到我打算在这台服务器上安装相当多的Django项目,我想知道我是否可以做些什么来削减Apache使用的RAM量?

apache deployment django mod-wsgi

9
推荐指数
2
解决办法
4578
查看次数

django - 使用基本身份验证保护一些Web路径

我是django的新手,只是尝试了几个简单的实验来弄湿我的脚.我正在运行django 1.0,apache2 prefork和mod_wsgi.我正在尝试使用以下url结构构建一个站点

/
/members
/admin
Run Code Online (Sandbox Code Playgroud)

根基本上是一个公共区域.
应使用基本身份验证(可能由apache进行身份验证)保护成员路径,应
使用内置的django身份验证来保护管理路径.

按照文档中的示例,我基本上可以使用基本身份验证保护整个站点,但这不是我想要的.

除了虚拟主机配置:

WSGIScriptAlias / /django/rc/apache/django.wsgi
<Directory /django/rc/apache>
AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/django/_HTPASSWD/.htpasswd"
Require valid-user

# Order allow,deny
# Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我指出正确的方向(或告诉我= P)如何使这成为可能?

谢谢


编辑:玩了一下我发现我可以做的事情:

WSGIScriptAlias / /django/rc/apache/django.wsgi
<Directory /django/rc/apache>
Order allow,deny
Allow from all
</Directory>

WSGIScriptAlias /members /django/rc/apache_httpauth/django.wsgi
<Directory /django/rc/apache_httpauth>
AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/django/_HTPASSWD/.htpasswd"
Require valid-user

</Directory>
Run Code Online (Sandbox Code Playgroud)

django.wsgi文件基本上是复制到另一个目录的同一文件,因此WSGIScriptAlias是不同的.这是hack-ish,但它有效..

有没有更好的方法来做我想做的事情?
这样做有什么缺点吗?

谢谢

django mod-wsgi basic-authentication django-admin

9
推荐指数
1
解决办法
4238
查看次数

如何禁用Django/mod_WSGI页面缓存

我通过mod_wsgi在Apache中运行Django.我相信Django正在缓存我的服务器端页面,这导致一些功能无法正常工作.

我有一个倒数计时器,通过获取当前服务器时间,确定剩余倒计时时间,并将该数字输出到HTML模板.然后,javascript倒计时器接管并运行用户的倒计时.

当用户刷新页面或使用倒数计时器导航到不同的页面时,会出现问题.计时器似乎偶尔跳到不同的时间,通常在每次刷新时反复回到同一时间.

使用HTTPFox,页面没有从我的浏览器缓存加载,所以它看起来像Django或Apache正在缓存页面.有没有办法禁用此功能?我不会有足够的流量来担心缓存脚本输出.或者我为什么会这样做完全错了?

[编辑]从下面的帖子看,在Django中看起来禁用了缓存,这意味着它必须在其他地方发生,也许在Apache中?

[编辑]我对正在发生的事情有一个更全面的描述:对于服务器的前7个(或左右)请求,页面由脚本呈现并返回,尽管这7个页面中的每个页面似乎都被高速缓存,因为它出现以后.在第8个请求中,服务器提供第一页.在第9个请求中,它提供第二页,依此类推.这将一直持续到我重新启动apache,然后重新开始进程.

[编辑]我已经将mod_wsgi配置为一次只运行一个进程,这会导致计时器在每种情况下重置为相同的值.有趣的是,我的页面上有另一个组件,在每个请求上显示一个随机图像,使用顺序('?'),并且每次都刷新不同的图像,这表明缓存发生在Django而不是Apache中.

[编辑]根据之前的编辑,我回过头来查看了相关的views.py文件,发现倒计时开始变量是在视图函数之外的模块中全局设置的.在视图函数中移动该设置解决了问题.所以事实证明它毕竟不是一个缓存问题.感谢大家对此的帮助.

python apache django caching mod-wsgi

9
推荐指数
1
解决办法
8828
查看次数

WSGI/Django:将用户名传递回Apache以获取访问日志

我的Django应用程序使用Django的标准WSGIHandler在Apache下部署在mod_wsgi中,通过Django端的表单登录对用户进行身份验证.所以对于Apache来说,用户是匿名的.这使得Apache访问日志不那么有用.

有没有办法在处理请求后将用户名通过WSGI包装器传回Apache,以便它出现在Apache访问日志中?

(版本:Django 1.1.1,mod_wsgi 2.5,Apache 2.2.9)

python apache authentication django mod-wsgi

9
推荐指数
1
解决办法
1679
查看次数

在为django 1.4配置mod_wsgi时,在将WSGIPythonPath添加到虚拟主机配置后,apache无法在mac osx上启动

我跟着django文档讨论了如何在mac osx lion上使用mod_wsgi https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/将django 1.4部署到apache ,当我添加WSGIPythonPath指令apache cant时重新启动.如果没有它,我的应用程序在路径中是不存在的.在日志中我收到一个错误

WSGIPythonPath不能在VirtualHost部分中出现

这是我的虚拟主机配置的样子

<VirtualHost *:80>
ServerAdmin jmured@gmail.com
DocumentRoot "/Users/jamo/code/work/projects/bfpd/fapp"
ServerName bfpd.dev
ServerAlias bfpd.dev
ErrorLog "/private/var/log/apache2/bfpd.dev-error_log"
CustomLog "/private/var/log/apache2/bfpd.dev-access_log" common
Alias /static/ /Users/jamo/code/work/projects/bfpd/fapp/fapp/static/
<Directory /Users/jamo/code/work/projects/bfpd/fapp/fapp/static>
  Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
IndexOptions FancyIndexing
</Directory>
WSGIScriptAlias / /Users/jamo/code/work/projects/bfpd/fapp/fapp/wsgi.py
WSGIPythonPath /Users/jamo/code/work/projects/bfpd/fapp/  
    <Directory /Users/jamo/code/work/projects/bfpd/fapp/fapp>
    Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
    </Directory>

   </VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么 ???

django mod-wsgi

9
推荐指数
2
解决办法
8011
查看次数

WSGIPythonPath不起作用

我正在使用mod_wsgi在Apache2上部署我的web.py应用程序.

这是我的virt_host文件,

WSGIPythonPath /home/ubuntu/plotwatt/libplotwatt:/home/ubuntu/plotwatt/pwstage/src

<VirtualHost *:20108>
ServerAdmin gslabrails.dev.plotwatt.com

DocumentRoot /var/www
WSGIScriptAlias / /var/www/currentcost/server.py
WSGIDaemonProcess currentcost user=ubuntu group=ubuntu processes=5 threads=3
WSGIProcessGroup currentcost
WSGIApplicationGroup %{GLOBAL}
AddType text/html .py

<Directory /var/www/currentcost/>
    Order deny,allow
    Allow from all
</Directory>

ErrorLog /var/log/apache2/currentcost_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/currentcost_access.log combined

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我在WSGIPythonPath中给了我名为redisStage的lib的路径.但是,它似乎不适合我.我做错了配置吗?我不能把WSGIPythonPath指令放在VitualHost指令中.究竟是什么原因?

python mod-wsgi apache2 pythonpath

9
推荐指数
1
解决办法
9744
查看次数

ImportError:使用mod_wsgi时无法导入numpy.core.multiarray

我在运行web.py脚本时遇到问题mod_wsgi.脚本使用numpy和opencv.

以下是我的问题的详细信息.

我在盒子上有两个python版本,但我希望脚本能够运行python2.7.所以从解释器我已经确保我可以导入cv和numpy

$ python
Python 2.7.3 (default, Oct  8 2013, 15:53:09) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> import numpy
>>> import sys
>>> sys.prefix
 '/usr/local'
Run Code Online (Sandbox Code Playgroud)

我从源代码下载了mod_wsgi,并使用以下命令对其进行了配置和安装:

./configure --with-python=/usr/local/bin/python2.7 --with-apxs=/usr/sbin/apxs
LD_RUN_PATH=/usr/local/lib/ make 
sudo make install
Run Code Online (Sandbox Code Playgroud)

确保正确配置mod_wsgi.

$ ldd /usr/lib64/httpd/modules/mod_wsgi.so 
    linux-vdso.so.1 =>  (0x00007fff36dff000)
    libpython2.7.so.1.0 => /usr/local/lib/libpython2.7.so.1.0 (0x00007f9462710000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f94624e8000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f94622e4000)
    libutil.so.1 => /lib64/libutil.so.1 (0x00007f94620e1000)
    libm.so.6 => /lib64/libm.so.6 …
Run Code Online (Sandbox Code Playgroud)

python opencv mod-wsgi numpy web.py

9
推荐指数
1
解决办法
2万
查看次数

安装mod_WSGI时遇到问题 - 无法找到输入文件

我正在尝试设置mod_wsgi以用于Django.我安装了apache2,apache2-dev,python2.6,python2.6-dev,但运行configure时出现此错误:

checking for apxs2... /usr/bin/apxs2
checking Apache version... 2.2.14
checking for python... /usr/bin/python
configure: creating ./config.status
config.status: error: cannot find input file: Makefile.in
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

mod-wsgi

8
推荐指数
2
解决办法
3342
查看次数

mod_wsgi错误 - 类.__ dict__在限制模式下无法访问

这开始在我们的生产服务器上咬我们的屁股真的很难.我们偶尔会看到这个(每周1次请求).当时我们发现这是因为mod_wsgi在一些配置中做了一些时髦的东西.由于我们无法追踪错误的原因,我们认为它不需要立即关注.

但是今天,在我们的一台生产服务器上,这确实发生了10%的服务器请求; 这是所有服务器请求的10%失败,出现同样的错误:

mod_wsgi (pid=1718): Target WSGI script '/installation/dir/our-program/prod-dispatch.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=1718): Exception occurred processing WSGI script '/installation/dir/our-program/prod-dispatch.wsgi'.
Traceback (most recent call last):
  File "/installation/dir/our-program/prod-dispatch.wsgi", line 7, in <module>
    from pyramid.paster import get_app
  File "/installation/dir/venv/local/lib/python2.7/site-packages/pyramid-1.3a6-py2.7.egg/pyramid/paster.py", line 12, in <module>
    from pyramid.scripting import prepare
  File "/installation/dir/venv/local/lib/python2.7/site-packages/pyramid-1.3a6-py2.7.egg/pyramid/scripting.py", line 1, in <module>
    from pyramid.config import global_registries
  File "/installation/dir/venv/local/lib/python2.7/site-packages/pyramid-1.3a6-py2.7.egg/pyramid/config/__init__.py", line 61, in <module>
    from pyramid.config.assets import AssetsConfiguratorMixin
  File "/installation/dir/venv/local/lib/python2.7/site-packages/pyramid-1.3a6-py2.7.egg/pyramid/config/assets.py", line 83, in <module>
    @implementer(IPackageOverrides)
  File "/installation/dir/venv/local/lib/python2.7/site-packages/zope.interface-3.8.0-py2.7-linux-x86_64.egg/zope/interface/declarations.py", line 480, in …
Run Code Online (Sandbox Code Playgroud)

python apache mod-wsgi wsgi pyramid

8
推荐指数
1
解决办法
2372
查看次数