From 75d30a08d62bdebde3d22fb693228b6a5456a523 Mon Sep 17 00:00:00 2001 From: Martin Winkler Date: Sat, 11 May 2019 23:19:42 +0200 Subject: [PATCH] WIP mayan edms direct mayan edms deployment --- seqs/mayan-edms.sh | 134 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100755 seqs/mayan-edms.sh diff --git a/seqs/mayan-edms.sh b/seqs/mayan-edms.sh new file mode 100755 index 0000000..8150c32 --- /dev/null +++ b/seqs/mayan-edms.sh @@ -0,0 +1,134 @@ +#!/bin/bash + +toolName="Mayan EDMS" + +step_1_info() { echo "Install libreoffice without gui"; } +step_1() { + exe apt update + exe apt --no-install-recommends install libreoffice-core +} + +step_2_info() { echo "Get $toolName binary dependcies"; } +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 "" + exe mkdir -p /opt + exe virtualenv /opt/mayan-edms + saveReturn $? + endReturn + exe chown -R mayan:mayan /opt/mayan-edms +} + +step_4_info() { echo "Install $toolName"; } +step_4() { + exe sudo -u mayan /opt/mayan-edms/bin/pip install --no-cache-dir --no-use-pep517 mayan-edms + saveReturn $? + endReturn + exe sudo -u mayan /opt/mayan-edms/bin/pip install --no-cache-dir --no-use-pep517 psycopg2==2.7.3.2 redis==2.10.6 + saveReturn $? + endReturn + + #read -p "Enter postgres user name: " postgresUser + #endCheckEmpty postgresUser "user name" + read -p "Enter postgres password: " postgresPass + endCheckEmpty postgresPass "password" + + exe sudo -u postgres psql -c "CREATE USER mayan WITH password '${postgresPass}';" + exe sudo -u postgres createdb -O mayan mayan + + exe sudo -u mayan MAYAN_DATABASE_ENGINE=django.db.backends.postgresql MAYAN_DATABASE_NAME=mayan \ + MAYAN_DATABASE_PASSWORD="${postgresPass}" MAYAN_DATABASE_USER=mayan \ + MAYAN_DATABASE_HOST=127.0.0.1 MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \ + /opt/mayan-edms/bin/mayan-edms.py initialsetup + + exe sudo -u mayan MAYAN_MEDIA_ROOT=/opt/mayan-edms/media \ + /opt/mayan-edms/bin/mayan-edms.py collectstatic --noinput +} + +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=/opt/mayan-edms/lib/python2.7/site-packages:/opt/mayan-edms/data, + MAYAN_MEDIA_ROOT=/opt/mayan-edms/media, + MAYAN_DATABASE_ENGINE=django.db.backends.postgresql, + MAYAN_DATABASE_HOST=127.0.0.1, + MAYAN_DATABASE_NAME=mayan, + MAYAN_DATABASE_PASSWORD=\"${postgresPass}\", + MAYAN_DATABASE_USER=mayan, + MAYAN_DATABASE_CONN_MAX_AGE=60, + DJANGO_SETTINGS_MODULE=mayan.settings.production + +[program:mayan-gunicorn] +autorestart = true +autostart = true +command = /opt/mayan-edms/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 /opt/mayan-edms/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 /opt/mayan-edms/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 /opt/mayan-edms/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 /opt/mayan-edms/bin/mayan-edms.py celery beat --pidfile= -l ERROR +killasgroup = true +numprocs = 1 +priority = 998 +startsecs = 10 +stopwaitsecs = 1 +user = mayan" + +step_5_info() { echo "$toolName configuration file"; } +step_5() { + addConf "$supervisorFile" "/etc/supervisor/conf.d/mayan.conf" + + exe echo "maxmemory-policy allkeys-lru" >> /etc/redis/redis.conf + exe echo "save \"\"" >> /etc/redis/redis.conf + exe echo "databases 1" >> /etc/redis/redis.conf + exe systemctl restart redis + + exe systemctl enable supervisor + exe systemctl restart supervisor +} + +. sequencer.sh