Articles of wsgi

Django部署Reccomendations

我有一个以SaaS方式提供的Web应用程序…(每个客户都有自己的子域和他自己的数据库)。 我的应用程序使用Django Python和Postgresql。 现在是在一个Linux共享托pipe计划,使用Apache和mod_wsgi托pipe,但我下个月迁移到一个Linux VPS,并已阅读有关Nginx和Gunicorn(也uwsgi)是一个更好的方式去…我想了解您关于部署django的build议。 我主要是开发人员,所以我有一个系统pipe理员的背景。

Mutli-Site uWSGIconfiguration

我有大约十几个我想用Nginx和uWSGI运行的小Django站点。 他们在一个4核心的服务器上有8个ram的演出。 每个站点是否应该在自己的套接字上进行configuration,以及如何控制所有uWSGI实例的进程总数? 如果每个应用程序有30个进程,我怎样才能防止内存不足?

我如何控制Apache的日志消息(特别是,auth_mysql模块和WSGI)?

在具有Apache2的Ubuntu 10.04服务器上,我启用了auth_mysql,并且显示[debug]消息。 我怎样才能把这些关掉? 我猜测有一种方法可以closures模​​块,以及所有的“debugging”消息。 我很好奇如何做到这一点。 更新: 最初我只发布关于auth-mysql; 不过,我也想要控制WSGI的输出(目前在error.log中显示[info]消息)。

使用mod_wsgi运行Python的Apache

我需要帮助build立一个本地的Apache2来运行Python。 在运行Mountain Lion的Mac上,使用html,php和mysql工作得很好。 Python运行。 通过MacPorts安装mod_wsgi,并在将以下内容添加到httpd.conf后检查它是否已被Apache加载: LoadModule wsgi_module modules/mod_wsgi.so <Directory /opt/local/apache2/htdocs> AddHandler wsgi-script .py Options +ExecCGI Order deny,allow Allow from all </Directory> 把我的index.py文件放到htdocs中: 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] 给整个path/opt/local/apache2/htdocs/index.py提供chmod 777权限 无论我做什么,我都会收到“禁止访问”,您无权访问此服务器上的/index.py。 去localhost / index.py。 Apache错误日志说: [Thu Aug 30 17:46:46 2012] […]

WSGIDaemonProcess:指定一个用户

我有一个用户帐户,所有为这个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 […]

WSGI <app>和<module>有什么区别?

我按照这些说明通过uWSGI服务Python(Web2Py) 。 但是,Web服务器返回了一个错误: uWSGI错误 找不到Python应用程序 直到我修改config.xmlconfiguration文件: <uwsgi> <pythonpath>/var/web2py/</pythonpath> <app mountpoint="/"> <script>wsgihandler</script> </app> </uwsgi> 至: <uwsgi> <pythonpath>/var/web2py/</pythonpath> <module>wsgihandler</module> </uwsgi> <app>和<module>有什么区别? 为什么<module>工作,但不是<app>?

Django / WSGI和PHP如何在Apache上共享?

我有一个服务器运行一个build立的PHP网站,以及一些Django的应用程序。 目前,为PHP设置的VirtualHost侦听端口80,并且对某些目录的请求通过WSGI代理到为Django设置的VirtualHost。 我想改变它,所以Django处理任何不存在的PHP脚本或静态文件。 例如, / – >由PHPparsing为index.php /page.php – >正常parsing为PHP /images/border.jpg – >充当静态文件 / johnfreep – >由Django处理(由urls.py解释) / pages / john – >由Django处理 /(其他) – >由Django处理 我有几个想法。 看起来这些选项是'php first'或'wsgi first'。 在端口80上设置Django,并设置Apache跳过所有已知的PHP,CSS或图像文件。 也许使用SetHandler? 任何其他事情去Django由urls.pyparsing。 设置一个脚本,将所有内容都引用到Django上,作为PHP上的404处理程序。 所以,如果找不到名称的文件,它会将请求path发送到运行Django的VirtualHost进行parsing。

Apache – ScriptAlias和WSGIScriptAlias之间的区别

我在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是否有任何性能优势?

石墨不运行

我目前正在尝试使用石墨wiki的这些说明在gentoo盒子上安装石墨0.9.9。 基本上,它使用apache和mod_wsgi前置石墨。 一切似乎都进行得很顺利,除了apache /石墨webapp似乎从来没有回复网页浏览器的响应(浏览器不断地等待加载页面)。 我打开了石墨debugging信息,但是日志文件中唯一的消息就是这个,在info.log中一遍又一遍地重复(pid总是在变化): Thu Feb 23 01:59:38 2012 :: graphite.wsgi – pid 4810 – 重新加载search索引 这些说明已经在我之前在Ubuntu机器上设置石墨。 我怀疑,mod_wsgi是死亡,但我已经证实,mod_wsgi工作正常时,不提供石墨web应用程序。 这是我的graphite.conf vhost文件的样子: WSGISocketPrefix /etc/httpd/wsgi/ <VirtualHost *:80> ServerName # Server name DocumentRoot "/opt/graphite/webapp" ErrorLog /opt/graphite/storage/log/webapp/error.log CustomLog /opt/graphite/storage/log/webapp/access.log common # I've found that an equal number of processes & threads tends # to show the best performance for […]

正常运行Python Web应用程序和在wsgi下运行Python应用程序有什么区别?

我知道,为了在服务器上运行一个Python Web应用程序(一个使用Flask&Django框架开发的应用程序),你需要使用诸如gunicorn , wsgi , gunicorn ..等来进行部署,并将其configuration为运行像apache2 & nginx这样的web服务器。 但是,我知道我可以运行python my_app.py ,应用程序将在服务器上使用像mywebsite.com:5000这样的端口。 而且我可以在Web服务器上使用代理将mywebsite.com:5000redirect到test.example.com或任何我想要的地方。 那么这两种方式有什么区别呢? 我应该使用哪一个? 谢谢。