标签: mod-wsgi

mod_wsgi 的 Python 版本

如何更改 mod_wsgi 使用的默认版本?

我将 Debian 5 与 Apache 2 一起使用。

python mod-wsgi

6
推荐指数
2
解决办法
9333
查看次数

Apache,mod_wsgi 上的权限被拒绝,用 WSGISocketPrefix 修复——但为什么呢?

在似乎是随机事件中,一个站点今晚关闭了,在查看了 Apache 错误日志后,这是这个问题:

 (13)Permission denied: mod_wsgi (pid=2751): Unable to connect to WSGI daemon process 'mysite.com-ssl' on '/var/run/apache2/wsgi.2579.0.2.sock' after multiple attempts.
Run Code Online (Sandbox Code Playgroud)

现在我阅读了mod_wsgi的ConfigurationIssues wiki,修复似乎是合理的。无法写入该目录,因此必须指定一个替代方案WSGISocketPrefix

所以我设置:

WSGISocketPrefix /var/run/wsgi
Run Code Online (Sandbox Code Playgroud)

它解决了这个问题,并且站点可以在 Apache 重新启动后加载。

但是,我很好奇 - 为什么这个目录不再可供写入?我错过了什么吗?该/var/run/apache2目录归 拥有root:root,但现在在其下运行的新套接字/var/run/wsgi*.sockwww-data:root.. 服务器重新启动,仅此而已。也许现在某些东西会在启动时接管该目录的权限?

有任何想法吗?谢谢!

mod-wsgi apache-2.2

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

“网关超时”的原因(mod_wsgi)

我收到“网关超时”

504:网关没有及时收到上游服务器或应用的响应。

我将 apache 与 mod_wsgi 版本 4.4.8 一起使用。

在 apache 错误日志中,我看到:

Timeout when reading response headers from daemon process 'md':
    /home/user/mc/src/mc/mc/mc.wsgi
Run Code Online (Sandbox Code Playgroud)

wsgi 配置:

WSGIDaemonProcess md user=mc group=users threads=1 processes=4
                     maximum-requests=1000 
                     request-timeout=600 
                     python-home=/localhome/user/mc
WSGIScriptAlias /mc /home/mc/src/mc/mc/mc.wsgi
<Location "/mc/">
    WSGIProcessGroup md
    WSGIApplicationGroup %{GLOBAL}
    Require all granted
</Location>
Run Code Online (Sandbox Code Playgroud)

超时发生在 100 秒后。

根据配置超时为 600 秒。

我不知道为什么会发生这种情况。它是可重复的。该错误是可重复的。对于特定的 URL,它每次都会发生。

第一步对我来说是:更好的错误信息。谁负责此消息“从守护进程读取响应头时超时”?

mod-wsgi apache2

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

AWS Elastic Beanstalk Python 3.6 平台上的 mod_wsgi“调用‘site.addsitedir()’失败”

在AWS Elastic Beanstalk上,在“64bit Amazon Linux 2017.09 v2.6.0 running Python 3.6”平台上,好像是mod_wsgi配置有问题。我在/etc/httpd/conf.d/wsgi.conf

WSGIDaemonProcess wsgi processes=1 threads=15 display-name=%{GROUP} \
  python-home=/opt/python/run/venv/ \
  python-path=/opt/python/current/app:/opt/python/run/venv/lib64/python3.6/site-packages:/opt/python/run/venv/lib/python3.6/site-packages user=wsgi group=wsgi \
  home=/opt/python/current/app
Run Code Online (Sandbox Code Playgroud)

但是,我得到了这个/var/log/httpd/error_log

[Mon Nov 20 19:54:44.565076 2017] [:error] [pid 32080] mod_wsgi (pid=32080): Call to 'site.addsitedir()' failed for '(null)', stopping.
[Mon Nov 20 19:54:44.565444 2017] [:error] [pid 32080] mod_wsgi (pid=32080): Call to 'site.addsitedir()' failed for '/opt/python/run/venv/lib64/python3.6/site-packages:/opt/python/run/venv/lib/python3.6/site-packages'.
Run Code Online (Sandbox Code Playgroud)

尝试访问该站点会导致此错误:

