标签: mod-wsgi

Django Apache重定向问题

我正在使用mod_wsgi将我的Django项目配置为在Apache上运行.我试图在apache上的'cflow'目录下运行Django,但是遇到重定向问题.

我的apache conf看起来像这样:

...
WSGIScriptAlias /cflow "C:\Program Files\Apache Software Foundation\Apache2.2\wsgi\django.wsgi"
<Directory "C:\Program Files\Apache Software Foundation\Apache2.2\wsgi">
    Order allow,deny
    Allow from all
</Directory>
<Directory "C:\Projects\myproject\src">
    Order allow,deny
    Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,如果用户未登录,则会将/cflow/somepage.html的请求重新发送到/accounts/login?next=/cflow/somepage.html.这个新地址不在django root(cflow)之下,因此apache以404 Not Found响应.

我的问题是如何将Django重定向映射到apache上的应用程序根目录下?即我如何使/ accounts/...页面改为/ cflow/accounts/...?

谢谢你的帮助.

apache django redirect mod-wsgi

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

多个django项目,mod_wsgi,单域

我有两个不同的Django"项目",我想使用mod_wsgi在单个域上运行.使用mod_python,我相信有一种方法可以做到这一点,其中某些url路径将映射到一个Django项目,而其他路径映射到另一个项目,所有这些都在服务器级别.

是否可以使用mod_wsgi执行此操作,如果是,如何执行此操作?

我考虑过的事情:Apache虚拟主机描述中的内容,application.wsgi文件中的内容等等.但我还没弄清楚具体如何做到这一点.

谢谢!

django mod-wsgi

12
推荐指数
2
解决办法
3125
查看次数

在Apache上使用Django和mod_wsgi的多个站点

我目前正在使用两个Django应用程序(说A&B)通过Apache托管在同一个域上(但在不同的端口上提供服务).我相信我的设置是正确的,但我在两个网站上随机获得500.500 on A(例如)发生在请求被提供之后B(反之亦然).

在检查错误日志(都说A例如),我看到A的WSGI模块试图访问Bsettings.py文件(这显然不会发生在那里,因为项目路径是不同的),这确实发生了另外,B的wsgi引发了一个例外,抱怨缺少A的settings.py文件].我不确定他们为什么要查找其他设置文件,所有视图的导入(对于settings.py)都是特定于各个项目的.

这是我的设置:

A正在港口服务8080,B正在港口服务80.

虚拟主机:

<VirtualHost *:8080>

  ServerAdmin x@x.net
  ServerName  string1

  Alias /static/ /home/PATH_TO_PROJECT_A/static/

  <Directory /home/PATH_TO_PROJECT_A/static>
  Order deny,allow
  Allow from all
  </Directory>

  WSGIScriptAlias / /home/PATH_TO_PROJECT_A/wsgi.py

  <Directory /home/PATH_TO_PROJECT_A>
  <Files wsgi.py>
  Order deny,allow
  Allow from all
  </Files>
  </Directory>


  LogLevel warn
  ErrorLog  /SOME_PATH/errorA.log
  CustomLog /SOME_PATH/accessA.log combined
</VirtualHost>


<VirtualHost *:80>
  ServerName string1
  ServerAdmin x@x.net

  Alias /APP_B/static/ /home/PATH_TO_PROJECT_B/static/

  <Directory /home/PATH_TO_PROJECT_B/static>
  Order …
Run Code Online (Sandbox Code Playgroud)

apache django mod-wsgi

12
推荐指数
1
解决办法
3229
查看次数

使用virtualenv或Python运行mod_wsgi,其版本与系统默认版本不同

我想让我的Flask应用程序在CentOS服务器上运行.基本上问题是我安装了Python 2.6,/usr/bin其中安装了系统默认和Python 3.4 /usr/local/bin.我想使用Python 3.4 virtualenv或至少Python 3.4解释器来运行我的应用程序mod_wsgi.

我已经创建了virtualenv ~/virtualenvs/flask.

我有这个WSGI脚本:

import os
import sys
from logging import Formatter, FileHandler

