discourse: enable restoring backups bigger than RAM

When restoring a backup, discourse decompresses the backup archive in
the /share/discourse/tmp dir. Before this change, it is linked to /run
which is typically backed by memory, so the backup will fail to
restore if you do not have enough memory on your system to contain the
backup. This has already happened to me on two small forums.

This moves tmp to the StateDirectory /var/lib/discourse/tmp which is
typically backed by disk.

(cherry picked from commit f933c68374b9c6195dc74d26c95fc9bf240fead8)
This commit is contained in:
Ryan Mulligan 2021-09-23 08:22:53 -07:00 committed by github-actions[bot]
parent b897a166cb
commit d3bee2a63a
2 changed files with 5 additions and 3 deletions

View File

@ -746,6 +746,8 @@ in
umask u=rwx,g=rx,o=
rm -rf /var/lib/discourse/tmp/*
cp -r ${cfg.package}/share/discourse/config.dist/* /run/discourse/config/
cp -r ${cfg.package}/share/discourse/public.dist/* /run/discourse/public/
ln -sf /var/lib/discourse/uploads /run/discourse/public/uploads
@ -767,7 +769,7 @@ in
)
discourse-rake db:migrate >>/var/log/discourse/db_migration.log
chmod -R u+w /run/discourse/tmp/
chmod -R u+w /var/lib/discourse/tmp/
${lib.optionalString (!cfg.admin.skipCreate) mkAdmin}
@ -782,7 +784,6 @@ in
RuntimeDirectory = map (p: "discourse/" + p) [
"config"
"home"
"tmp"
"assets/javascripts/plugins"
"public"
"sockets"
@ -791,6 +792,7 @@ in
StateDirectory = map (p: "discourse/" + p) [
"uploads"
"backups"
"tmp"
];
StateDirectoryMode = 0750;
LogsDirectory = "discourse";

View File

@ -289,7 +289,7 @@ let
cp -r . $out/share/discourse
rm -r $out/share/discourse/log
ln -sf /var/log/discourse $out/share/discourse/log
ln -sf /run/discourse/tmp $out/share/discourse/tmp
ln -sf /var/lib/discourse/tmp $out/share/discourse/tmp
ln -sf /run/discourse/config $out/share/discourse/config
ln -sf /run/discourse/assets/javascripts/plugins $out/share/discourse/app/assets/javascripts/plugins
ln -sf /run/discourse/public $out/share/discourse/public