From a1b2f5868167dc0f6f3eabe3716a44515043c2a2 Mon Sep 17 00:00:00 2001 From: Peter Marquardt Date: Thu, 28 Mar 2024 08:56:48 +0100 Subject: [PATCH] startstop: last final episode --- README.todo | 9 +++ buildall.sh | 3 - startstop-paperless.build.sh | 108 ----------------------------------- startstop.build.sh | 35 ++++++------ 4 files changed, 27 insertions(+), 128 deletions(-) delete mode 100755 startstop-paperless.build.sh diff --git a/README.todo b/README.todo index 1af1118..a23f457 100644 --- a/README.todo +++ b/README.todo @@ -7,6 +7,15 @@ bug: ☐ https://github.com/paperless-ngx/paperless-ngx/discussions/3090 Calling OCRmyPDF with args: {'input_file': PosixPath('/scratch/local/plprj/2024-02-19/paperless-ngx34bhqotl/c913a207C78B05A-B130-45F8-9EC4-281AD914ABFA}.PDF'), 'output_file': PosixPath('/scratch/local/plprj/2024-02-19/paperless-0ee3414u/archive.pdf'), 'use_threads': True, 'jobs': 32, 'language': 'deu+eng', 'output_type': 'pdfa', 'progress_bar': False, 'color_conversion_strategy': 'RGB', 'force_ocr': True, 'clean_final': True, 'deskew': True, 'rotate_pages': True, 'rotate_pages_threshold': 12.0, 'sidecar': PosixPath('/scratch/local/plprj/2024-02-19/paperless-0ee3414u/sidecar.txt')} + ☐ /node_modules/.bin/ng build --configuration production +Locale data for 'ar-AR' cannot be found. Using locale data for 'ar'. +WARNING [src/locale/messages.ar_AR.xlf]: File target locale ('ar') does not match configured locale ('ar-AR') +Locale data for 'af-ZA' cannot be found. Using locale data for 'af'. +WARNING [src/locale/messages.af_ZA.xlf]: File target locale ('af') does not match configured locale ('af-ZA') +Locale data for 'bg-BG' cannot be found. Using locale data for 'bg'. +WARNING [src/locale/messages.bg_BG.xlf]: File target locale ('bg') does not match configured locale ('bg-BG') + + upgrade: ssl-certs in conf umziehen diff --git a/buildall.sh b/buildall.sh index 03fac53..78d301c 100755 --- a/buildall.sh +++ b/buildall.sh @@ -61,7 +61,6 @@ ln -fs "${logfile}" "${LOGS}/build.log" ./startstop.build.sh [ -d "${BUILD_sqlite}" ] || ./sqlite.build.sh [ -d "${BUILD_redis}" ] || ./redis.build.sh -./redis.startstop.build.sh [ -d "${BUILD_python}" ] || ./Python.build.sh [ -d "${BUILD_node}" ] || ./node.build.sh [ -d "${BUILD_ffmpeg}" ] || ./ffmpeg.build.sh @@ -75,9 +74,7 @@ ln -fs "${logfile}" "${LOGS}/build.log" [ -d "${BUILD_libfontttf}" ] || ./liberation-fonts-ttf.build.sh [ -d "${BUILD_nginx}" ] || ./nginx.build.sh ./nginx.conf.build.sh -./nginx.startstop.build.sh [ -d "$PROJECT/${BUILD_paperless}" ] || ./paperless-ngx.build.sh -./paperless-gunicorn.startstop.build.sh } 2>&1 | tee "$logfile" 2>&1 diff --git a/startstop-paperless.build.sh b/startstop-paperless.build.sh deleted file mode 100755 index 05a2d47..0000000 --- a/startstop-paperless.build.sh +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/bash -x - -. build.profile - -TO=${PROJECT}/startstop-paperless.sh - -install -m 755 <( cat <<_EOP_ -#!/bin/bash -set -e - -export XDG_RUNTIME_DIR=/run/user/\$(id -u \$USER) - -. profile - -[ -d "../${BUILD_TAG}" ] || { echo "BUILD_TAG unset when generated or not a parent directory";exit; } - -declare -A SDS - -slurp(){ IFS='\n' read -r -d '' \${1} || true; } - -#################################################### -slurp SDS["paperless-${BUILD_TAG}-consumer.service"] <<'_EOS_' -[Unit] -Description=Paperless consumer - -[Service] -WorkingDirectory=${PROJECT}/paperless-ngx/src -ExecStart=/bin/bash -c '. ../../profile && python3 manage.py document_consumer' - -[Install] -WantedBy=default.target -_EOS_ - -#################################################### -slurp SDS["paperless-${BUILD_TAG}-scheduler.service"] <<'_EOS_' -[Unit] -Description=Paperless Celery Beat - -[Service] -WorkingDirectory=${PROJECT}/paperless-ngx/src -ExecStart=/bin/bash -c '. ../../profile && celery --app paperless beat --loglevel INFO' - -[Install] -WantedBy=default.target -_EOS_ - -#################################################### -slurp SDS["paperless-${BUILD_TAG}-task-queue.service"] <<'_EOS_' -[Unit] -Description=Paperless Celery Workers -# Requires=redis.service - -[Service] - -WorkingDirectory=${PROJECT}/paperless-ngx/src -ExecStart=/bin/bash -c '. ../../profile && celery --app paperless worker --loglevel WARNING' - -[Install] -WantedBy=default.target -_EOS_ - -#################################################### -SVC=(\${!SDS[@]}) - -case "\$1" in - start) - [ -d ${DEVSHM} ] || mkdir -p ${DEVSHM} - for s in "\${SVC[@]}"; do - echo \$s - systemctl --user start \$s - done - ;; - restart) - for s in "\${SVC[@]}"; do - echo \$s - systemctl --user restart \$s - done - ;; - stop) - for s in "\${SVC[@]}"; do - echo \$s - systemctl --user stop \$s - done - ;; - status) - systemctl --user list-unit-files paperless-${BUILD_TAG}-\* - for s in "\${SVC[@]}"; do - systemctl --user --no-pager --full status \$s || true - done - ;; - install) - mkdir -p \$HOME/.config/systemd/user - for s in "\${SVC[@]}"; do - ( - echo "# I'm from \$0" - cat <<< "\${SDS["\$s"]}" - ) > \$HOME/.config/systemd/user/\$s - systemctl --user disable \$s - done - systemctl --user daemon-reload - ;; - *) - echo "usage: \$0 {start|stop|restart|install|status}" >&2 - exit 1; - ;; -esac -_EOP_ -) ${TO} diff --git a/startstop.build.sh b/startstop.build.sh index 04c78fd..d0fb86a 100755 --- a/startstop.build.sh +++ b/startstop.build.sh @@ -21,21 +21,18 @@ cmd="\${1:-help}" srv="\${2:-all}" if [[ \${srv} = 'all' ]]; then - for srv in redis nginx ; do # gunicorn consumer scheduler worker; do + for srv in redis nginx gunicorn consumer scheduler worker; do echo "### ./startstop.sh \${cmd} \${srv}" - ./startstop.sh \${cmd} \${srv} + ./startstop.sh \${cmd} \${srv} || echo "RET: $?" done exit fi -echo "## ${PROJECT}" - PIDFILE=${DEVSHM}/srv-\${srv}.pid -SIDFILE=${DEVSHM}/srv-\${srv}.sid PGIDFILE=${DEVSHM}/srv-\${srv}.pgid function rm_pidfiles() { - rm -fv "\${PIDFILE}" "\${SIDFILE}" "\${PGIDFILE}" + rm -fv "\${PIDFILE}" "\${PGIDFILE}" } #### nginx #### @@ -57,6 +54,7 @@ srv_nginx_stop() { #### redis #### srv_redis_start() { + # redis is special: it would start under any condition local _opts=( --port 0 --unixsocket "${DEVSHM}/redis.sock" @@ -134,7 +132,7 @@ srv_generic_status() { read -a pid < "\${PIDFILE}" ps -f --pid \${pid} --ppid \${pid} else - echo "# no pgid or pid file found: \${PGIDFILE} \${PIDFILE} " + echo "# no pgid or pid file found: \${PGIDFILE} \${PIDFILE}" fi fi } @@ -145,13 +143,15 @@ srv_generic_stop() { read -a pgid < "\${PGIDFILE}" echo "killing process group \${pgid}" kill -- -\${pgid} - echo "waiting for process group \${pgid} to die" + echo "waiting for process group \${pgid} to die" pwait --pgroup \${pgid} else if [[ -s "\${PIDFILE}" ]]; then local pid read -a pid < "\${PIDFILE}" - ps -f --pid \${pid} --ppid \${pid} + kill -- \${pid} + echo "waiting for process \${pid} to die" + tail -f --pid=\${pid} /dev/null else echo "# no pid file found: \${PGIDFILE}" fi @@ -165,31 +165,32 @@ srv_generic_restart() { #### main() #### -set -x - if [[ \$(type -t srv_\${srv}_\${cmd}) = 'function' ]]; then case "\${cmd}" in start) mkdir -p "${DEVSHM}" "${LOGDIR}" "${TMPDIR}" [[ -s "\${PIDFILE}" ]] && echo "# \${PIDFILE} found, refuse start of \${srv}" && exit 0 - [[ -s "\${SIDFILE}" ]] && echo "# \${SIDFILE} found, refuse start of \${srv}" && exit 0 [[ -s "\${PGIDFILE}" ]] && echo "# \${PGIDFILE} found, refuse start of \${srv}" && exit 0 + + exec 99>"\${PIDFILE}" || exit 1 + flock 99 || exit 1 + + set -m coproc { - set -m - srv_\${srv}_\${cmd}; + srv_\${srv}_\${cmd}; } > ${LOGDIR}/srv-\${srv}.log 2>&1 - echo "\${COPROC_PID}" > "\${PIDFILE}" + echo "\${COPROC_PID}" >> "\${PIDFILE}" ps opgid= "\${COPROC_PID}" > "\${PGIDFILE}" - ps osid= "\${COPROC_PID}" > "\${SIDFILE}" exit ;; *) + echo "########## default fallback to srv_\${srv}_\${cmd} ###############" srv_\${srv}_\${cmd} exit ;; esac else - echo "srv_\${srv}_\${cmd}() not declared" + # echo "srv_\${srv}_\${cmd}() not declared" if [[ \$(type -t srv_generic_\${cmd}) = 'function' ]]; then srv_generic_\${cmd} exit