Upgrading a Lino production site¶
This document gives generic instructions for upgrading a Lino production site to a new version. This procedure is suitable for smaller sites with one contact person. See Installing a preview site for are more sophisticated approach on sites with many users.
Go to your project directory:
$ go myproject
goif you don’t know that command.
Activate the python environment (we usually have a shell alias
awhich expands to
Stop any services that might want to write to the database (web server, supervisor):
$ sudo service apache2 stop # not needed when the server runs nginx $ sudo service supervisor stop
make_snapshot.shto make a snapshot of your database:
See Making a snapshot of a Lino database for details.
pull.shto update the source code:
installcommand to install any new Python dependencies if needed:
$ python manage.py install
$ python manage.py collectstatic
This step can be skipped if there were no changes in the static files.
Restore the snapshot:
$ python manage.py run snapshot/restore.py
You can skip this if you are sure that there is no change in the database structure.
You can run
restore.pyalso “just in case”, it doesn’t do any harm when there were no changes in the database structure.
restore.pyjust in case does no harm, but it can take much time for a bigger database. After all this command drops all database tables, re-creates them, and then fills every single data row into it. So instead of running
restore.py“just in case” you might prefer check whether you need to run it:
$ python manage.py dump2py -o t $ diff snapshot/restore.py t/restore.py
That is, you make a second temporary snapshot (which takes much less time than restoring it) and then compare their
restore.pyfiles. If nothing has changed (i.e.
diffgives no output), then you don’t need to run the
In case the
restore.pygives error messages, you need to ask support from the application developer because it’s their job to specify the details of what happens during the data migration by providing migrators.
Start the web server and supervisor:
$ sudo service apache2 start $ sudo service supervisor start
Update the Python packages used by this virtualenv.
This file is generated by
This includes both the packages installed from cloned source code repositories and those installed via PyPI.