dokuwiki-sandstorm/.sandstorm/launcher.sh

77 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# Create a bunch of folders under the clean /var that php and nginx expect to exist
mkdir -p /var/lib/nginx
mkdir -p /var/lib/php/sessions
mkdir -p /var/log
mkdir -p /var/log/nginx
mkdir -p /var/www
# Wipe /var/run, since pidfiles and socket files from previous launches should go away
# TODO someday: I'd prefer a tmpfs for these.
rm -rf /var/run
mkdir -p /var/run
# Spawn php
/usr/sbin/php-fpm7.0 -R --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf &
# Wait until php have bound its socket, indicating readiness
while [ ! -e /var/run/php-fpm7.0.sock ] ; do
echo "waiting for php-fpm7.0 to be available at /var/run/php-fpm7.0.sock"
sleep .2
done
mkdir -p /var/lib/dokuwiki/lib/plugins/sandstorm
if [ ! -e /var/lib/dokuwiki/conf/local.php ]; then
echo Adding new configuration.
rsync -a /opt/app/dokuwiki/conf.orig/ /var/lib/dokuwiki/conf
cp /opt/app/local.php /var/lib/dokuwiki/conf
fi
rm -f /var/lib/dokuwiki/conf/conf
if [ ! -e /var/lib/dokuwiki/data ]; then
echo Adding data.
rsync -a /opt/app/dokuwiki/data.orig/ /var/lib/dokuwiki/data
fi
rm -f /var/lib/dokuwiki/data/data
rsync -a /opt/app/dokuwiki/lib/plugins.orig/ /var/lib/dokuwiki/lib/plugins
rm -f /var/lib/dokuwiki/lib/plugins/plugins
rsync -a /opt/app/plugin/ /var/lib/dokuwiki/lib/plugins/sandstorm
if [ ! -e /var/lib/dokuwiki/lib/tpl ]; then
echo Adding templates.
rsync -a /opt/app/dokuwiki/lib/tpl.orig/ /var/lib/dokuwiki/lib/tpl
fi
rm -f /var/lib/dokuwiki/lib/tpl/tpl
cd /var/lib/dokuwiki
grep -Ev '^($|#)' /opt/app/dokuwiki/data.orig/deleted.files | xargs -n 1 rm -vrf
cp /opt/app/acl.auth.php /var/lib/dokuwiki/conf
function cleanup()
{
local data_path="$1" # full path to data directory of wiki
local retention_days="$2" # number of days after which old files are to be removed
# purge files older than ${retention_days} days from attic and media_attic (old revisions)
find "${data_path}"/{media_,}attic/ -type f -mtime +${retention_days} -delete
# remove stale lock files (files which are 1-2 days old)
find "${data_path}"/locks/ -name '*.lock' -type f -mtime +1 -delete
# remove empty directories
find "${data_path}"/{attic,cache,index,locks,media,media_attic,media_meta,meta,pages,tmp}/ \
-mindepth 1 -type d -empty -delete
# remove files older than ${retention_days} days from the cache
if [ ! -z "$(ls -A $data_path/cache)" ]; then
find "${data_path}"/cache/?/ -type f -mtime +${retention_days} -delete
fi
}
cleanup /var/lib/dokuwiki/data 30
# Start nginx.
/usr/sbin/nginx -c /opt/app/.sandstorm/service-config/nginx.conf -g "daemon off;"