PROJECT_NAME := pybossa PROJECT_DIR := $(CURDIR) SED_REPLACE_ALL = sed -i "s/$(1)/$(2)/g" "$(3)" SED_REPLACE_ALL_PATH = sed -i "s\#$(1)\#$(2)\#g" "$(3)" ifndef IP ifneq ($(shell ip route | grep "default" | awk '{print $$5; exit}'),) IP := $(shell ip route get 1 | awk '{print $$7; exit}') else IP := 127.0.0.1 endif endif LOCALHOST ?= ${IP} install: .install config build build: env create-db @ sudo chown redis:redis /etc/redis/redis.conf @ sudo chown redis:redis /etc/redis/sentinel.conf @ sudo service redis-server stop @ sudo update-rc.d -f redis-server remove @ while ! sudo service supervisor restart; do echo "fail, retrying ..."; done @ sudo supervisorctl restart rq-scheduler @ sudo supervisorctl restart rq-worker @ sudo supervisorctl restart pybossa clean: @ find . -regextype posix-awk -regex "(.*.log|.*.pyc)" -type f -print -delete config: @ cp ./alembic.ini.template ./alembic.ini @ cp ./settings_local.py.tmpl ./settings_local.py @ cp ./contrib/pybossa.wsgi.tmpl ./contrib/pybossa.wsgi @ cp ./contrib/apache/pybossa.conf.tmpl ./contrib/apache/pybossa.conf @ cp ./contrib/pybossa.ini.template ./contrib/pybossa.ini @ cp ./contrib/supervisor/rq-scheduler.conf.template ./contrib/supervisor/rq-scheduler.conf @ cp ./contrib/supervisor/rq-worker.conf.template ./contrib/supervisor/rq-worker.conf @ cp ./contrib/supervisor/pybossa.conf.template ./contrib/supervisor/pybossa.conf @ ln -sf ./pybossa/themes/default/translations/ ./pybossa/translations @ $(call SED_REPLACE_ALL_PATH,,$(CURDIR),./contrib/pybossa.wsgi) @ $(call SED_REPLACE_ALL,ServerName localhost,ServerName ${LOCALHOST},./contrib/apache/pybossa.conf) @ $(call SED_REPLACE_ALL,user1,$$USER,./contrib/apache/pybossa.conf) @ $(call SED_REPLACE_ALL,group1,$$USER,./contrib/apache/pybossa.conf) @ $(call SED_REPLACE_ALL_PATH,,$(CURDIR),./contrib/apache/pybossa.conf) @ $(call SED_REPLACE_ALL_PATH,/home/pybossa/pybossa,$(CURDIR),./contrib/pybossa.ini) @ $(call SED_REPLACE_ALL_PATH,/home/pybossa/pybossa,$(CURDIR),./contrib/supervisor/rq-scheduler.conf) @ $(call SED_REPLACE_ALL,user=pybossa,user=$$USER,./contrib/supervisor/rq-scheduler.conf) @ $(call SED_REPLACE_ALL_PATH,/home/pybossa/pybossa,$(CURDIR),./contrib/supervisor/rq-worker.conf) @ $(call SED_REPLACE_ALL,user=pybossa,user=$$USER,./contrib/supervisor/rq-worker.conf) @ $(call SED_REPLACE_ALL_PATH,/home/pybossa/pybossa,$(CURDIR),./contrib/supervisor/pybossa.conf) @ $(call SED_REPLACE_ALL_PATH,pybossa.ini,contrib/pybossa.ini,./contrib/supervisor/pybossa.conf) @ $(call SED_REPLACE_ALL,user=pybossa,user=$$USER,./contrib/supervisor/pybossa.conf) @ sudo install -m 755 -p ./contrib/apache/pybossa.conf /etc/apache2/sites-available/pybossa.conf @ sudo install -m 644 -p ./contrib/redis-supervisor/redis.conf /etc/redis/redis.conf @ sudo install -m 644 -p ./contrib/redis-supervisor/sentinel.conf /etc/redis/sentinel.conf @ sudo install -m 644 -p ./contrib/supervisor/pybossa.conf /etc/supervisor/conf.d/pybossa.conf @ sudo install -m 644 -p ./contrib/supervisor/redis-sentinel.conf /etc/supervisor/conf.d/redis-sentinel.conf @ sudo install -m 644 -p ./contrib/supervisor/redis-server.conf /etc/supervisor/conf.d/redis-server.conf @ sudo install -m 644 -p ./contrib/supervisor/rq-scheduler.conf /etc/supervisor/conf.d/rq-scheduler.conf @ sudo install -m 644 -p ./contrib/supervisor/rq-worker.conf /etc/supervisor/conf.d/rq-worker.conf @ cat /etc/apache2/sites-available/pybossa.conf @ ([ -e /etc/apache2/sites-enabled/wikilibras.conf ] && sudo a2dissite wikilibras.conf) || sudo a2ensite pybossa.conf @ sudo service apache2 restart @ sudo service apache2 reload env: @ ( \ virtualenv ./env/; \ . ./env/bin/activate; \ pip install -U pip; \ pip install -U uwsgi; \ pip install -U ndg-httpsclient; \ pip install -r requirements.txt; \ ) uninstall: clean @ rm -rf ./env/ @ rm -f ./settings_local.py @ rm -f ./contrib/${PROJECT_NAME}.wsgi @ rm -f ./contrib/apache/${PROJECT_NAME}.conf @ sudo rm -f /etc/apache2/sites-available/${PROJECT_NAME}.conf @ sudo rm -f /etc/apache2/sites-enabled/${PROJECT_NAME}.conf run: @ ( \ . ./env/bin/activate; \ python main.py; \ ) .install: @ sudo apt-get update && \ sudo apt-get install -y git-core \ postgresql postgresql-server-dev-all libpq-dev python-psycopg2 \ python-virtualenv \ python-dev build-essential libjpeg-dev libssl-dev swig libffi-dev \ redis-server \ supervisor \ apache2 apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-wsgi @ echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf @ sudo a2enconf servername @ sudo a2enmod headers -@ sudo a2dissite 000-default.conf PYBOSSA_DB_USERNAME := pybossa PYBOSSA_DB_PASSWORD := tester PYBOSSA_DB_CREATE := psql -c \"CREATE USER pybossa WITH PASSWORD '${PYBOSSA_DB_PASSWORD}'\"; PYBOSSA_DB_CREATE += psql -c \"CREATE DATABASE pybossa OWNER ${PYBOSSA_DB_USERNAME}\"; PYBOSSA_DB_DROP := psql -c \"DROP DATABASE ${PYBOSSA_DB_USERNAME}\"; PYBOSSA_DB_DROP += psql -c \"DROP USER ${PYBOSSA_DB_USERNAME}\"; PYBOSSA_DB_DUMPFILE := pybossa-dump.sql PYBOSSA_DB_VERBOSE := -v PYBOSSA_DB_ADMINFILE := wikilibras-pybossa.sql .postgresql: -@ sudo service postgresql restart create-db: .postgresql env @ sudo su postgres -c "${PYBOSSA_DB_CREATE}" @ ( \ . ./env/bin/activate; \ python cli.py db_create; \ ) create-admin: @ sudo su postgres -c "psql --set ON_ERROR_STOP=off -f ${PYBOSSA_DB_ADMINFILE} ${PYBOSSA_DB_USERNAME}" drop-db: .postgresql @ sudo su postgres -c "${PYBOSSA_DB_DROP}" ${PYBOSSA_DB_DUMPFILE}: @ sudo su postgres -c "PGPASSWORD='${PYBOSSA_DB_PASSWORD}' pg_dump ${PYBOSSA_DB_VERBOSE} -b --inserts ${PYBOSSA_DB_USERNAME};" > ${PYBOSSA_DB_DUMPFILE}