标签: mod-wsgi

通过 mod_wsgi 运行 Django 时,我应该在 WSGIDaemonProcess 中指定多少个进程?

假设我有 2 个站点(超级用户和 Serverfault)在一个机器上从他们自己的 Apache 虚拟主机运行。这两个站点由 Django 提供支持,并使用 mod-wsgi 在 Apache 上运行。站点之一的典型配置文件如下所示:

WSGIDaemonProcess serverfault.com user=www-data group=www-data processes=5
Run Code Online (Sandbox Code Playgroud)

主机是一台运行 Ubuntu 的具有 4GB RAM 的 linux 机器。任何人都可以建议我应该在上面为我的 2 个站点指定的进程数吗?假设它们与实际的超级用户和 Serverfault 站点具有相同的流量。

django mod-wsgi apache-2.2

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

如何在 Ubuntu 上为 Python 设置 Mod_WSGI

我正在尝试在我的 Ubuntu 机器上设置 MOD_WSGI。我找到了说我需要执行以下步骤的步骤,我在http://ubuntuforums.org/showthread.php?t=833766

  1. 须藤 apt-get 安装 libapache2-mod-wsgi
  2. 须藤 a2enmod mod-wsgi
  3. 须藤 /etc/init.d/apache2 重启
  4. sudo gedit /etc/apache2/sites-available/default 并更新目录
