我正在使用Apache&mod_wsgi在多个服务器上部署一个django应用程序。 我已经阅读了多个地方(包括: http : //blog.dscpl.com.au/2012/10/why-are-you-using-embedded-mode-of.html ),最好使用守护进程模式的wsgi。 这将使我能够控制每个进程的进程数量和线程数,以及其他整洁的东西:) 现在我可以在同一台服务器上拥有两个或更多的django应用程序实例(每个实例都有自己的设置,数据库等)。 例如: http://team1-server/prod-instance http://team1-server/test-instance 坚韧我想我明白如何为多个虚拟主机使用不同的“进程组”和“守护进程”configuration,我似乎并没有考虑到我应该怎样处理多个“子根”。 编辑: 我运行在CentOS 6.2发行版下。 在/etc/httpd/conf.d/目录中,每个实例都有一个.conf文件,如下所示: WSGIScriptAlias /prod-instance /opt/wsgi_applications/prod/app.wsgi 结束编辑。 我应该使用虚拟主机,并有像http://prod-instance.team1-server/url吗? 这意味着我应该依靠networkingpipe理员来更新DNS表,这对我们的客户来说是不够快的。 🙂 我必须承认,在Apacheconfiguration方面,我经常会迷失方向。 您的帮助是受欢迎的。 谢谢! O.
我知道这是一个常见的问题,通常与Apache或其他已经在端口80上运行的服务有关,我已经做了大量的search和运行netstat,仍然没有find为什么我得到这个错误。 我重build了我的切片,重新安装了Ubuntu 10.04并安装了nginx + uwsgi。 它的工作,我能看到我的Django网站。 然后我从这个链接安装了Postgres8.4和Geodjango所需的其他堆栈。 之后,我试图重新启动nginx,我得到这个错误: sudo /etc/init.d/nginx start Starting nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in […]
我试图用mod_wsgi从python web应用程序连接到PostgreSQL Unix域套接字。 相关系统组件: CentOS 7 x64 Python 2.7.5 SELinux禁用 PostgreSQL正在监听标准端口5432,我没有问题通过TCP / IP在127.0.0.1:5432,但是当我尝试连接到它的Unix域套接字,我有一个以下错误: Cannot connect to database: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?* 文件/tmp/.s.PGSQL.5432存在,我可以使用psql进行连接。 但是,当我停止apache与systemctl停止httpd.service并重新启动它与/usr/sbin/httpd -DFOREGROUND ,一切正常,包括需要访问数据库的网页 在禁用SELinux的情况下,我不明白为什么在httpd以systemctl start httpd.service启动时出现问题。 编辑: 我在/var/lib/pgsql/9.3/data/postgresql.conf中更改了unix_socket_directories = '/tmp,/var/pgsql_sock' 。 我也在我的django应用程序HOST='/var/pgsql_sock' 。 现在它可以正常使用httpd.service。
我有一个网站的example.com,运行了一个“正常”的networking服务器,即在目前的Apache,但在未来寻找内存密集的替代select,所以我不希望Apache上的mod_WSGI。 不久,我将要部署一个用python应用服务器运行的web应用程序。 我想这个回答所有的请求example.com/reallycoolpythonwebapp/与Web服务器照顾其余的。 这样的架构是如何创build的? 我期待指向相关的在线文档赞赏。
我正在debuggingCentOS上的MoinMoin抛出一个权限错误的问题,但我无法追查有问题的文件/目录。 我在apache上运行strace -vp <pid> ; 当我遇到问题时,我看到: epoll_wait(10, {{EPOLLIN, {u32=3487534344, u64=140367313734920}}}, 2, 10000) = 1 accept4(6, {sa_family=AF_INET6, sin6_port=htons(52621), inet_pton (AF_INET6, "::ffff:105.193.30.91", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28], SOCK_CLOEXEC) = 11 ## Later on… read(7, 0x7fffa658ad7f, 1) = -1 EAGAIN (Resource temporarily unavailable) 但是,由于apache已经在运行,所以在文件7上我看不到相应的open() 。 因此我看到权限问题,但我仍然不知道哪个文件是问题。 我知道我可以尝试捕获所有的文件打开时,我重新生成的Apache,但我希望有一种方法来映射文件7到一个真正的文件名…有没有办法做到这一点? 编辑1: 使用@lain的指导,我跑了lsof | grep 266474069 lsof | grep 266474069 ,但结果不清楚… [root@lnxlmf moin]# […]
这不是一个关于我的具体问题的问题,因为我已经或多或less的解决了这个问题,而是关于一般的IIS / Python和用户帐户。 我有我用IIS 7.5(Mercurial使用hgweb.wsgi脚本)运行的python脚本。 其中一个插件(largefiles)正在读取和写入文件时遇到许可问题。 该脚本试图通过检查正在返回C:\Windows\System32\config\systemprofile\AppData\Local的APPDATA和LOCALAPPDATA环境variables将文件写入临时目录,并且由于权限而失败。 我试着打印USERNAME环境variables,但是无论我在IIS应用程序池的Identity中设置了什么用户,它总是返回MACHINENAME$ 那么如何在IIS中运行python脚本,使环境variables指向正确的用户的家庭位置呢? 或者这只是一个开发人员错误(汞没有权限问题,只有大文件扩展名)? 此外,当我最初在C:/Data有回购站时,由大文件写入该目录的文件具有locking图标,权限为SYSTEM :完全控制和Administrators :完全控制,将所有者设置为Administrators (组,而不是pipe理员用户)。 写入文件后,不能再读取。 即使我给Everyone完全控制了C:/Data目录,新的文件仍然会被locking,除非我手动编辑权限。 同样,Hg没有这个问题,只有大文件写的文件。
最近我正在build立一些Python网站,看来架构nginx -> uwsgi -> wsgi application在Python世界中是一个显而易见的select。 (其实我正在将一个由Apache + mod_wsgi支持的MoinMoin网站迁移到一个运行nginx的新VM上,所以我花了一些时间来看看nginx支持的部署可能性。) 我已经读了很多关于为什么需要这样的间接层,我完全知道,涉及到的各种技术 – nginx,uwsgi和wsgi – 都是现代的,function非常高,性能非常高,到今天为止都是成熟的。 但是由于在这样的体系结构中有两层IPC( nginx -> uwsgi和uwsgi -> wsgi application ),我一直在想 IPC如何影响整体performance? 是否具有足够的影响力,具有实际意义? 我search了一下,发现没有直接的答案。 那么IPC的开销是否足够小,或者我没有find正确的关键字? (顺便说一下,我读到Erlang社区已经生成了几个HTTP服务器,直接将用户的HTTP请求传送到应用程序代码,并且性能也非常高,我search了一下,但是找不到比较这两种方法的基准)
我有一个应用程序运行在Ubuntu下的Apache(尝试12和14)使用python通过WSGI。 当我得到一些太多的stream量时,我在错误日志中看到“服务器到达MaxRequestWorkers …”,我当然会考虑扩大我支持的工作人员数量(我已经阅读了所有关于究竟要做什么),但是在达到这个之后,Apache变得没有响应,即使没有更多的负载,我也无法得到任何响应。
我有一个Django的web应用程序安装与ubuntu 9.10 mod_wsgi和apache2 即时通讯使用下面的代码来通过一个HTTPpost用户身份validation我的网站的另一部分。 所有它需要的是一个HTTP 200。 from django.contrib.auth import authenticate from django.http import HttpResponse def post_authentication_api(request): if request.method == 'POST': print request user = authenticate(username=request.POST['user'], password=request.POST['pass']) if user is not None: if user.is_active: print "correct" return HttpResponse("correct", mimetype="text/plain") else: print "disabled" return HttpResponse("disabled", mimetype="text/plain", status=401) else: print "incorrect" return HttpResponse("incorrect", mimetype="text/plain", status=401) 这一切工作正常,当我运行它使用python manage.py runserver命令和其他应用程序validation正常。 […]
我如何让Apache运行2.7而不是2.5? 我将Apacheconfiguration为使用带有Django和Python 2.7的mod_wsgi,但是错误日志显示Apache正在使用Python 2.5.2,并且找不到django.core.handlers.wsgi。 该模块是可用的python和Django的壳,每个运行2.7,所以我认为这个问题是Apache的Python版本。 我从源代码(在Debian系统上)安装了Python 2.7.1,并将符号链接/ usr / bin / python改为指向/usr/local/bin/python2.7,其中“make install”放置了二进制文件。 python和djangopopup2.7.1(这些可以导入wsgi模块)。 可能是相关的 – 当我将符号链接转换回以前的版本(对于某些安装需要apt-get)时,python shell仍然会出现2.7.1。 Django没有。 我在安装过程中错过了什么吗? 更新:这 – https://stackoverflow.com/questions/4186099/django-running-wrong-version – build议这个问题可能是mod_wsgi,或mod_python,为Python 2.5build立。 我试过从源码构buildmod_wsgi,但是这个过程没有findapxs,并且安装libapache2-dev(如mod_wsgi站点所build议的)的努力是在不可卸载的依赖关系上轰炸。 而且我不能通过apt-get安装mod_wsgi或mod_python,而无需将Python指向debian默认的2.5。 不知道如何在这里脱落。 更新2:select回滚Python到2.5。 我推测Apache正在进入Python 2.5 b / c,它发现mod_wsgi.so-2.5,对应于Python 2.5,已启用mods。 编译mod_wsgi可能已经把.so-2.7模块放在那里,但是这需要apache2-dev,Debian软件包为此打破了一些缺失的依赖性问题,并且回滚判断了valor的更好的部分,而且没有人会关心那或者是这个跑马圈地,但是, 如果 ,温柔的读者,一些python2.7 + apache毛球把你带到这里,这些时间疤痕的注释让你一下,为我提高杯子。 精益求精! 晚安。 最新更新:apache2-dev问题通过aptitude安装而不是apt-get解决。