标签: mod-wsgi

使用Python 3在wsgi中使用openID

我之前从未做过身份验证,但希望能够通过openID跟踪和验证用户身份.我看到了一些允许使用WSGI进行openID身份验证的模块,但是所有模块都是旧的,没有提到python3,所以我猜它们不起作用.

我想知道如何在WSGI和python3中处理/验证openID.一个简单的实现将不胜感激.

python openid mod-wsgi wsgi python-3.x

10
推荐指数
1
解决办法
486
查看次数

你能解释一下mod_wsgi和werkzeug之间更详细的区别吗?(SOS新手)

正如我在标题上所说,我现在对基本了解它们感到非常不舒服.

据我所知,mod_wsgi实现了可以在Apache Web服务器下运行的WSGI规范.

它用C语言编写.

另外一个,werkzeug是一种具有实用功能的工具包.我还评论过werkzeug可以运行在其源代码中实现的简单服务(serve.server在serve.py中).我知道werkzeug具有有用的功能和简单的服务器功能.

我想知道的是下面的内容.

当在Apache Web服务器下使用基于werkzeug的Flask框架时,mod_wsgi到底做了什么?

werkzeug还具有基本的http服务器功能,不需要支持mod_wsgi.

任何人都可以解释mod_wsgi和werkzeug之间的区别吗?

mod_wsgi和werkzeug从Web服务器的角度来看具有重复的功能.

python mod-wsgi wsgi werkzeug

10
推荐指数
2
解决办法
5387
查看次数

mod_wsgi工作目录和用户

我在mod_wsgi上运行烧瓶.我的烧瓶应用程序,它正在/var/www/app接收来自用户的一些文件并将其保存到/var/www/app/tmp目录.然而,即使在所有chmod和chown(认为这是一个权限问题)之后,我也无法访问该tmp目录.

经过一些调试后,我发现烧瓶应用程序的当前工作目录是/.我可以通过更改工作目录os.chdir('/var/www/'),但出于安全考虑,我想避免这样做.

这是我的apache配置:

<VirtualHost *:80>
    ServerName mysite.com
    ServerAlias site.com
    ServerAdmin admin@localhost

    WSGIDaemonProcess app user=www-data group=www-data processes=1
    WSGIScriptAlias / /var/www/app.wsgi

    Alias /static /var/www/app/static

    <Directory /var/www/app>
        WSGIProcessGroup app
        WSGIApplicationGroup %{GLOBAL}
        WSGIScriptReloading On
        Order deny,allow
        Allow from all
    </Directory>

    <Location "/static">
        SetHandler None
    </Location>

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

如何将应用程序的工作目录更改//var/www

python mod-wsgi apache2

10
推荐指数
1
解决办法
7206
查看次数

运行Apache + Bottle + Python

我正在尝试使用Apache和mod_wsgi运行Bottle.py.

我在Windows上运行它,使用xampp.python v2.7

我在httpd中的Apache配置:

<VirtualHost *>
    ServerName example.com
    WSGIScriptAlias / C:\xampp\htdocs\GetXPathsProject\app.wsgi
    <Directory C:\xampp\htdocs\GetXPathsProject>
            Order deny,allow
            Allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我的app.wsgi代码:

import os
os.chdir(os.path.dirname(__file__))
import bottle
application = bottle.default_app()
Run Code Online (Sandbox Code Playgroud)

我的hello.py:

from bottle import route
@route('/hello')
def hello():
    return "Hello World!"
Run Code Online (Sandbox Code Playgroud)

当我去的时候,localhost/hello我收到404错误.我在Apache日志文件中没有任何其他错误,可能缺少基本的东西.

python apache mod-wsgi bottle

10
推荐指数
2
解决办法
8776
查看次数

在mod_wsgi下运行Django站点

我试图用mod_wsgi而不是mod_python(RHEL 5)运行我的Django站点.我尝试了所有我的网站,但遇到了同样的问题.我按照每个人推荐的标准方式配置它,但对网站的请求只是超时.

Apache conf:

