Articles of mod wsgi

无法诊断Apache和mod_wsgi的停机/内存问题

我有一个运行在Apache上的mod_wsgi的Ubuntu EC2实例(t1.micro,内存为600mb),可以为Django应用程序提供服务。 这都是负载均衡器的后面。 我一直遇到的问题是,我似乎只能得到几天的正常运行时间,在我的网站停止前,我开始获得503状态。 我的logging是大约4周,没有停机。 重新启动apache没有帮助,我通常必须完全停止并重新启动EC2实例。 我已经尝试使用Dowser来诊断内存泄漏,但没有什么突出的。 我试过调整mpm_prefork设置。 我没有使用任何C扩展模块,任何外部API调用都有超时设置,我只有两个cron作业每天运行一次。 我的访问日志没有显示任何不寻常的东西,可能会显示DDOSing。 我完全不知道是什么导致服务器不断下降。 以下是停机时间段中apachectl状态的输出: 这里是htop的输出: 这些是我的prefork设置: <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 40 MaxConnectionsPerChild 0 </IfModule> 我应该升级到更大的EC2实例吗? 或者升级mod_wsgi(因为我在旧版本)? 我试过从Djangoangular度的一切,所以我开始认为我只是mod_wsgiconfiguration不正确…

Apache / mod_wsgi中的URL长度问题

我有一个python的wsgi API,我在其中处理不同长度的传入URL负载。 我相信,但不是绝对肯定的是,我可能遇到了URL大小的限制。 对于特定的有效负载(> 6K字符),它使用Python Web服务器在本地运行正常,但是当我将它移到Apache(在OS X和RHEL 6上)时,我在浏览器中遇到了404错误。 根据我所见过的有效载荷太大的一切,我应该得到413或414的错误。 请注意,对于比这更短的URL,我没有任何问题在Apache中运行。 我梳理了我的Apache日志,所有我能find的错误是“目标WSGI脚本未find或无法统计”。 所有我用谷歌search这个特定的错误是一个应用程序错误的指示,如上所述,我知道我的wsgiconfiguration工程。 它似乎打破了较大的url,这让我觉得这可能是mod_wsgi的一个问题。 我的VirtualHostconfiguration是: <VirtualHost *:80> Alias /cardiocatalogqt /Library/WebServer/extjs/cardioCatalogQT <Location /cardiocatalogqt> Order deny,allow Allow from all </Location> WSGIApplicationGroup %{GLOBAL} WSGIDaemonProcess rest_api user=gregsilverman threads=5 WSGIScriptAlias /api /Library/WebServer/wsgi/rest_api/rest_api.wsgi WSGIPassAuthorization On <Location /api> Order deny,allow Allow from all </Location> </VirtualHost> 任何build议,缩短url短,将是最受欢迎的。

urllib3通过Apache / WSGI失败; 从python命令行成功

我有一个web服务器,通过Apache 2.4与Ubuntu 14.04上的mod_wsgi和Python 2.7服务Django 。 第一次安装时,使用Python库urllib3从这个web服务器发出的连接成功。 目前,使用urllib3的传出连接可能使用Python命令行客户端,但是Apache服务器在达到最大重试次数后,将会以错误0使其失败。 我不确定最近有什么变化可能导致这个问题。 是否有推荐的技术来诊断和解决Apache突然无法使用urllib3进行传出请求?

Django网站与httpd和mod_wsgi:403禁止

我花了整整一天的时间试图find我的问题的答案,但我失败了,决定在这里发布我的问题。 所以我开发了一个Django应用程序,现在我在将它部署到apache(httpd)服务器时遇到了问题。 如果相关,我正在运行CentOS 7.2。 我一直在遵循这个教程为了做我想要的: https : //www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-centos- 7 显然,我没有从头开始创build一个新的项目,因为我已经有了一个,只是调整它,以适应教程。 一旦我完成并重新启动httpd服务,当试图访问该网站时,我收到以下错误消息: Forbidden You don't have permission to access / on this server. 这不是防火墙的问题,因为当我删除django.conf(即恢复更改)显示默认的Apache网站。 我的django.conf文件如下所示: Alias /static /home/dudu/DjangoProject/mysite/static <Directory /home/dudu/DjangoProject/mysite/static> Require all granted </Directory> <Directory /home/dudu/DjangoProject/mysite> <Files wsgi.py> Require all granted </Files> </Directory> WSGIDaemonProcess DjangoProject python-path=/home/dudu/DjangoProject:/home/dudu/DjangoProject/DjangoProjectEnv/lib/python2.7/site-packages WSGIProcessGroup DjangoProject WSGIScriptAlias / /home/dudu/DjangoProject/mysite/wsgi.py 相关的文件夹结构: /home/dudu/ |–DjangoProject | |–manage.py […]

在Sonicwall后面的服务烧瓶+ Apache + WSGI

奇怪的问题在这里。 我已经通过本教程设置Flask应用程序的部署环境。 当我导航到服务器的本地IP地址,它服务一切正常。 然而,我认为在外部提供Flask / Python逻辑存在一个问题。 端口80是打开的,并成功转发,如其当前页面(Index of / Apache etc)所示,但不像在本地子网中那样显示“你好,我爱DigitalOcean”。 在启用Sites的function中启用Flask应用程序之前,它也显示了默认的Apache HTML模板。 在我的Apache的.conf文件中,我目前的ServerName设置为本地IP地址。 我的理解是,80端口的所有stream量都会被路由到那个地址,而且它只是在外部提供静态的Apache HTML文件。 我在这里超级困惑,就好像python / flask的逻辑是在不同的端口上传输的,它不会出去!

