Articles of uwsgi

Django uwsgi部署。 无法find“应用程序”

启动uwsgi时有问题: unable to find "application" callable in file dashboard/wsgi.py unable to load app 0 (mountpoint='') (callable not found or import error) uwsgi.ini: [uwsgi] socket = /tmp/dashboard.sock chdir = /srv/http/depo-dashboard/ wsgi-file = dashboard/wsgi.py callable = app processes = 4 threads = 2 chmod-socket = 666 wsgi.py: import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dashboard.settings") application = […]

服务Flask应用程序,如PHP脚本

在大多数networking服务器configuration中, .php文件在用户使用php-fpm访问php文件时自动处理。 我想为我的nginx服务器上的Flask应用程序做类似的事情,以便当用户访问.py文件或带有index.py文件的目录时,Flask应用程序会自动运行。 在Ubuntu的nginx服务器下,需要什么configuration?

设置Django + nginx + uwsgi + supervisord:/ run中的套接字之间的区别vs / tmp

我试图使用uWSGI皇帝和nginx在同一台机器上设置2个Djangonetworking应用程序,并拥有supervisordpipe理皇帝进程的启动和重新启动。 我终于在互联网上进行了大量search之后,终于实现了一个可行的部署。 然而,在所有的拉毛活动中,我发现了一些奇怪的东西,如果有人能向我解释为什么会这样,我会很感激。 所以我以root身份在皇帝模式下运行我的uWSGI进程。 vassal iniconfiguration文件负责将权限下放到我的uid,并创build一个由我的用户拥有的套接字文件,作为www-data(以便nginx可以写入它)和权限660.下面是一个示例vassalconfiguration: [uwsgi] uid = xxxx chdir = %(project_dir)/%(project) home = %(venv_base)/%(venv) module = %(project).wsgi:application master = true processes = 4 socket = /tmp/%(project).sock chown-socket = %(uid):www-data chmod-socket = 660 stats = /tmp/%(project)_stat.sock logto = %(project_dir)/logs/uwsgi.log # Cleans up when the process is killed (includes deleting the socket file) vacuum = […]

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

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

uWSGI失败的系统单元文件

使用Flask,NGINX和uWSGI我已经成功安装了一个应用程序,通过Twilio发送和接收文本消息。 一切工作都很完美,只是它在我的个人用户帐户(名为trinitrogen)下运行。 我想移动它来运行一个不同的用户帐户(命名应用程序),但是在systemd单元文件有问题。 我的困难的最大难题是,我什至不能find一个好logging错误,所以我不知道从哪里开始 首先,我基于这个教程所做的工作大部分都取得了成功,正是所分享的内容 我创build了新的用户,并将其添加到车轮 [apps@argon ~]$ groups apps wheel 将repo克隆到应用程序主目录中,在目录中设置名为venv的virtualenv,安装所有python软件包,在命令行中成功testing了uwsgi [apps@argon PowderMonitor]$ uwsgi –socket 10.0.0.221:8080 –protocol=http -w wsgi:app 它工作很好。 我开始设置systemd文件,但这是我碰到的一堵墙。 下面是当前文件,以及尝试重新启动服务后的输出。 [apps@argon PowderMonitor]$ cat /etc/systemd/system/TwilioApp.service [Unit] Description=uWSGI – TwilioApp – apps acccount After=network.target [Service] User=apps Group=nginx WorkingDirectory=/home/apps/PowderMonitor Environment="PATH=/home/apps/PowderMonitor/venv/bin" ExecStart=/home/apps/PowderMonitor/venv/bin/uwsgi –ini TwilioApp.ini [Install] WantedBy=multi-user.target [apps@argon PowderMonitor]$ sudo systemctl restart TwilioApp.service [apps@argon PowderMonitor]$ sudo systemctl […]

在/ tmp和/ var / tmp / uwsgi中找不到ngnix套接字文件?