<VirtualHost 74.54.144.34>
    DocumentRoot /wwwclients/thymeandagain
    ServerName thymeandagain4corners.com
    ServerAlias www.thymeandagain4corners.com
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    CustomLog /var/log/httpd/thymeandagain_access_log combined
    ErrorLog /var/log/httpd/thymeandagain_error_log
    LogLevel error
    WSGIScriptAlias / /wwwclients/thymeandagain/wsgi_handler.py
    WSGIDaemonProcess thymeandagain user=admin group=admin processes=1 threads=16
    WSGIProcessGroup thymeandagain
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

wsgi_handler.py:

import sys
import os

sys.path.append("/wwwclients")
os.environ['DJANGO_SETTINGS_MODULE'] = 'thymeandagain.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

守护进程mod_wsgi应该产生不存在,所以请求只是超时,我在日志中得到了一堆"无法连接到WSGI守护程序进程"错误.有没有关于WSGIDaemonProcess指令阻止创建守护进程的东西?在此先感谢任何帮助......

编辑:我在错误日志中得到这个:

[WARN@1227228322.174175] mcm_server_readable():2582: timeout: Operation now in progress: select(2) call timed out for read(2)able fds
[INFO@1227228322.174263] mcm_get_line():1592
[WARN@1227227903.249626] mcm_server_readable():2582: timeout: Operation now in …
Run Code Online (Sandbox Code Playgroud)

python apache django mod-wsgi

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

如何阻止WSGI挂起apache

我有django像这样运行WSGI:

<VirtualHost *:80>
    WSGIScriptAlias / /home/ptarjan/django/django.wsgi
    WSGIDaemonProcess ptarjan processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup ptarjan
    Alias /media /home/ptarjan/django/mysite/media/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

但如果在python我做:

def handler(request) :
    data = urllib2.urlopen("http://example.com/really/unresponsive/url").read()
Run Code Online (Sandbox Code Playgroud)

整个apache服务器挂起并且没有响应此回溯

#0  0x00007ffe3602a570 in __read_nocancel () from /lib/libpthread.so.0
#1  0x00007ffe36251d1c in apr_file_read () from /usr/lib/libapr-1.so.0
#2  0x00007ffe364778b5 in ?? () from /usr/lib/libaprutil-1.so.0
#3  0x0000000000440ec2 in ?? ()
#4  0x00000000004412ae in ap_scan_script_header_err_core ()
#5  0x00007ffe2a2fe512 in ?? () from /usr/lib/apache2/modules/mod_wsgi.so
#6  0x00007ffe2a2f9bdd in ?? () from /usr/lib/apache2/modules/mod_wsgi.so
#7  0x000000000043b623 in ap_run_handler ()
#8  0x000000000043eb4f in ap_invoke_handler () …
Run Code Online (Sandbox Code Playgroud)

python apache django mod-wsgi

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

Popen不再使用apache/wsgi和python 2.7.2了吗?

用于通过使用python subprocess.Popen制作一些shell命令的django应用程序不再起作用,因为我升级到ubuntu到11.10

为了简化问题,我将错误的代码放入wsgi脚本:

import os
import sys

from subprocess import Popen,PIPE
p=Popen(['/usr/bin/id'],stdout=PIPE,stderr=PIPE)
comm=p.communicate()
print comm,p.returncode

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

如果我直接通过python运行这段代码,它可以工作:

$ python -V
Python 2.7.2+
$ python django_wsgi.py 
('uid=1002(www) gid=1002(www) groups=1002(www)\n', '') 0
Run Code Online (Sandbox Code Playgroud)

如果我通过apache运行此代码(我只是将相关的URL放入浏览器),在apache日志中,我得到:

[Tue Nov 29 11:34:38 2011] [error] ('', '') -6
Run Code Online (Sandbox Code Playgroud)

这个错误是什么'-6'???

问题是,使用我的开发服务器(Ubuntu 10.04,几乎相同的apache/wsgi版本,相同的apache配置文件,相同的环境变量,但使用python 2.6.5),它运行良好:

[Tue Nov 29 11:29:10 2011] [error] ('uid=1000(www) gid=1000(www) groups=1000(www)\\n', '') 0
Run Code Online (Sandbox Code Playgroud)

