Difference between revisions of "Uwsgi"
Line 31: | Line 31: | ||
log-date = false | log-date = false | ||
− | For all applications you can use this configuration file in /etc/uwsgi-emperor/vassels/app1.ini | + | For all applications you can use this configuration file in /etc/uwsgi-emperor/vassels/app1.ini. uwsgi is installed using pip so no loading of a python module is needed. |
[uwsgi] | [uwsgi] | ||
− | |||
master = false | master = false | ||
processes = 1 | processes = 1 | ||
+ | pidfile = /run/uwsgi/%n.pid | ||
vaccum = true | vaccum = true | ||
chmod-socket = 666 | chmod-socket = 666 | ||
Line 48: | Line 48: | ||
===Raspberry pi=== | ===Raspberry pi=== | ||
− | On my raspberry pi uwsgi was installed with some | + | On my raspberry pi uwsgi was installed with some extensions to ease configuration. E.g. to use .sml file for configuration |
/etc/uwsgi/apps-available/emperor.xml | /etc/uwsgi/apps-available/emperor.xml | ||
Line 89: | Line 89: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == | + | ==Daemon management== |
− | + | ;<code>/usr/local/bin/uwsgi -d --ini /etc/uwsgi-emperor/emperor.ini --log-syslog</code> | |
− | <code>/usr/local/bin/uwsgi -d --ini /etc/uwsgi-emperor/emperor.ini --log-syslog</code> | + | :Start with logging to [[rsysog]], add following line to the rsyslogd configuration |
+ | :<code>:programname, contains, "uwsgi" /var/log/uwsgi/uwsgi.log</code> | ||
− | + | ;<code>kill `pidof uwsgi`</code> | |
− | + | :This works for stopping all processes. | |
+ | ;<code>uwsgi --stop /run/uwsgi/pid</code> | ||
+ | :This looks cleaner but does not work on my system | ||
− | + | ;<code>uwsgi --reload /run/uwsgi/app1.pid</code> | |
− | + | :Restart a vassel (application) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <code>uwsgi -- |
Revision as of 12:12, 15 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 is installed using pip so no loading of a python module is needed.
[uwsgi] master = false processes = 1 pidfile = /run/uwsgi/%n.pid 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 extensions 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
Daemon management
/usr/local/bin/uwsgi -d --ini /etc/uwsgi-emperor/emperor.ini --log-syslog
- Start with logging to rsysog, add following line to the rsyslogd configuration
:programname, contains, "uwsgi" /var/log/uwsgi/uwsgi.log
kill `pidof uwsgi`
- This works for stopping all processes.
uwsgi --stop /run/uwsgi/pid
- This looks cleaner but does not work on my system
uwsgi --reload /run/uwsgi/app1.pid
- Restart a vassel (application)