我已经在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时,我得到一个目录列表而不是渲染的网站.我想我已经正确地遵循了教程,但显然不对.我能做些什么来完成这项工作?
我有一个小型VPS服务器,它有一个Nginx前端,提供静态媒体文件,并将Django请求传递回运行mod_wsgi的Apache 2.2 prefork MPM服务器.
有一个(非常)小网站加载和工作,它目前使用143MB的256MB RAM.
使用该top命令,我可以看到Apache使用了52.9%的可用RAM,其中memcache使用了2.1%.
考虑到我打算在这台服务器上安装相当多的Django项目,我想知道我是否可以做些什么来削减Apache使用的RAM量?
我是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,但它有效..
有没有更好的方法来做我想做的事情?
这样做有什么缺点吗?
谢谢
我通过mod_wsgi在Apache中运行Django.我相信Django正在缓存我的服务器端页面,这导致一些功能无法正常工作.
我有一个倒数计时器,通过获取当前服务器时间,确定剩余倒计时时间,并将该数字输出到HTML模板.然后,javascript倒计时器接管并运行用户的倒计时.
当用户刷新页面或使用倒数计时器导航到不同的页面时,会出现问题.计时器似乎偶尔跳到不同的时间,通常在每次刷新时反复回到同一时间.
使用HTTPFox,页面没有从我的浏览器缓存加载,所以它看起来像Django或Apache正在缓存页面.有没有办法禁用此功能?我不会有足够的流量来担心缓存脚本输出.或者我为什么会这样做完全错了?
[编辑]从下面的帖子看,在Django中看起来禁用了缓存,这意味着它必须在其他地方发生,也许在Apache中?
[编辑]我对正在发生的事情有一个更全面的描述:对于服务器的前7个(或左右)请求,页面由脚本呈现并返回,尽管这7个页面中的每个页面似乎都被高速缓存,因为它出现以后.在第8个请求中,服务器提供第一页.在第9个请求中,它提供第二页,依此类推.这将一直持续到我重新启动apache,然后重新开始进程.
[编辑]我已经将mod_wsgi配置为一次只运行一个进程,这会导致计时器在每种情况下重置为相同的值.有趣的是,我的页面上有另一个组件,在每个请求上显示一个随机图像,使用顺序('?'),并且每次都刷新不同的图像,这表明缓存发生在Django而不是Apache中.
[编辑]根据之前的编辑,我回过头来查看了相关的views.py文件,发现倒计时开始变量是在视图函数之外的模块中全局设置的.在视图函数中移动该设置解决了问题.所以事实证明它毕竟不是一个缓存问题.感谢大家对此的帮助.
我的Django应用程序使用Django的标准WSGIHandler在Apache下部署在mod_wsgi中,通过Django端的表单登录对用户进行身份验证.所以对于Apache来说,用户是匿名的.这使得Apache访问日志不那么有用.
有没有办法在处理请求后将用户名通过WSGI包装器传回Apache,以便它出现在Apache访问日志中?
(版本:Django 1.1.1,mod_wsgi 2.5,Apache 2.2.9)
我跟着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)
我究竟做错了什么 ???
我正在使用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指令中.究竟是什么原因?
我在运行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) 我正在尝试设置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)
谢谢您的帮助!
这开始在我们的生产服务器上咬我们的屁股真的很难.我们偶尔会看到这个(每周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) mod-wsgi ×10
django ×6
python ×6
apache ×5
apache2 ×1
caching ×1
deployment ×1
django-admin ×1
numpy ×1
opencv ×1
pyramid ×1
pythonpath ×1
web.py ×1
wsgi ×1