[Mon Nov 20 21:21:21.304605 2017] [:error] [pid 2886] [remote 71.236.217.102:39802] ModuleNotFoundError: No module named 'myappname'
Run Code Online (Sandbox Code Playgroud)

如果我将 …

mod-wsgi amazon-web-services elastic-beanstalk

6
推荐指数
1
解决办法
3623
查看次数

如何让mod_wsgi使用Python 3.9?

我最初安装了 Python 3.6,并且在我的 Linux 服务器上与 WSGI 和 Apache2 配合得很好。

然后我创建了一个 Flask 应用程序,它有一个需要 Python 3.7 的依赖项。我已经成功(并且我认为)升级到 Python 3.9。跑步

python3或者sudo python3

两者都带我到 Python 3.9。但当我跑步时

sudo apt-get install libapache2-mod-wsgi-py3
The following additional packages will be installed: python3, python3.6
Run Code Online (Sandbox Code Playgroud)

它安装Python 3.6

此后,python3仍然指向Python 3.9。但是,当运行 WSGI 应用程序时,使用 Python 3.6,并且它会崩溃。mod-wsgi我已经使用正确的 PIP安装了 Python 包。

python mod-wsgi apache2

6
推荐指数
1
解决办法
6724
查看次数

目录、代理和位置 - 如何在一个 Apache 配置中共存?

主要是通过反复试验,我在下面创建了 Apache 配置文件。

它旨在允许 localhost:8002 上的服务器和通过 WSGI 的 trac 服务器共享 LDAP 服务器,并且看起来在同一个域/端口上。

这些规则是孤立运行的,但不是并行运行的。

特别是,trac WSGI 只有在ProxyPass/ProxyPassReverse行被注释掉时才能正确服务。如果没有重定向,localhost:8002 处的服务器显然不会映射到传出的 8022 端口。

我假设目录、代理和位置规则的组合是我的问题的路径 - 或者它们的顺序?

WSGIDaemonProcess trac stack-size=524288 python-path=/usr/lib/python2.5/site-packages
WSGIScriptAlias /trac /home/web/foo/parts/trac/tracwsgi/cgi-bin/trac.wsgi

<VirtualHost foo.bar.com:8022>
    ServerName foo.bar.com
    ServerAlias foo.bar.com

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPreserveHost On
    ProxyPass / http://localhost:8002/VirtualHostBase/http/foo.bar.com:8022/foo/VirtualHostRoot/
    ProxyPassReverse / http://localhost:8002/VirtualHostBase/http/foo.bar.com:8022/foo/VirtualHostRoot/

    <Directory "/home/web/foo/parts/trac/tracwsgi/cgi-bin">
        WSGIApplicationGroup %{GLOBAL}
        Options +Indexes FollowSymLinks
        AllowOverride None
        Allow from all
        Order allow,deny
    </Directory>

    <Location "/trac">
        AuthBasicProvider ldap
        AuthType Basic
        AuthzLDAPAuthoritative off …
Run Code Online (Sandbox Code Playgroud)

proxy ldap mod-wsgi apache-2.2

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

使用python2.7在centos中安装mod_wsgi时出错

当我在 mod_wsgi 文件夹中“制作”时,我收到此错误

我使用以下配置

./configure --with-apxs=/usr/local/apache/bin/apxs   --with-python=/opt/python27/bin/python
Run Code Online (Sandbox Code Playgroud)