WSGI每次请求后重新启动我的应用程序

在Apache和mod_wsgi下运行的Django应用程序在每个Ansible剧本执行后重新开始。 我的要求是运行多个playbooks并行运行。 后台线程(在服务器启动时创build)从文件系统中select一个可用的播放,并提交给一个线程池,以便并行运行 我的应用程序configuration如下所示: <VirtualHost *:1234> SSLEngine On SSLCertificateFile <path to cert file> SSLCertificateKeyFile <path to key file> ServerName example <Location /> SSLRequireSSL </Location> WSGIDaemonProcess myapp user=user group=user WSGIProcessGroup myapp WSGIScriptAlias / /home/user/test-wsgi.py CustomLog /var/log/myapp/access.log vhost_combined </VirtualHost> 我的脚本flie import os import sys import site # Add the site-packages of the chosen virtualenv to work with […]

哪个是最好的方式来使用不同的python版本使用apache2多个wsgi应用程序?

现在我已经使用apache2和mod-wsgi在我的服务器上部署了一个python2 django应用程序。 现在我想部署另一个,但是这是用python3编写的。 我的问题是,mod-wsgi被编译为python2。 我有什么替代scheme来部署? 我可以使用mod-uwsgi for python3进行另一个部署。 PD:我也在使用virtualenvs。 谢谢!

如果根目录中存在相同的目录,Apache将忽略WSGIScriptAlias

当通过mod_wsgi提供Django应用程序时,我注意到了一个奇怪的错误。 在我的文档根目录中,我使用LocationMatch指令将/admin目录限制为127.0.0.1。 我也有/admin URLConf挂载/在Django应用程序,这是Django的自动生成的pipe理界面的标准path。 该应用程序本身位于/apppath下,使用WSGIScriptAlias指令进行configuration。 现在,Apache以某种方式将每个请求处理为/app/admin并将其子path定向为应用程序和文档根目录。 我得到Django的pipe理显示,但是error.log包含这样一行: [Tue Feb 14 01:25:35.538501 2017] [authz_core:error] [pid 29235] [client 32.135.203.150:36412] AH01630: client denied by server configuration: /var/www/html/admin/ 除了两件事之外,这几乎不是问题: 我不得不closuresfail2ban, 我不能在pipe理员上传文件,我怀疑这是为什么,因为这个错误出现在我每次尝试(接收500作为响应)。 这是通过重命名我的html目录或Django的pipe理应用程序来解决的,但我真的很想find正确的解决scheme,让我有两个。 Debian中的Apacheconfiguration被分割成多个文件,但我相信相关的部分如下: <VirtualHost *:80> ServerAdmin webmaster@localhost SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Include conf-available/default.conf DocumentRoot /var/www/html <LocationMatch ^/admin> Require ip 127.0.0.1 ::1 […]

在没有扩展名的Apache / 2.2.31和mod_wsgi 3.4上的MIME Magic

对不起,提前的长度,感谢您的耐心。 我有一个古老的生产服务器,没有人知道它是如何build立的。 它使用apache + mod_wsgi来运行一个Cherry Py python应用程序来提供图像。 我正在重新创build它来logging它并开始升级。 我遇到了一个问题,没有文件扩展名,可以是PNG或JPEG的图像正在通过: Content-Type: "text/html;charset=utf-8" 生产服务器当前正确返回: Content-Type: "image/jpeg" 有关环境的信息我正在重新创build服务器: Amazon Linux AMI release 2017.03 (basically CentOS 6 it feels like) Apache/2.2.31 mod_wsgi-3.4 CherryPy 3.2.0 生产环境安装了相同的软件包,除了在实际的Centos6上运行,Apache是​​2.2.17版本。 文件和相关的片段: httpd.conf文件 #/etc/httpd/conf/httpd.conf LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule mime_module modules/mod_mime.so TypesConfig /etc/mime.types <IfModule mod_mime_magic.c> # MIMEMagicFile /usr/share/magic.mime MIMEMagicFile conf/magic </IfModule> Include conf.sites/*.conf # There really […]

使用Apache和mod_wsgi的HTTP 503错误

我在Django中编写了一个webapp,我使用mod_wsgi在Apache 2.4下运行。 乍一看,它工作正常。 但是,当Apache进程运行了一段时间后,webapp开始响应503错误。 在F5之后,你可以通过很多次。 令人讨厌的是我没有任何与我的Apache error.log相关的任何东西 ,所以我不知道从哪里开始debugging。 我唯一的领导是浏览器中显示的错误: 503 Service Unavailable 。 其他网站(PHP)不受影响。 重新启动Apache服务器可以立即解决问题。 我的这个webapp的Apacheconfiguration: WSGIDaemonProcess app python-path=/opt/app home=/opt/app WSGIProcessGroup app WSGIScriptAlias /app /opt/app/wsgi.py 我发现这个,但我不认为这是问题,因为套接字已经放在/var/run/apache2/在我的情况(不是“Apache日志目录”)。 这个目录对其他人是可读的。 套接字本身有模式700 ,但拥有正确的所有者( www-data )。 有任何想法吗? 编辑: 我注意到,当问题发生时,我重新启动Apache来修复它,Apache需要很长的时间才能退出。 在错误日志中,我发现这些消息: [Sun Jun 25 14:14:18.935566 2017] [core:warn] [pid 374:tid 140587055682752] AH00045: child process 21761 still did not exit, sending a SIGTERM […]