Adding my new updating Mastodon guide (#367)
This is guide is for use with my recently merged Production Guide.
This commit is contained in:
parent
d8b2b52690
commit
61e9d31031
|
@ -0,0 +1,108 @@
|
||||||
|
# Updating Mastodon
|
||||||
|
|
||||||
|
This guide assumes you have the set up seen in the [Production Guide](./Production-Guide.md).
|
||||||
|
|
||||||
|
## Read the release notes
|
||||||
|
|
||||||
|
Please read the [release notes](https://github.com/tootsuite/mastodon/releases/) first.
|
||||||
|
|
||||||
|
The release notes may contain special instructions that you may need to run for any given
|
||||||
|
new Mastodon release.
|
||||||
|
|
||||||
|
## Update the git repository
|
||||||
|
After you are done reading the release notes, you will want to log in as the mastodon user
|
||||||
|
and update the git repository.
|
||||||
|
|
||||||
|
This is how you do that:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
su - mastodon
|
||||||
|
cd ~/live
|
||||||
|
git pull
|
||||||
|
git checkout $(git tag -l | sort -V | tail -n 1)
|
||||||
|
```
|
||||||
|
|
||||||
|
The above commands will update your copy of your git repository to the latest available
|
||||||
|
tagged release.
|
||||||
|
|
||||||
|
Always run tagged releases on production Mastodon instances. Never run the master branch
|
||||||
|
on your production instance.
|
||||||
|
|
||||||
|
You can always use `git status` to verify what tagged release your local
|
||||||
|
repository copy is at, for example:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mastodon@mastodon:~/live$ git status
|
||||||
|
HEAD detached at v1.4.7
|
||||||
|
nothing to commit, working directory clean
|
||||||
|
```
|
||||||
|
|
||||||
|
The above output indicates that my local repository copy is using the tagged release 'v1.4.7'
|
||||||
|
of Mastodon.
|
||||||
|
|
||||||
|
## Ruby and node.js dependency updates
|
||||||
|
|
||||||
|
You may need to update Ruby and node.js upon updating to a new Mastodon release.
|
||||||
|
The aforementioned release notes will mention if you need to do the rest of this section.
|
||||||
|
|
||||||
|
This is how you update Ruby dependencies:
|
||||||
|
```sh
|
||||||
|
cd ~/live
|
||||||
|
bundle install --deployment --without development test
|
||||||
|
```
|
||||||
|
|
||||||
|
This is how you update node.js dependencies:
|
||||||
|
```sh
|
||||||
|
cd ~/live
|
||||||
|
yarn install --pure-lockfile
|
||||||
|
```
|
||||||
|
|
||||||
|
## Database schema updates
|
||||||
|
|
||||||
|
Run a database schema every time you update to a new Mastodon release.
|
||||||
|
It is safe to run this every time as it is a [no-op](https://en.wikipedia.org/wiki/NOP) if there are no database
|
||||||
|
schema updates.
|
||||||
|
|
||||||
|
This is how you run a database migration:
|
||||||
|
```sh
|
||||||
|
cd ~/live
|
||||||
|
RAILS_ENV=production bundle exec rails db:migrate
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pre-compiling updated assets
|
||||||
|
|
||||||
|
You may need to pre-compile updated assets upon updating to a new Mastodon release.
|
||||||
|
The aforementioned release notes will mention if you need to do the rest of this section.
|
||||||
|
|
||||||
|
This is how you pre-compile assets:
|
||||||
|
```sh
|
||||||
|
cd ~/live
|
||||||
|
RAILS_ENV=production bundle exec rails assets:precompile
|
||||||
|
```
|
||||||
|
|
||||||
|
A caveat:
|
||||||
|
|
||||||
|
The assets pre-compiler ([Webpacker](https://github.com/rails/webpacker)) can take up
|
||||||
|
a non-trivial amount of resources, particularly RAM. If you find that your server is
|
||||||
|
running out of RAM when running the pre-compile, I recommend stopping the Mastodon services
|
||||||
|
before starting the pre-compile.
|
||||||
|
|
||||||
|
This is how you stop the Mastodon services (as root):
|
||||||
|
```sh
|
||||||
|
systemctl stop mastodon-*
|
||||||
|
```
|
||||||
|
|
||||||
|
## Restarting Mastodon services
|
||||||
|
|
||||||
|
Mastodon runs in memory so you will need to restart it for any of the previous updates to take
|
||||||
|
effect.
|
||||||
|
|
||||||
|
This is how you restart Mastodon services (as root):
|
||||||
|
```sh
|
||||||
|
systemctl restart mastodon-*.service
|
||||||
|
```
|
||||||
|
|
||||||
|
If you stopped the Mastodon services earlier as part of the assets pre-compile, replace
|
||||||
|
the 'restart' with a 'start'.
|
||||||
|
|
||||||
|
You now have an updated Mastodon instance. Keep up the good work!
|
Loading…
Reference in New Issue