wiki:INIFiles

Using INI files

.INI files are a standard de-facto configuration way used by a lot of applications.

The syntax is very simple:

[section1]

key1 = value1
key2 = value2

[section2]

key1 = value1
key2 = value2

Starting from version 0.9.6 you can configure uWSGI via INI files. The same rules of XML are followed, so for every command line long-option there is a configuration key.

Ex.

[uwsgi]

socket = /tmp/uwsgi.sock
processes = 4
master = true
module = myapp
harakiri = 30

this is the same as running:

./uwsgi --socket /tmp/uwsgi.sock --processes 4 --master --module myapp --harakiri 30

To use INI files simply pass the --ini option to the uWSGI command line:

./uwsgi --ini myconf.ini

By default the uwsgi section is used but you can specify other section name in this way:

./uwsgi --ini myconf.ini:app1
./uwsgi --ini myconf.ini:app2

and in the myconf.ini:

[app1]
socket = /tmp/uwsgi1.sock
processes = 4
master = true
module = myapp1
harakiri = 30

[app2]
socket = /tmp/uwsgi2.sock
processes = 4
master = true
module = myapp2
harakiri = 30

A real world example, Pylons deployment

first setup a pylons virtualenv

virtualenv PYLO

PYLO/bin/easy_install pylons

then create your first (hello world) project (leave default values)

PYLO/bin/paster create -t pylons helloworld

In the helloworld directory you will find the development.ini file. We can use this file to add uWSGI configuration section:

(add the following lines to development.ini, substitute <absolute_project_path> with the full path of the helloworld app)

[uwsgi]

socket = :3031
master = true
# this is the path to the virtualenv
home = PYLO
# this will point to the same file
paste = config:<absolute_project_path>/development.ini

Now run:

./uwsgi --ini helloworld/development.ini

Hey, do you like the paste configuration directive ? Why being redundant ?

Starting from 0.9.6-rc2 release you can use the --ini-paste commodity.

Simply use --ini-paste instead of --ini and do not specify the paste directory.

uWSGI will automatically parse the ini file with paste.deploy

Reference

As xml and yaml, ini files can use reference

[uwsgi]
foo = www
domain = uwsgi.it
chdir = /var/%(foo)
socket = /tmp/%(domain).sock

Via HTTP

Ini files can be downloaded and parsed via http

uwsgi --ini http://uwsgi.it/configs/myapp.ini

Notes

You can specify no-argument-required options without INI value:

[uwsgi]
processes = 4
master
memory-debug
socket = 127.0.0.1:3032

But this will not work with paste.deploy !!!

Comments are supported with ; and #

[uwsgi]
; i am a comment
# i am a comment too

The .ini extension is recognized as a magic arg, so you can launch uwsgi with

uwsgi file.ini

without specifying the --ini arg