<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews ExecCGI

  AddHandler cgi-script .cgi
  AddHandler wsgi-script .wsgi

  AllowOverride None
  Order allow,deny
  allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
  1. 须藤 /etc/init.d/apache2 重启
  2. 创建了 test.wsgi

    def application(environ, start_response):
        status = '200 OK' 
        output = 'Hello World!'    
        response_headers = [('Content-type', 'text/plain'),
                            ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
    
        return [output]
    
    Run Code Online (Sandbox Code Playgroud)

第 2 步失败,因为它说即使 apt-get 找到它也找不到 mod-wsgi。如果我继续执行这些步骤,python 应用程序只会在浏览器中显示为纯文本。

任何想法我做错了什么?


编辑:问题的结果

automatedtester@ubuntu:~$ dpkg -l libapache2-mod-wsgi
Desired=Unknown/Install/Remove/Purge/Hold …
Run Code Online (Sandbox Code Playgroud)

ubuntu python mod-wsgi apache-2.2

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

使用 Nginx、Apache、mod_wsgi 部署 Django 应用程序

我有一个可以使用标准开发环境在本地运行的 django 应用程序。我现在想将其移至 EC2 进行生产。django 文档建议使用 apache 和 mod_wsgi 运行,并使用 nginx 加载静态文件。

我在 Ec2 机器上运行 Ubuntu 12.04。我的 Django 应用程序“ddt”包含一个带有 ddt.wsgi 的子目录“apache”

import os, sys
apache_configuration= os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
sys.path.append('/usr/lib/python2.7/site-packages/django/')
sys.path.append('/home/jeffrey/www/ddt/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'ddt.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

我从 apt 安装了 mod_wsgi。我的 apache/httpd.conf 包含

NameVirtualHost *:8080

WSGIScriptAlias / /home/jeffrey/www/ddt/apache/ddt.wsgi
WSGIPythonPath /home/jeffrey/www/ddt

<Directory /home/jeffrey/www/ddt/apache/>
<Files ddt.wsgi>
Order deny,allow
Allow from all
</Files>
</Directory>
Run Code Online (Sandbox Code Playgroud)

在 apache2/sites-enabled 下

<VirtualHost *:8080>
ServerName www.mysite.com
ServerAlias mysite.com
<Directory /home/jeffrey/www/ddt/apache/>
    Order deny,allow …
Run Code Online (Sandbox Code Playgroud)

deployment nginx django mod-wsgi apache-2.2

14
推荐指数
1
解决办法
2656
查看次数

安装 scipy 后无响应的 apache + mod_wsgi

我目前正在运行 Centos 6.4 服务器,Apache 2.2.15 和 mod_wsgi 3.2。服务器托管基于 django 的站点(django 1.5.1,python 2.6.6)。一切都运行良好,直到我通过 pip 安装了 scipy 0.12.0。现在,当我尝试加载 django 应用程序时,服务器没有响应,并且产生的子 httpd 进程似乎挂起。查看我的日志(/var/logs/httpd/error_log、我的 vhost error.log 和我的系统日志)没有发现任何错误。

如果我通过 django manage.py shell 加载我的模型等,一切正常,这让我相信这是一个 mod_wsgi 问题。

关于如何开始解决这个问题的任何想法?

python mod-wsgi apache-2.2

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

WSGI:从守护进程收到的截断或过大的响应头

系统配置:Apache2、Django 1.10、Python 3、Ubuntu 16.04 LTS

姜戈debug=True


/var/log/apache2/error.log

[52:53.057967] [wsgi:error] [pid 4303] [client 1.1.1.22:24409] Timeout when reading response headers from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py
[52:58.466726] [wsgi:error] [pid 4305] [client 1.1.1.10:9787] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py
[52:58.466729] [wsgi:error] [pid 4304] [client 1.1.1.4:18417] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py
[52:58.466726] [wsgi:error] [pid 4307] [client 1.1.1.22:35116] Truncated or oversized response headers received from daemon process 'example.org': /home/user/dir/project/main_app/wsgi.py
[52:58.466756] [wsgi:error] [pid 4306] …
Run Code Online (Sandbox Code Playgroud)

django mod-wsgi apache2

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

Django/Apache/mod_wsgi 站点上的高 CPU 负载

使用 Apache bench 在 AWS 小实例 (Ubuntu 10.04) 上对 django 1.21/Apache/mod_wsgi 配置进行负载测试时,在低并发请求下显示出极高的 CPU 负载(使用正常运行时间和 vmstat):

ab -c 5 -n 1000 "my_url"
Run Code Online (Sandbox Code Playgroud)

...导致此正常运行时间输出:

18:04:54 up 9 days, 16:54,  3 users,  load average: 5.33, 2.45, 1.91
Run Code Online (Sandbox Code Playgroud)

即使 Apache bench 并发值为 2,CPU 仍为 100%。我正在同一区域/区域中的不同 AWS 实例中运行 Apache bench。关于问题出在哪里的想法,或者我应该如何继续调试?

细节:

  • 出于绝望,我安装了一个带有简单“Hello World”视图(没有 DB 调用等)的 vanilla django 项目/应用程序。结果一样。所以我怀疑这是我的应用程序代码。
  • 在负载测试期间内存使用情况看起来不错。

这是负载测试之前/期间/之后的 vmstat 输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
0 …
Run Code Online (Sandbox Code Playgroud)

django mod-wsgi apache-2.2

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

Python/Django/WSGI/Apache - “ImportError: No module named site”

我正在尝试在我的本地 ubuntu 机器上使用 django 应用程序。但是,该站点无法正常工作,并且我的站点中/var/log/apache2/errors.log充满了如下消息:

ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

我的/var/log/apache2/error.log(今天)看起来像这样:

$ cat error.log | uniq -c
      1 [Wed Jun 29 09:37:37 2011] [notice] Apache/2.2.17 (Ubuntu) mod_wsgi/3.3 Python/2.7.1+ configured -- resuming normal operations
  12966 ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

这是当我打开机器时它启动的通知,然后是 12,966 行都在说no module named site消息

请注意缺少日期时间字段。即使不访问网站(即,即使不发出网络请求),也会重复这些错误。在浏览器中访问网站时,它只是挂起,好像在等待大量下载。

设置

Apache 模块

我正在使用 python 2.5 virtualenv,其中安装了很多包(包括 django 1.1)和 pip。我已经加载了 mod_wsgi:

$ ls -l /etc/apache2/mods-enabled/wsgi*
lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.conf -> ../mods-available/wsgi.conf
lrwxrwxrwx 1 root …
Run Code Online (Sandbox Code Playgroud)

python django wsgi mod-wsgi apache-2.2

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

使用 Elastic Beanstalk 将 WSGI 应用程序错误部署到 AWS

与 AWS 论坛的交叉链接

我已经使用 WSGI 开发了一个简单的 Python Web 服务,并希望使用 Elastic Beanstalk 将其部署到 AWS 云中。我的问题是我无法在云中正确配置我在 Elastic Beanstalk 配置中指定的所有选项。

对于部署,我使用 Elastic Beanstalk CLI 实用程序。我已经运行eb init命令并设置了所需的参数。之后,.elasticbeanstalk在我的源代码树中创建了一个名为的目录。它有两个用于部署的配置文件,即configoptionsettings. 其他选项中的后一个包含必须/etc/httpd/conf.d/wsgi.conf在实例中更新的 WSGI 配置。经过我的一些调整后,该文件具有以下设置:

[aws:elasticbeanstalk:application:environment]
DJANGO_SETTINGS_MODULE = 
参数 1 = 
参数 2 = 
参数 4 = 
参数3 = 
参数 5 = 

[aws:elasticbeanstalk:container:python]
WSGIPath = handler.py
NumProcesses = 2
静态文件 = /静态=
线程数 = 10

[aws:elasticbeanstalk:container:python:staticfiles]
/静态=静态/

[aws:elasticbeanstalk:hostmanager]
LogPublicationControl = false

[aws:自动缩放:启动配置]
InstanceType = t1.micro
EC2KeyName = zmicier-aws

[aws:elasticbeanstalk:应用程序] …

mod-wsgi amazon-web-services

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

如何使用 yum 在 CentOS 上安装 wsgi?

如何使用 yum 在 CentOS 上安装 wsgi?是否有任何带有 mod_wsgi 的存储库?

centos wsgi mod-wsgi

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

如何让 nginx 将 HTTP_AUTHORIZATION 标头传递给 Apache

我使用 Nginx 作为使用 HTTP 身份验证的 Apache 服务器的反向代理。出于某种原因,我无法将 HTTP_AUTHORIZATION 标头传递给 Apache,它似乎被 Nginx 过滤掉了。因此,没有请求可以进行身份​​验证。

请注意,基本身份验证是动态的,因此我不想在我的 nginx 配置中对其进行硬编码。

我的 nginx 配置是:

server {

    listen   80;
    server_name  example.co.uk ;

    access_log  /var/log/nginx/access.cdk-dev.tangentlabs.co.uk.log;

    gzip on;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_read_timeout 120;

    location / {
            proxy_pass http://localhost:81/;
    }

    location ~* \.(jpg|png|gif|jpeg|js|css|mp3|wav|swf|mov|doc|xls|ppt|docx|pptx|xlsx|swf)$ {
    if (!-f $request_filename) {
        break;
                proxy_pass http://localhost:81;
    }

            root /var/www/example;
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?

更新- 原来这个问题是我在我的原始问题中忽略的:mod_wsgi。这里有问题的站点是一个 Django 站点,事实证明 Apache 确实通过了 auth 变量,但是 mod_wsgi 将它们过滤掉了。

决议是使用:

WSGIPassAuthorization On
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅http://www.arnebrodowski.de/blog/508-Django,-mod_wsgi-and-HTTP-Authentication.html

nginx django wsgi mod-wsgi

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