Deployment
==========
The command ``python3 manage runserver`` is useful to check that the site looks ok, but it should not be
used in production, because the Django server is highly inefficient. You should rely on well-tested servers like
`Apache `_ or `Nginx `_.
To publish your site so that other people can access it, you must properly set up a few critical entries in the ``.env``
file. Here are the key values that you should modify:
- Always set ``DEBUG`` to ``off``, otherwise any failure in the code will reveal important details about
the internals of your site (e.g., secret keys, local paths…).
- Turn on ``LOGGING`` and specify a path where logging messages should be saved using the field
``LOG_FILE_PATH``; leave it out of the file if you want to send messages to the console. (This can be useful if
your webserver already redirects console messages to a log file.) You can specify the style of the
messages using the ``LOG_FORMATTER`` variable; it can either be ``brief`` (the default) or ``verbose``.
- Set up the logging level according to your tastes, using the field ``LOG_LEVEL``. Valid values are:
1. ``DEBUG``
2. ``INFO``
3. ``WARNING``
As an example, here is the section of a ``.env`` file where logging is configured::
LOGGING=on
LOG_FILE_PATH=/var/log/instrumentdb/instrumentdb.log
LOG_FORMATTER=verbose
LOG_LEVEL=INFO
- Set up a folder where to keep static files, e.g., ``/var/www/static``, and specify its path in the
``.env`` file, under the name ``STATIC_PATH``. Then, every time you update the site, be sure to
run ``python3 manage.py collectstatic``, so that the path is filled with static files (images, CSS, etc.).
You should make your webserver publish this folder under the URL ``/static``; see the `Django documentation
`_ for an example.