我有一个用户帐户,所有为这个Python webapp设置,我用mod_wsgi部署。 它是超级无特权的,只能从appdir中读取,并写入一个单独的tempdirs集,这是别人无法看到的。 我正在使用以下configuration: WSGIDaemonProcess xlsxf_daemon user=xlsxf group=xlsxf 很简单。 不幸的是,我们然后从关于user选项的文档中获得这个: 注意,如果Apache没有以root用户身份启动,这个选项将被忽略,在这种情况下,无论设置如何,守护进程将以Apache启动的用户身份运行。 由于我在Linode的默认Ubuntu安装中运行了这个工具,所以Apache启动为www-data用户,而我已经确认的Python应用程序也注定要以www-data运行。 为什么上面的限制? 我有很多的Ruby /乘客应用程序,作为其他用户daemonize就好了。 编辑 :好的,所以Apache不启动作为www-data用户,但我仍然看到,尽pipe上述configuration线Python Web应用程序运行www-data 。 /编辑 或者,我只是在这里过分偏执? 我有这个服务器上运行的多个不同的项目,我希望他们都作为独立的用户运行,“以防万一”,但随时告诉我,我应该放弃,并将权限移动到www-data 。 edit2 :按照要求,这里是所有正在运行的apache进程: root 18798 0.0 1.9 16156 9880 ? Ss Jul26 0:03 /usr/sbin/apache2 -k start www-data 19344 0.0 1.0 15208 5264 ? S Jul26 0:00 /usr/sbin/apache2 -k start xlsxf 19361 0.0 1.2 […]
我想configurationmod_wsgi使用Python 2.7。 我下载并解压源码并运行 ./configure –with-python=/usr/local/bin/python2.7 这个mod_wsgi.so-2.4和mod_wsgi.so-2.5出现在/ usr / lib / apache2 / modules之后。 我重新启动服务器,但这报告“内部服务器错误”。 错误日志显示,在启动时,服务器报告Python 2.5.2的使用情况 – 与以前相同的版本。 我如何让Apache运行Python 2.7? 如何正确configurationmod_wsgi以使用Python 2.7运行?
我一直在试图研究如何使用Apache VirtualHosts进行多个Python / Django部署。 我遇到的问题似乎很直接, ImportError: Could not import settings 'hub.settings' (Is it on sys.path?): No module named hub.settings, referer: proposals.internal.local 我遇到的麻烦是,proposal.internal.local使用的是proposal.settings,而hub.settings实际上来自hub.internal.local。 如果我自己运行提案或集线器,我不会遇到上述问题,但是,当我运行它们 – 当人们使用它们。 sys.path似乎更新了两个项目。 [APACHE CONFIGS – HUB] <VirtualHost *:80> ServerName hub.internal.local DocumentRoot /var/www/hub.internal.local/hub/hub/static Alias /static/ /var/www/hub.internal.local/hub/hub/static/ <Directory /var/www/hub.internal.local/hub/hub/static> Allow from all </Directory> WSGIScriptAlias / /var/www/hub.internal.local/hub/hub/wsgi.py </VirtualHost> [APACHE CONFIGS – build议] <VirtualHost *:80> […]
在过去,我用两种语言编写网站。 PHP用于较小的站点,Python用于较大的站点。 通过这个设置,我将运行多个Paster实例来为不同端口上的每个站点提供服务,然后使用nginx代理Paster。 这工作得很好。 不过,我不希望使用PHP的小型网站。 我想用Python。 这意味着服务器可以运行超过50个网站。 在这一点上,在50个不同的端口上运行50个Paster实例似乎很愚蠢。 这里最好的select是什么? 干杯。
我有一个相当简单的问题。 当mod_wsgi在守护进程模式下运行,并且在每个虚拟主机的基础上启用WSGIDaemonProcess和WSGIProcessGroup指令时,这些指令是否也被其他虚拟主机拾取? 例如,如果我有: <VirtualHost *:80> WSGIDaemonProcess example.com processes=2 threads=15 display-name=%{GROUP} WSGIProcessGroup example.com </VirtualHost> <VirtualHost *:443> WSGIProcessGroup example.com </VirtualHost> 第二个443虚拟主机是否会使用前80个虚拟主机中定义的现有“example.com”进程组? 还是必须在第二个443虚拟主机中重新定义一个单独的进程组?
首先,我正在寻找一些帮助,设置我的Django和Apache设置,以便为我的网站进行微调,以获得最佳的性能成本效益。 服务器信息:Django 1.3 Webfacion服务器,当前分配80mb ram。 我没有真正触及Webfaction已经提供的http.conf。 我的网站还没有发布,但它正在运行在生产中,占用了大约17mb的主stream程和大约30mb的整体。 我今天做了一些负载testing,从来没有超过20mb的主stream程。 网站信息:单Django应用程序,性能很好,一切加载速度快(现在非常低的stream量)。 我只使用了几个模板文件,它们正在服务于我的nginx。 我只有几个模型,并且所有的处理程序都使用分页来提取数据,而且它们都没有一次在QuerySet中加载超过25条logging。 模板非常简单,只需在html和一些jsonvariables中放置一些媒体,客户端的ui全部由js驱动。 我目前没有使用djangocaching系统。 我正在计划升级并获得80MB以上的内存,我想做的最后一件事是网站变得stream行和崩溃。 有一些工具可以模拟stream量吗? 什么更多的内存80MB真的帮助? 有一个地方,我可以得到真正了解这个东西的人的专业意见? (我愿意付钱)。 任何答案都会很好。 提前致谢。 更新:一切运行良好我只是想调整它。 这里是httpd.conf文件: ServerRoot "/home/pllee/webapps/django/apache2" LoadModule dir_module modules/mod_dir.so LoadModule env_module modules/mod_env.so LoadModule log_config_module modules/mod_log_config.so LoadModule mime_module modules/mod_mime.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule wsgi_module modules/mod_wsgi.so LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" […]
我在RHEL Linux服务器上使用apache在我的/etc/httpd/conf.d/httpd.conf中有两个指令: WSGIScriptAlias /apps /var/www/apps <Directory /var/www/apps > Options MultiViews ExecCGI MultiviewsMatch Handlers SetHandler wsgi-script Order allow, deny allow from all </Directory> ScriptAlias /scripts /var/www/scripts <Directory /var/www/scripts > Options MultiViews ExecCGI MultiviewsMatch Handlers SetHandler wsgi-script Order allow, deny allow from all </Directory> 有什么不同? 据我所知,WSGIScriptAlias仅限于运行Python脚本,ScriptAlias也允许运行Perl脚本。 我可以总是使用ScriptAlias而不是WSGIScriptAlias? 使用WSGIScriptAlias而不是ScriptAlias是否有任何性能优势?
我们有一个坐在apache 2前面的nginx实例(nginx处理静态资源,dynamic内容请求代理到apache),主要是使用mod_wsgi来服务各种python / django应用程序。 我们突然看到了高服务器负载(稳步攀升到50以上,通常不到1),并正在寻找最好的方法来追查原因。 有没有办法看到哪些虚拟主机负责的Apache进程? 诊断高服务器负载的原因的一些一般技巧也将受到欢迎。 编辑:感谢大家的帮助,原来是由代码错误引起的,没有服务器重新configuration是必要的。 但是,提供的提示将在未来有用。
我们有一批分布式客户端,其中包括上传日志文件到我们的Apache服务器。 我们把一些日志上的日志轮转搞砸了,所以我们现在每天多次从这些客户端上传相对较大的文件。 显然,修正是让日志轮换工作,并把更多的智能客户,让他们停止这样做。 获取任何推送给客户的变更将需要几天,可能一两个星期。 与此同时,我们的3个T1通过这些上传完全饱和,许多重要的连接(比日志上传更重要)超时。 日志上传由在mod-wsgi下运行的Python脚本处理,我们试图通过(通过Python脚本)立即发送200成功。 这不起作用 – curl(我们用来做上传的)会在30秒后报告200和一个破损的pipe道,但是它仍然在上传这30秒。 有什么build议我们可以做些什么呢? 如果我们丢失了日志文件,我们并不太在意,但我们真的希望重要的stream量能够通过。
我想configurationApache来承载一个Django的web服务和一个PHP网站。 所有使用www.mysite.com/api模式的url都应该被定向到Django服务。 所有其他url(例如www.mysite.com )应该被引导到PHP网站。 我的虚拟主机configuration如下所示: … WSGIScriptAlias /api /var/www/mysite.com/apache/django.wsgi <Directory /var/www/mysite.com/apache> Order allow,deny Allow from all </Directory> Alias / /var/www/mysite.com/apache/php/ <Directory /var/www/mysite.com/apache/php> Options Indexes FollowSymLinks AllowOverride All Order Deny,Allow Allow from all </Directory> … 这将每个请求指向正确的处理程序。 但是,我的Django的urls.py看起来像这样: … api_patterns = patterns('', url(r'^api/1.0/$', views.api_root), url(r'^api/1.0/oauth/', include('oauth2_provider.urls', namespace='oauth2_provider')), … 这不匹配任何url,因为它期望他们以api开头。 这个前缀当然是在它到达之前被剥离的(当请求到达这里时,它们的格式是1.0/oauth等)。 有没有办法将完整的URL传递给Django? 解 mod_wsgi的作者Graham Dumpleton提出了一些解决这个问题的方法,两者都起作用(见下面的接受答案)。 我去了他在UPDATE 1build议的解决scheme。追加/api文件path解决了这个问题: WSGIScriptAlias […]