diff --git a/ctl b/ctl index 28c74e12..b78183ba 100755 --- a/ctl +++ b/ctl @@ -17,7 +17,7 @@ if [ "$action" = "init" ]; then SUDO="" PANDORA_USER=`ls -l update.py | cut -f3 -d" "` if [ `whoami` != $PANDORA_USER ]; then - SUDO="sudo -H -u $PANDORA_USER" + SUDO="sudo -E -H -u $PANDORA_USER" fi $SUDO python3 -m venv --system-site-packages . branch=`cat .git/HEAD | sed 's@/@\n@g' | tail -n1` @@ -62,11 +62,10 @@ if [ ! -z $cmd ]; then SUDO="" PANDORA_USER=`ls -l update.py | cut -f3 -d" "` if [ `whoami` != $PANDORA_USER ]; then - SUDO="sudo -H -u $PANDORA_USER" + SUDO="sudo -E -H -u $PANDORA_USER" fi shift - $SUDO "$BASE/$cmd" $@ - exit $? + exec $SUDO "$BASE/$cmd" $@ fi if [ `whoami` != 'root' ]; then diff --git a/docker/base/install.sh b/docker/base/install.sh index 1bfa1bda..2d016eba 100755 --- a/docker/base/install.sh +++ b/docker/base/install.sh @@ -30,6 +30,7 @@ apt-get update -qq apt-get install -y \ netcat-openbsd \ sudo \ + rsync \ iproute2 \ vim \ wget \ diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index cd78c6f4..123883f8 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -8,6 +8,8 @@ export LANG=en_US.UTF-8 mkdir -p /run/pandora chown -R ${user}.${user} /run/pandora +update="/usr/bin/sudo -u $user -E -H /srv/pandora/update.py" + # pan.do/ra services if [ "$action" = "pandora" ]; then if [ ! -e /srv/pandora/initialized ]; then @@ -26,12 +28,12 @@ if [ "$action" = "pandora" ]; then /overlay/install.py echo "Initializing database..." - echo "CREATE EXTENSION pg_trgm;" | /srv/pandora/pandora/manage.py dbshell + echo "CREATE EXTENSION pg_trgm;" | /srv/pandora/pandora/manage.py dbshell || true /srv/pandora/pandora/manage.py init_db - /srv/pandora/update.py db + $update db echo "Generating static files..." - /srv/pandora/update.py static chown -R ${user}.${user} /srv/pandora/ + $update static touch /srv/pandora/initialized fi /srv/pandora_base/docker/wait-for db 5432 @@ -44,54 +46,53 @@ if [ "$action" = "encoding" ]; then /srv/pandora_base/docker/wait-for-file /srv/pandora/initialized /srv/pandora_base/docker/wait-for rabbitmq 5672 name=pandora-encoding-$(hostname) + cd /srv/pandora/pandora exec /usr/bin/sudo -u $user -E -H \ - /srv/pandora/bin/python \ - /srv/pandora/pandora/manage.py \ - celery worker \ - -c 1 \ - -Q encoding -n $name \ - -l INFO + /srv/pandora/bin/celery \ + -A app worker \ + -Q encoding -n ${name} \ + --pidfile /run/pandora/encoding.pid \ + --maxtasksperchild 500 \ + -c 1 \ + -l INFO fi if [ "$action" = "tasks" ]; then /srv/pandora_base/docker/wait-for-file /srv/pandora/initialized /srv/pandora_base/docker/wait-for rabbitmq 5672 name=pandora-default-$(hostname) + cd /srv/pandora/pandora exec /usr/bin/sudo -u $user -E -H \ - /srv/pandora/bin/python \ - /srv/pandora/pandora/manage.py \ - celery worker \ - -Q default,celery -n $name \ + /srv/pandora/bin/celery \ + -A app worker \ + -Q default,celery -n ${name} \ + --pidfile /run/pandora/tasks.pid \ --maxtasksperchild 1000 \ -l INFO fi if [ "$action" = "cron" ]; then /srv/pandora_base/docker/wait-for-file /srv/pandora/initialized /srv/pandora_base/docker/wait-for rabbitmq 5672 + cd /srv/pandora/pandora exec /usr/bin/sudo -u $user -E -H \ - /srv/pandora/bin/python \ - /srv/pandora/pandora/manage.py \ - celerybeat -s /run/pandora/celerybeat-schedule \ + /srv/pandora/bin/celery \ + -A app beat \ + -s /run/pandora/celerybeat-schedule \ --pidfile /run/pandora/cron.pid \ -l INFO fi if [ "$action" = "websocketd" ]; then /srv/pandora_base/docker/wait-for-file /srv/pandora/initialized /srv/pandora_base/docker/wait-for rabbitmq 5672 + cd /srv/pandora/pandora exec /usr/bin/sudo -u $user -E -H \ /srv/pandora/bin/python \ /srv/pandora/pandora/manage.py websocketd fi # pan.do/ra management and update -if [ "$action" = "manage.py" ]; then +if [ "$action" = "ctl" ]; then shift - exec /usr/bin/sudo -u $user -E -H \ - /srv/pandora/pandora/manage.py "$@" -fi -if [ "$action" = "update.py" ]; then - shift - exec /usr/bin/sudo -u $user -E -H \ - /srv/pandora/update.py "$@" + exec /srv/pandora/ctl "$@" fi if [ "$action" = "bash" ]; then shift diff --git a/docker/install.sh b/docker/install.sh index e1a87181..081a18af 100755 --- a/docker/install.sh +++ b/docker/install.sh @@ -56,13 +56,9 @@ cp /srv/pandora/docker/entrypoint.sh /entrypoint.sh mv /srv/pandora/ /srv/pandora_base/ mkdir /pandora ln -s /pandora /srv/pandora -cat > /usr/local/bin/update.py << EOF -#!/bin/sh -exec /srv/pandora/update.py \$@ -EOF -cat > /usr/local/bin/manage.py << EOF +cat > /usr/local/bin/pandoractl << EOF #!/bin/sh -exec /srv/pandora/pandora/manage.py \$@ +exec /srv/pandora/ctl \$@ EOF -chmod +x /usr/local/bin/manage.py /usr/local/bin/update.py +chmod +x /usr/local/bin/pandoractl diff --git a/docker/setup-docker-compose.sh b/docker/setup-docker-compose.sh index 7665e7b8..2f48179f 100755 --- a/docker/setup-docker-compose.sh +++ b/docker/setup-docker-compose.sh @@ -26,7 +26,7 @@ and to get started run this: To update pan.do/ra run: - docker-compose run pandora update.py + docker-compose run pandora ctl update EOF touch __init__.py diff --git a/docker/wait-for-file b/docker/wait-for-file index 83b043e4..d4fe19d6 100755 --- a/docker/wait-for-file +++ b/docker/wait-for-file @@ -1,5 +1,5 @@ #!/bin/sh -TIMEOUT=60 +TIMEOUT=180 TARGET="$1" for i in `seq $TIMEOUT` ; do diff --git a/pandora/app/management/commands/init_db.py b/pandora/app/management/commands/init_db.py index 92ac750f..a7957395 100644 --- a/pandora/app/management/commands/init_db.py +++ b/pandora/app/management/commands/init_db.py @@ -11,6 +11,8 @@ def run(cmd): stdout, stderr = p.communicate() if p.returncode != 0: + print('failed to run:', cmd) + print(stdout) print(stderr) sys.exit(1) diff --git a/pandora/user/utils.py b/pandora/user/utils.py index 49fa7884..5328a464 100644 --- a/pandora/user/utils.py +++ b/pandora/user/utils.py @@ -22,7 +22,7 @@ def get_location(ip): else: try: location = g.city(ip) - except GeoIP2Exception: + except: try: location = g.country(s.ip) except: