Makefile.old 5.92 KB
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,<path-to-project>,$(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,<path-to-project>,$(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}