APP_HOME = r"/home/fenikso/Album"


activate_this = os.path.join("/home/fenikso/virtualenvs/flask/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))

sys.path.insert(0, APP_HOME)
os.chdir(APP_HOME)

from app import app

handler = FileHandler("app.log")
handler.setFormatter(Formatter("[%(asctime)s | %(levelname)s] %(message)s"))
app.logger.addHandler(handler)
application = app
Run Code Online (Sandbox Code Playgroud)

并在Apache中配置以下:

<VirtualHost *:80>
        ServerName album2.site.cz
        Alias /static "/home/fenikso/Album/static"
        Alias /photos "/home/fenikso/Album/photos"
        Alias /thumbs "/home/fenikso/Album/thumbs"
        WSGIScriptAlias / "/home/fenikso/Album/wsgi.py"
        <Directory "/home/fenikso/Album">
            AllowOverride None
            Allow from all
        </Directory>
        <Directory "/home/fenikso/Album/static">
            AllowOverride None
            Allow from …
Run Code Online (Sandbox Code Playgroud)

python apache mod-wsgi flask

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

从mod_python转换为mod_wsgi

我的网站是用Python编写的,目前在Apache的mod_python下运行.最近我不得不加入一些让我认为可能值得将网站转换为mod_wsgi的丑陋黑客.但我已经习惯了使用一些mod_python的的工具类的,特别是FieldStorageSession(有时Cookie),并从扫描PEP 333,我看不出有任何等同于这些.(这并不奇怪,因为我了解这些实用程序不属于WSGI规范)

问题是,我可以在WSGI中使用这些mod_python实用程序类的"标准"(即通常接受的)替换,还是我/我应该自己编写?

(仅供参考:目前正在使用Python 2.5)

python mod-wsgi mod-python

11
推荐指数
1
解决办法
5384
查看次数

Django Apache mod_wsgi 500

我在CentOS上部署了一个Django应用程序.这是我的httpd.conf文件的样子:

WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>

    WSGIDaemonProcess safe python-path=/usr/lib/python2.6/site-packages
    WSGIProcessGroup safe
    WSGIScriptAlias / /opt/safe/safe/wsgi.py

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

编辑:这是我的 TEMPLATE_DIRS

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    "/opt/safe/static/templates",
    "/var/www/html/static/templates",
)
Run Code Online (Sandbox Code Playgroud)

编辑:这是我的管理员/电子邮件设置:

ADMINS = (
# ('Your Name', 'your_email@example.com'),
('David', 'david@localhost'),
)

SEND_BROKEN_LINK_EMAILS = True

DEFAULT_FROM_EMAIL = 'david@localhost'
SERVER_EMAIL = DEFAULT_FROM_EMAIL
Run Code Online (Sandbox Code Playgroud)

在我的模板目录中,我已经定义了一个自定义500.html文件.当我设置我settings.py …

apache django mod-wsgi

11
推荐指数
2
解决办法
6987
查看次数

Django - 标题之前的脚本输出结束

基本hello.wsgi工作正常.其他django应用程序也完美地与完全相同的virtualenv版本.

mod_wsgi 挂起约10分钟(!!!),我发现没有什么能指出我的问题(loglevel debug):

[Tue Mar 25 23:11:08.878578 2014] [:info] [pid 4719:tid 140720591648640] mod_wsgi (pid=4719): Attach interpreter ''.
[Tue Mar 25 23:11:08.879171 2014] [:info] [pid 4717:tid 140720591648640] mod_wsgi (pid=4717): Attach interpreter ''.
[Tue Mar 25 23:11:10.891348 2014] [authz_core:debug] [pid 4730:tid 140720477226752] mod_authz_core.c(802): [client 127.0.0.1:40844] AH01626: authorization result of Require all granted: granted
[Tue Mar 25 23:11:10.891391 2014] [authz_core:debug] [pid 4730:tid 140720477226752] mod_authz_core.c(802): [client 127.0.0.1:40844] AH01626: authorization result of <RequireAny>: granted
[Tue Mar 25 23:11:10.891489 2014] [authz_core:debug] …
Run Code Online (Sandbox Code Playgroud)

