Difference between revisions of "Uwsgi"
Line 46: | Line 46: | ||
The %n will be replaced by the first part of the file-name (app1 in this example). In /opt/flask/app1 you can put your code. | The %n will be replaced by the first part of the file-name (app1 in this example). In /opt/flask/app1 you can put your code. | ||
+ | |||
+ | ===Raspberry pi=== | ||
+ | On my raspberry pi uwsgi was installed with some extentions to ease configuration. E.g. to use .sml file for configuration | ||
+ | |||
+ | /etc/uwsgi/apps-available/emperor.xml | ||
+ | <syntaxhighlight lang=xml> | ||
+ | <uwsgi> | ||
+ | <autoload>true</autoload> | ||
+ | <no-orphan>true</no-orphan> | ||
+ | <emperor>/etc/uwsgi/vassals-enabled</emperor> | ||
+ | <master>true</master> | ||
+ | <emperor-nofollow>true</emperor-nofollow> | ||
+ | <processes>1</processes> | ||
+ | <uid>www-data</uid> | ||
+ | <gid>www-data</gid> | ||
+ | </uwsgi> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | /etc/uwsgi/apps-available/apps.xml | ||
+ | <syntaxhighlight lang=xml> | ||
+ | <uwsgi> | ||
+ | <plugins>python3</plugins> | ||
+ | <master>false</master> | ||
+ | <processes>1</processes> | ||
+ | <vaccum>true</vaccum> | ||
+ | <chmod-socket>666</chmod-socket> | ||
+ | <socket>/tmp/%n.sock</socket> | ||
+ | <uid>www-data</uid> | ||
+ | <gid>www-data</gid> | ||
+ | <pythonpath>/var/www/flask/%n</pythonpath> | ||
+ | <module>%n</module> | ||
+ | </uwsgi> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Make them available | ||
+ | <syntaxhighlight lang=bash> | ||
+ | cd /etc/uwsgi/apps-enabled | ||
+ | ln -s ../apps-available/emperror.xml | ||
+ | cd /etc/uwsgi/vassals-enabled | ||
+ | ln -s ../apps-available/apps.xml app1.xml | ||
+ | ln -s ../apps-available/apps.xml app2.xml | ||
+ | </syntaxhighlight> | ||
==Starting== | ==Starting== |
Revision as of 14:27, 14 July 2021
Lots of confusion going around on the net about installing and using uwsgi. Here my notes.
Used documentation
https://github.com/unbit/uwsgi/issues/1688
https://stackoverflow.com/questions/35262299/uwsgi-emperor-mode-not-working-outside-of-virtualenv
Installing
- pip3 install uwsgi
- pip3 install flask
Configuration
/etc/uwsgi-emperor/emperor.ini
[uwsgi] autoload = true no-orphan = true emperor = /etc/uwsgi-emperor/vassals master = true emperor-nofollow = true processes = 1 workers = 2 uid = www-data gid = www-data pidfile = /run/uwsgi/pid socket = /tmp/%n.sock chmod-socket = 666 chown-socket = www-data log-date = false
For all applications you can use this configuration file in /etc/uwsgi-emperor/vassels/app1.ini
[uwsgi] plugins = python3 master = false processes = 1 vaccum = true chmod-socket = 666 socket = /tmp/%n.sock uid = www-data gid = www-data pythonpath = /opt/flask/%n module = %n
The %n will be replaced by the first part of the file-name (app1 in this example). In /opt/flask/app1 you can put your code.
Raspberry pi
On my raspberry pi uwsgi was installed with some extentions to ease configuration. E.g. to use .sml file for configuration
/etc/uwsgi/apps-available/emperor.xml
<uwsgi>
<autoload>true</autoload>
<no-orphan>true</no-orphan>
<emperor>/etc/uwsgi/vassals-enabled</emperor>
<master>true</master>
<emperor-nofollow>true</emperor-nofollow>
<processes>1</processes>
<uid>www-data</uid>
<gid>www-data</gid>
</uwsgi>
/etc/uwsgi/apps-available/apps.xml
<uwsgi>
<plugins>python3</plugins>
<master>false</master>
<processes>1</processes>
<vaccum>true</vaccum>
<chmod-socket>666</chmod-socket>
<socket>/tmp/%n.sock</socket>
<uid>www-data</uid>
<gid>www-data</gid>
<pythonpath>/var/www/flask/%n</pythonpath>
<module>%n</module>
</uwsgi>
Make them available
cd /etc/uwsgi/apps-enabled
ln -s ../apps-available/emperror.xml
cd /etc/uwsgi/vassals-enabled
ln -s ../apps-available/apps.xml app1.xml
ln -s ../apps-available/apps.xml app2.xml
Starting
The command is:
/usr/local/bin/uwsgi -d --ini /etc/uwsgi-emperor/emperor.ini --log-syslog
This logs to the rsyslog daemon. Add following line to the rsyslogd configuration to have uwsgi log to a different file:
:programname, contains, "uwsgi" /var/log/uwsgi/uwsgi.log
Stopping
Several suggestions made on the web:
This works:
kill `pidof uwsgi`
Other suggestion that looks cleaner:
uwsgi --stop /run/uwsgi/pid
(or whereever your pid-file is)