在nginx 1.10.2和uwsgi 2.0.14的centos 7上 当我configurationuwsgi在/ var / tmp / uwsgi或/ tmp中打开一个套接字时,我从nginx发出一条消息,说它找不到套接字文件: 2017/06/07 16:54:53 [crit] 2642#0: *7 connect() to unix:///tmp/mywebsite.socket failed (2: No such file or directory) while connecting to upstream, client: 108.162.245.185, server: _, request: "GET /share/3years/music/guitarists/django_reinhardt HTTP/1.1", upstream: "uwsgi://unix:///tmp/mywebsite.socket:", host: "mywebsite.com" 2017/06/07 17:22:11 [crit] 1327#0: *2 connect() to unix:///var/tmp/uwsgi/mywebsite.socket failed (2: No such file […]

UWSGI的Nginxcaching不同大小的HTTP响应

我需要为nginx上的python(django)应用程序configurationcaching。 一切工作正常,但不时从caching中获得空白页面。 我没有看到nginx和uwsgi日志中的任何错误。 在正常情况下,我得到的HTTP/1.1 200 resposne 24615 bytes从nginx的HTTP/1.1 200 resposne 24615 bytes长,但有时它是20字节长。 HTTP/1.1 200 0.08 secs: 24615 bytes ==> / HTTP/1.1 200 0.07 secs: 24615 bytes ==> / HTTP/1.1 200 7.71 secs: 24615 bytes ==> / HTTP/1.1 200 0.06 secs: 20 bytes ==> / HTTP/1.1 200 0.06 secs: 20 bytes ==> / HTTP/1.1 200 0.07 […]

你如何configurationnginx来防止在缓慢的uwsgi后端服务上阻塞?

比方说,我有一个简单的nginxconfiguration与uwsgi后端对话: server { listen 9900 default_server; listen [::]:9900 default_server; location / { include uwsgi_params; uwsgi_pass unix:/tmp/service-foo.sock; } } 这个服务有一些url( /renderer/… )的子集,总是非常慢,在重负载的情况下,整个网站都会崩溃。 我想要的是用两个后端replace这个,就像这样: server { listen 9900 default_server; listen [::]:9900 default_server; location / { include uwsgi_params; uwsgi_pass unix:/tmp/service-foo.sock; } location ~ ^/renderer/[0-9]+/ { include uwsgi_params; uwsgi_pass unix:/tmp/service-renderer.sock; uwsgi_read_timeout 30s; uwsgi_send_timeout 30s; uwsgi_request_buffering on; } } …我的天真的期望是,这将解决这个问题,通过允许/renderer/…请求缓慢服务一个,而其余的网站保持响应。 […]

chdir上的uwsgi权限被拒绝,该权限对该uid具有权限

我在没有 Emperor的情况下使用uWSGI(在nginx后面),作为systemd服务运行。 uwsgi.service: [Service] ExecStart=/usr/local/bin/uwsgi –ini /var/www/CONSTANd++/uwsgi_config.ini (…) uwsgi_config.ini: (…) gid = www-data uid = www-data chdir = /var/www/CONSTANd++/constandpp_web/constandpp_web (…) 终奌站: $ ls -la /var/www/CONSTANd++/constandpp_web/constandpp_web drwxrwxr-x 5 pdiracdelta www-data 4096 Sep 6 10:42 . (…) 显然,这个文件夹对于www-data组具有所有权限,但是当我启动这个uWSGI服务时,uWSGI日志却抱怨: (…) setgid() to 33 setuid() to 33 chdir() to /var/www/CONSTANd++/constandpp_web/constandpp_web chdir(): Permission denied [core/uwsgi.c line 2591] chdir(): Permission denied […]

uwsgi内存使用优化

我正在uwsgi上运行几个django站点,我试图优化我的内存使用configuration,但是-idle和–die-on-idle标志似乎没有做任何事情。 每个守护进程在10-12MB左右开始,一旦服务请求就会增加到30MB左右,但是在闲置一段时间后仍会保留在那里。 我的启动命令是: uwsgi –cheap –idle 60 –die-on-idle –http :8083 –wsgi-file /var/django/mysite/apache/django.wsgi 有什么我在这里失踪? 从文档,我希望“–idle”标志使其在闲置60秒后回落到其初始的内存使用情况; 而且我希望这个“闲置”标志完全杀死了工人的进程。 这些都不会发生,虽然“–cheap”标志似乎工作。 (注意:我知道http不是最好的协议,但是我想在重新编译nginx之前将内存问题sorting)