python apache django mod-wsgi

11
推荐指数
1
解决办法
7781
查看次数

Apache删除了"授权"标题

我的Apache 2.2.15服务器有点问题.我正在用mod_wsgi运行一个Django应用程序.我激活了WSGIPassAuthorization On,这使得Basic auth运行良好.但我最近实施了OAuth2.0来保护我的API(隐式授权),我认为Apache不会让它通过,因为它的形式是"授权:承载令牌".我想这是"持票人"的问题,但我不知道如何避免这种情况.

我试过了 :

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
Run Code Online (Sandbox Code Playgroud)

在httpd.conf,.htaccess(设置之后AllowOverride All)和我的vhost中.无所事事,无效.我整天都在网上爬行,除了这两个解决方案之外什么都没找到.

先感谢您 !

编辑:

OS : RedHatEL6.4
Apache : 2.2.15
Django: 1.6.6 w/ django-oauth-toolkit
Python: 2.7.8
Run Code Online (Sandbox Code Playgroud)

apache django mod-wsgi oauth-2.0

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

让Flask使用Python3(Apache/mod_wsgi)

我有一个基本的"hello world"Flask app运行.

我使用Apache 2.4在Ubuntu 14.04上.我已经安装了mod_wsgi.

我创建了一个~/web/piFlask/venv/用于安装virtualenv创建的Python2的瓶子.

但是,我希望我的flaskapp导入我编写的Python3.x模块.

我需要做些什么来实现这一目标?

我尝试创建~/web/piFlask/venv3/并修改~/web/piFlask/piFlask.wsgi:

import os, sys

PROJECT_DIR = '/home/pi/web/piFlask'

activate_this = os.path.join(PROJECT_DIR, 'venv3/bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
sys.path.insert(0, PROJECT_DIR)

from piFlask import app as application

application.debug = True
Run Code Online (Sandbox Code Playgroud)

但我认为这还不够.这个.wsgi实际上是一个将由mod_wsgi执行的Python文件,我肯定会使用Py2.x解释器来执行.

因此,如果我理解正确,mod_wsgi会启动系统Python以执行此.wsgi,这将启动我的~/web/piFlask/venv/解释器以实际处理请求.

我想我可以通过WSGIPythonPath /home/pi/web/piFlask/venv3/lib/python3.4/site-packages在/etc/apache2/mods-available/wsgi.conf中设置来说服mod_wsgi使用系统Python3或我自己的venv3/...

但我在某个地方发现了一条说明你必须为Py3编译mod_wsgi的指令,并且底部很快就会出现这个问题.

mod-wsgi flask python-3.x

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

mod_wsgi:通过Inotify重新加载代码 - 不是每N秒

到目前为止,我按照这个建议重新加载代码:

https://code.google.com/archive/p/modwsgi/wikis/ReloadingSourceCode.wiki

这具有缺点,即每N秒仅检测到代码变化.我可以使用N = 0.1,但这会导致无用的磁盘IO.

AFAIK可以通过python获得linux内核的inotify回调.

是否有更快的方法来检测代码更改并重新启动wsgi处理程序?

我们在linux上使用守护进程模式.

为什么代码重新加载mod_wsgi

有兴趣为什么我想要这个.这是我的设置:

大多数人使用" manage.py runserver"进行开发,并使用其他一些wsgi部署进行生产.

在我的背景下,我们自动创建了新系统,产品和开发系统大多相同.

一个操作系统(linux)可以托管N个系统(虚拟环境).

开发人员可以使用runserver或mod_wsgi.使用runserver有一个好处,它易于调试,mod_wsgi具有不需要首先启动服务器的好处.

mod_wsgi有一个好处,你知道URL: https://dev-server/system-name/myurl/

使用runserver,您不知道端口.使用案例:您想要从内部维基链接到开发系统....

我们过去使用过mod_wsgi的代码重新加载的脏黑客攻击:maximum-requests=1但这很慢.

python django mod-wsgi inotify

11
推荐指数
1
解决办法
522
查看次数