你知道为什么Popen不再用python 2.7通过apache工作了吗?

python apache mod-wsgi

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

使用WSGI和Apache运行时Python的工作目录

我有一个Web应用程序,除其他外,将查询数据库并使用数据创建Excel电子表格.在将文件发送到客户端计算机之前,我需要将电子表格保存到服务器的磁盘.我正在使用Flask框架和openpyxl来生成电子表格.在Flask的开发服务器上运行时,一切正常,但真正的服务器是带有WSGI的Apache2.当我在那里运行时,在尝试保存电子表格时会引发"权限被拒绝"错误.我不知道在Apache/WSGI中运行时Python的工作目录是什么.

有没有办法,可能在WSGI配置文件中,更改工作目录,或以某种方式控制它将保存到哪里?如果可能的话,我想使用相对路径进行保存(它使代码更具可移植性),这就是更改工作目录是最佳解决方案的原因.

mod-wsgi apache2

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

Gunicorn Flask 缓存

我有一个使用 Gunicorn 和 nginx 运行的 Flask 应用程序。但是,如果我更改数据库中的值,在某些情况下应用程序将无法在浏览器中更新。

我有一个包含以下命令的烧瓶脚本

from msldata import app, db, models
path = os.path.dirname(os.path.abspath(__file__))
manager = Manager(app)

@manager.command
def run_dev():
    app.debug = True
    if os.environ.get('PROFILE'):
        from werkzeug.contrib.profiler import ProfilerMiddleware
        app.config['PROFILE'] = True
        app.wsgi_app = ProfilerMiddleware(app.wsgi_app, restrictions=[30])

    if 'LISTEN_PORT' in app.config:
        port = app.config['LISTEN_PORT']
    else:
        port = 5000

    print app.config
    app.run('0.0.0.0', port=port)
    print app.config

@manager.command
def run_server():
    from gunicorn.app.base import Application
    from gunicorn.six import iteritems

    # workers = multiprocessing.cpu_count() * 2 + 1
    workers = 1

    options = …
Run Code Online (Sandbox Code Playgroud)

python mod-wsgi nginx flask gunicorn

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

Python3.7 导入错误:没有名为“django”的模块

几天前,我决定将 python 从 2.7 版更新到 3.7 版。这是我目前的设置:

Ubuntu 16.04
Python 3.7.7
Django 3.0.6
Apache/2.4.18
Run Code Online (Sandbox Code Playgroud)

使用命令python -m venv --system-site-packages /var/www/path/to/myenv我创建了虚拟环境,在激活这个环境后我创建了一个新项目。环境/var/www/path/to/myenv路径如下所示,项目路径如下所示/var/www/path/to/myenv/myproject。配置myproject.conf看起来像这样:

<VirtualHost *:80>
    ServerName myproject.com
    ServerAlias www.myproject.com
    WSGIDaemonProcess myproject processes=2 threads=15 display-name=%{GROUP} python-home=/var/www/path/to/myenv python-path=/var/www/path/to/myenv/myproject
    WSGIProcessGroup candyhand

    WSGIScriptAlias /   /var/www/path/to/myenv/myproject/myproject/wsgi.py

    <Directory /var/www/path/to/myenv/myproject/myproject/>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>

    <Directory /var/www/path/to/myenv/myproject/>
        Require all granted
    </Directory>

    CustomLog /var/www/path/to/myenv/myproject/logs/apache_access.log combined
    ErrorLog /var/www/path/to/myenv/myproject/logs/apache_error.log

    Alias /static/ /var/www/path/to/myenv/myproject/static/
    <Directory /var/www/path/to/myenv/myproject/>
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory> …
Run Code Online (Sandbox Code Playgroud)

python apache django mod-wsgi python-3.x

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

标签 统计

mod-wsgi ×10

python ×9

apache ×5

django ×3

apache2 ×2

python-3.x ×2

wsgi ×2

bottle ×1

flask ×1

gunicorn ×1

nginx ×1

openid ×1

werkzeug ×1