diff --git a/celery.ini b/celery.ini deleted file mode 100644 index aab6dff..0000000 --- a/celery.ini +++ /dev/null @@ -1,27 +0,0 @@ -[uwsgi] - -# Django-related settings -# django 1.8 needs python >= 2.7 -plugin = python27 -# the base directory (full path) -chdir = /usr/share/repoapi -# Django's wsgi file -module = repoapi.wsgi:application -# the virtualenv (full path) -home = /var/lib/repoapi/venv_prod -# django setting -env = DJANGO_SETTINGS_MODULE=repoapi.settings.prod - -no-default-app = true - -# Better process names -auto-procname = true -procname-prefix-spaced = [%n] - -# Ensure correct signal is sent to processes on stop/restart -die-on-term = true -touch-reload = %p - -# celery -workerpid = /var/lib/repoapi/celery-worker.pid -smart-attach-daemon = %(workerpid) %(home)/bin/python %(chdir)/manage.py celery worker --pidfile=%(workerpid) -l info diff --git a/debian/control b/debian/control index 7fdf692..50eb8f1 100644 --- a/debian/control +++ b/debian/control @@ -3,6 +3,7 @@ Priority: extra Maintainer: Sipwise Development Team <support@sipwise.com> Build-Depends: debhelper (>= 8~), + dh-systemd (>= 1.5), python-dev, virtualenv, Standards-Version: 3.9.7 @@ -16,6 +17,7 @@ Depends: make, python, sqlite3, + uwsgi, uwsgi-plugin-python, virtualenv, ${misc:Depends}, diff --git a/debian/install b/debian/install index f2d527b..799b70b 100644 --- a/debian/install +++ b/debian/install @@ -1,5 +1,3 @@ -celery.ini etc/uwsgi/apps-available -flower.ini etc/uwsgi/apps-available hotfix usr/share/repoapi Makefile usr/share/repoapi manage.py usr/share/repoapi diff --git a/debian/postinst b/debian/postinst new file mode 100644 index 0000000..2913bdb --- /dev/null +++ b/debian/postinst @@ -0,0 +1,50 @@ +#!/bin/sh + +set -e + +USR_DIR=/usr/share/repoapi +LIB_DIR=/var/lib/repoapi + +# summary of how this script can be called: +# * <postinst> `configure' <most-recently-configured-version> +# * <old-postinst> `abort-upgrade' <new version> +# * <conflictor's-postinst> `abort-remove' `in-favour' <package> +# <new-version> +# * <postinst> `abort-remove' +# * <deconfigured's-postinst> `abort-deconfigure' `in-favour' +# <failed-install-package> <version> `removing' +# <conflicting-package> <version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +mk_dj_secret() { + python -c "import random,string;print '%s'%''.join([random.SystemRandom().choice(\"{}{}{}\".format(string.ascii_letters, string.digits, string.punctuation)) for i in range(63)])" ; +} + +case "$1" in + + configure) + if ! [ -f "${LIB_DIR}/.secret_key" ] ; then + mk_dj_secret > "${LIB_DIR}/.secret_key" + chmod 600 "${LIB_DIR}/.secret_key" + chown www-data:www-data "${LIB_DIR}/.secret_key" + echo "generated secret_key" + fi + cd "${USR_DIR}" && make venv_prod + service uwsgi restart repoapi || true + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + exit 0 + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; + +esac + +#DEBHELPER# + +exit 0 diff --git a/debian/repoapi.repoapi-flower.service b/debian/repoapi.repoapi-flower.service new file mode 100644 index 0000000..1276bbf --- /dev/null +++ b/debian/repoapi.repoapi-flower.service @@ -0,0 +1,16 @@ +[Unit] +Description=Celery Flower Service +After=network.target + +[Service] +Type=simple +User=www-data +Group=www-data +Environment=DJANGO_SETTINGS_MODULE=repoapi.settings.prod +WorkingDirectory=/usr/share/repoapi +ExecStart=/var/lib/repoapi/venv_prod/bin/python ./manage.py celery flower \ + --db=/var/lib/repoapi/flower.db --persistent --xheaders \ + --url_prefix=flower --unix_socket=/var/lib/repoapi/celery-flower.socket + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/debian/repoapi.repoapi-worker.service b/debian/repoapi.repoapi-worker.service new file mode 100644 index 0000000..76b8353 --- /dev/null +++ b/debian/repoapi.repoapi-worker.service @@ -0,0 +1,16 @@ +[Unit] +Description=Celery Service +After=network.target + +[Service] +Type=simple +User=www-data +Group=www-data +Environment=DJANGO_SETTINGS_MODULE=repoapi.settings.prod +PIDFile=/var/lib/repoapi/celery-worker.pid +WorkingDirectory=/usr/share/repoapi +ExecStart=/var/lib/repoapi/venv_prod/bin/python ./manage.py celery worker \ + --pidfile=/var/lib/repoapi/celery-worker.pid --loglevel=INFO + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/debian/rules b/debian/rules index 731b93d..face235 100755 --- a/debian/rules +++ b/debian/rules @@ -10,7 +10,7 @@ #export DH_VERBOSE=1 %: - dh $@ + dh $@ --with systemd override_dh_auto_test: @@ -23,3 +23,8 @@ override_dh_fixperms: dh_fixperms chmod 4770 debian/repoapi/var/lib/repoapi chown www-data:www-data debian/repoapi/var/lib/repoapi + +override_dh_systemd_enable: + dh_systemd_enable --name=repoapi-worker + dh_systemd_enable --name=repoapi-flower + diff --git a/flower.ini b/flower.ini deleted file mode 100644 index ae75edd..0000000 --- a/flower.ini +++ /dev/null @@ -1,26 +0,0 @@ -[uwsgi] - -# Django-related settings -# django 1.8 needs python >= 2.7 -plugin = python27 -# the base directory (full path) -chdir = /usr/share/repoapi -# the virtualenv (full path) -home = /var/lib/repoapi/venv_prod -# django setting -env = DJANGO_SETTINGS_MODULE=repoapi.settings.prod - -no-default-app = true - -# Better process names -auto-procname = true -procname-prefix-spaced = [%n] - -# Ensure correct signal is sent to processes on stop/restart -die-on-term = true -touch-reload = %p - -# monitor celery -flower_socket = /var/lib/repoapi/celery-flower.socket -flower_db = /var/lib/repoapi/flower.db -attach-daemon = %(home)/bin/python %(chdir)/manage.py celery flower --db=%(flower_db) --persistent --xheaders --url_prefix=flower --unix_socket=%(flower_socket)