/usr/bin/ld: /opt/python27/lib/libpython2.7.a(node.o): relocation R_X86_64_32针对`a local symbol'不能在创建共享对象时使用;使用 -fPIC /opt/python27/lib/libpython2.7.a 重新编译:无法读取符号:错误值 collect2:ld 返回 1 退出状态 apxs:错误:命令失败,rc=65536

此链接有解决方案,但我无法完全理解

1)How can i found that i have compiled x32bit or x64 bit version of python 
2)I didn't understand about what symbolic link he was talking about
Run Code Online (Sandbox Code Playgroud)

python centos mod-wsgi

5
推荐指数
1
解决办法
5865
查看次数

让 mod_wsgi 使用 python2.7.2 而不是 python2.6?

我正在运行 Ubuntu 10.04.1 LTS,它预装了 python2.6,但我需要用 python2.7.2 替换它。

(原因很简单,2.7 有很多从 3 向后移植的特性)

我已经安装了 python2.7.2 使用

./configure
make
make altinstall
Run Code Online (Sandbox Code Playgroud)

altinstall 选项将它安装到 /usr/local/lib/python2.7 并将解释器放置在 /usr/local/bin/python2.7 中,而不涉及系统默认版本

然后为了帮助 mod_wsgi 找到 python2.7,我将以下内容添加到 /etc/apache2/sites-available/wsgisite

WSGIPythonHome /usr/local
Run Code Online (Sandbox Code Playgroud)

我启动了 apache 并运行了一个测试 wsgi 应用程序,但是迎接我的是python 2.6.5 而不是 Python2.7

后来我替换了默认的 python simlink 指向 python 2.7

ln -f /usr/local/bin/python2.7 /usr/bin/python
Run Code Online (Sandbox Code Playgroud)

现在在控制台上输入 'python' 会打开 python2.7 但不知何故 mod_wsgi 仍然会选择 python2.6

接下来我尝试,

PATH=/usr/local/bin:$PATH
export PATH
Run Code Online (Sandbox Code Playgroud)

然后快速重启apache,但又是python2.6!


这是我的 $PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)

/etc/apache2/sites-available/wsgisite 的内容

WSGIPythonHome /usr/local


<VirtualHost *:80>

    ServerName wsgitest.local
    DocumentRoot /home/wwwhost/pydocs/wsgi
    <Directory /home/wwwhost/pydocs/wsgi>
        Order …
Run Code Online (Sandbox Code Playgroud)

python django mod-wsgi

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

插入 mod_wsgi 后 Apache 不会重启

Python 作为一种 Web 脚本语言让我很感兴趣,所以我想在我的测试服务器上设置它。

无法让 Apache 重新启动mod_wsgi。在 win7 64 位上运行 xampp v win32-1.8 w/apache v2.4,python v2.7 32bit。我看到的 Python 注册表文件位于hkey_classes_root. 我不确定这是否正确,但hkey_current_user. 中的一个hkey_local_machine表示未设置默认值。

这是我跑步时得到的 apache_start.bat

Apache 2 正在启动...
httpd.exe:C:/xampp/apache/conf/httpd.conf 第 141 行的语法错误:无法将 C:/xampp/apache/modules/mod_wsgi.so 加载到服务器:指定的程序找不到。

我添加到 httpd.conf 的内容:

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /wsgi_handler "C:/xampp/wsgi/mywsgi.py"

<Directory "C:/xampp/wsgi">
Order allow,deny
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

python xampp mod-wsgi apache-2.2

5
推荐指数
1
解决办法
6038
查看次数

Elastic Beanstalk 应用程序部署上的 504s(用户 -&gt; ELB -&gt; Elastic Beanstalk mod_wsgi)

我有一个 Python Elastic Beanstalk 负载平衡应用程序。以下是用户请求进入 Elastic Beanstalk 应用程序的路径:

user -> Elastic Beanstalk ELB -> Elastic Beanstalk mod_wsgi

问题:

来自新应用程序版本user之后的前 ~2-4 个请求将从eb deployELB 生成 504 错误。

在这些 ~2-4 个生成 504 的请求之后,一切都很好!200 左右。

当 504 发生时,零请求会Elastic Beanstalk mod_wsgi根据/var/httpd/access_log. 在 ELB 决定重新开始工作后,我才看到 200 年代。

我尝试过但不起作用的事情:

  1. 我将Elastic Beanstalk ELB空闲超时增加到 300 秒
  2. 我按照此处的建议将Elastic Beanstalk mod_wsgiapacheKeepAliveTimeout增加到 300 秒:http : //docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html

有人可能会说,“就和 504 一起生活吧!”

但是,实际问题是,在我的生产设置中,我CloudFlareuser和之间Elastic Beanstalk ELB …

mod-wsgi amazon-web-services amazon-elb elastic-beanstalk apache-2.4

5
推荐指数
1
解决办法
1402
查看次数