Files
shell_sequencer/seqs/mayan-edms.sh
Martin Winkler ab10ef6504 Bump to revision 3
addConf with mandatory paramter; suppots appending
2019-05-17 11:59:51 +01:00

182 lines
5.7 KiB
Bash
Executable File

#!/bin/bash
toolName="Mayan EDMS"
toolRoot="/opt/mayan-edms"
toolMediaFolder="/opt/mayan-edms/media"
# Needed for different steps
postgresDb=""
postgresUser=""
postgresPass=""
step_1_info() { echo "Install libreoffice without gui"; }
step_1() {
exe apt update
exe apt --no-install-recommends install libreoffice -y
}
step_2_info() { echo "Get $toolName binary dependencies"; }
step_2() {
exe apt install g++ gcc ghostscript gnupg1 graphviz libfuse2 \
libjpeg-dev libmagic1 libpq-dev libpng-dev libtiff-dev \
poppler-utils postgresql python-dev python-virtualenv redis-server \
sane-utils supervisor tesseract-ocr tesseract-ocr-deu zlib1g-dev -y
}
step_3_info() { echo "Create virtual environment"; }
step_3() {
exe adduser mayan --disabled-password --disabled-login --no-create-home --gecos -G users""
exe mkdir -p ${toolRoot}
exe virtualenv ${toolRoot}
saveReturn $?
endReturn
exe chown -R mayan:mayan ${toolRoot}
}
step_4_info() { echo "Create postgres database for $toolName"; }
step_4_alias() { ALIAS="createdb"; }
step_4() {
readDatabaseInfos
exe sudo -u postgres psql -c "CREATE USER ${postgresUser} WITH password '${postgresPass}';"
# -O owner : Specifies the database user who will own the new database.
exe sudo -u postgres createdb -O ${postgresUser} ${postgresDb}
}
step_5_info() { echo "Install $toolName"; }
step_5() {
exe sudo -u mayan ${toolRoot}/bin/pip install --no-cache-dir --no-use-pep517 mayan-edms
saveReturn $?
endReturn
exe sudo -u mayan ${toolRoot}/bin/pip install --no-cache-dir --no-use-pep517 psycopg2==2.7.3.2 redis==2.10.6
saveReturn $?
endReturn
readDatabaseInfos
exe sudo -u mayan MAYAN_DATABASE_ENGINE=django.db.backends.postgresql MAYAN_DATABASE_NAME=${postgresDb} \
MAYAN_DATABASE_PASSWORD="${postgresPass}" MAYAN_DATABASE_USER=${postgresUser} \
MAYAN_DATABASE_HOST=127.0.0.1 MAYAN_MEDIA_ROOT=${toolMediaFolder} \
${toolRoot}/bin/mayan-edms.py initialsetup
exe sudo -u mayan MAYAN_MEDIA_ROOT=${toolMediaFolder} \
${toolRoot}/bin/mayan-edms.py collectstatic --noinput
}
step_6_info() { echo "$toolName configuration file"; }
step_6() {
readDatabaseInfos
addConf -c "$supervisorFile" "$supervisorFileLoc"
addConf -a "$redisConf" "$redisConfLoc"
exe systemctl restart redis
exe systemctl enable supervisor
exe systemctl restart supervisor
}
redisConfLoc="/etc/redis/redis.conf"
redisConf="\
maxmemory-policy allkeys-lru
save \"\"
databases 1"
supervisorFileLoc="/etc/supervisor/conf.d/mayan.conf"
supervisorFile="\
[supervisord]
environment=
MAYAN_ALLOWED_HOSTS='[\"*\"]', # Allow access to other network hosts other than localhost
MAYAN_CELERY_RESULT_BACKEND=\"redis://127.0.0.1:6379/0\",
MAYAN_BROKER_URL=\"redis://127.0.0.1:6379/0\",
PYTHONPATH=${toolRoot}/lib/python2.7/site-packages:${toolRoot}/data,
MAYAN_MEDIA_ROOT=${toolMediaFolder},
MAYAN_DATABASE_ENGINE=django.db.backends.postgresql,
MAYAN_DATABASE_HOST=127.0.0.1,
MAYAN_DATABASE_NAME=${postgresDb},
MAYAN_DATABASE_PASSWORD=\"${postgresPass}\",
MAYAN_DATABASE_USER=${postgresUser},
MAYAN_DATABASE_CONN_MAX_AGE=60,
DJANGO_SETTINGS_MODULE=mayan.settings.production
[program:mayan-gunicorn]
autorestart = true
autostart = true
command = ${toolRoot}/bin/gunicorn -w 2 mayan.wsgi --max-requests 500 --max-requests-jitter 50 --worker-class gevent --bind 0.0.0.0:8000 --timeout 120
user = mayan
[program:mayan-worker-fast]
autorestart = true
autostart = true
command = nice -n 1 ${toolRoot}/bin/mayan-edms.py celery worker -Ofair -l ERROR -Q converter,sources_fast -n mayan-worker-fast.%%h --concurrency=1
killasgroup = true
numprocs = 1
priority = 998
startsecs = 10
stopwaitsecs = 1
user = mayan
[program:mayan-worker-medium]
autorestart = true
autostart = true
command = nice -n 18 ${toolRoot}/bin/mayan-edms.py celery worker -Ofair -l ERROR -Q checkouts_periodic,documents_periodic,indexing,metadata,sources,sources_periodic,uploads,documents -n mayan-worker-medium.%%h --concurrency=1
killasgroup = true
numprocs = 1
priority = 998
startsecs = 10
stopwaitsecs = 1
user = mayan
[program:mayan-worker-slow]
autorestart = true
autostart = true
command = nice -n 19 ${toolRoot}/bin/mayan-edms.py celery worker -Ofair -l ERROR -Q mailing,tools,statistics,parsing,ocr -n mayan-worker-slow.%%h --concurrency=1
killasgroup = true
numprocs = 1
priority = 998
startsecs = 10
stopwaitsecs = 1
user = mayan
[program:mayan-celery-beat]
autorestart = true
autostart = true
command = nice -n 1 ${toolRoot}/bin/mayan-edms.py celery beat --pidfile= -l ERROR
killasgroup = true
numprocs = 1
priority = 998
startsecs = 10
stopwaitsecs = 1
user = mayan"
step_20_info() { echo "Backup postgres database to media folder"; }
step_20_alias() { ALIAS=backupdb; }
step_20() {
echo "Backup with standard user / database: mayan / mayan"
exe pg_dump -h 127.0.0.1 -U mayan -c mayan -W > ${toolMediaFolder}/`date +%Y-%m-%d"_"%H-%M-%S`.sql
}
step_22_info() { echo "Postgres database restore"; }
step_22() {
echo "1. Create a empty postgres database first (step 4)"
echo "2. psql -h <host> -U <database user> -d <database name> -W -f <sql dump file>"
echo " e.g. psql -h 127.0.0.1 -U mayan -d mayan -W -f 2018-06-07_18-10-56.sql"
}
# Read postgres database information dbname/user/pass if empty
readDatabaseInfos() {
if [ "$postgresDb" == "" ] ; then
read -p "Enter postgres database name: " postgresDb
endCheckEmpty postgresDb "database"
fi
if [ "$postgresUser" == "" ] ; then
read -p "Enter postgres user name: " postgresUser
endCheckEmpty postgresUser "user name"
fi
if [ "$postgresPass" == "" ] ; then
read -p "Enter postgres password: " postgresPass
endCheckEmpty postgresPass "password"
fi
}
VERSION_SEQREV=3
. sequencer.sh