Makefile 6.78 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)"

VLIBRAS_NAME             ?= vlibras-wiki
VLIBRAS_WIKILIBRAS_ENV   := /etc/profile.d/lavid/vlibras/wikilibras_env.sh

-include "${VLIBRAS_WIKILIBRAS_ENV}"

ifndef LOCALHOST
    ifndef NETWORK_INTERFACE
        NETWORK_INTERFACE := $(shell ip route | grep "default" | awk '{print $$5; exit}')
    endif
    ifdef NETWORK_INTERFACE
        LOCALHOST := $(shell ip addr list ${NETWORK_INTERFACE} | grep "inet " | cut -d ' ' -f6 | cut -d/ -f1)
    endif
endif

LOCALHOST := 127.0.0.1

install: uninstall install-dep config build

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
	@ sudo chown redis:redis /etc/redis/redis.conf
	@ sudo chown redis:redis /etc/redis/sentinel.conf
	@ [ -e /etc/apache2/sites-enabled/vlibras-wiki.conf ] || sudo a2ensite pybossa.conf
	@ sudo service redis-server stop
	@ sudo update-rc.d -f redis-server remove
	-@ sudo killall redis-server
	@ # sudo rm -f /etc/apache2/sites-available/vlibras-wiki.conf /etc/apache2/sites-enabled/vlibras-wiki.conf

env:
	@ ( \
	    virtualenv ./env/; \
	    . ./env/bin/activate; \
	    pip install -U pip; \
	    pip install -U uwsgi; \
	    pip install -U ndg-httpsclient; \
	    pip install -r requirements.txt; \
	)

build: env
	-@ sudo service postgresql restart > /dev/null
	-@ $(MAKE) -s drop-db > /dev/null
	-@ $(MAKE) -s create-db > /dev/null
	-@ $(MAKE) -s reload-db
	@ $(MAKE) -s start-up
	@ echo "\33[32;1mYou must create an account to administer the site then copy your API key\\33[0m"
	@ $(MAKE) -s api-key
	-@ sudo service postgresql stop && sleep 2m

reload-db:
	@( \
	    . ./env/bin/activate; \
	    python cli.py db_create; \
	)

start-up:

	@ while ! sudo service supervisor restart; do echo "fail, retrying ..."; done
	@ sudo supervisorctl restart rq-scheduler
	@ sudo supervisorctl restart rq-worker
	@ sudo supervisorctl restart pybossa
	@ sudo service apache2 restart
	@ sudo service apache2 reload

api-key:
	@( \
	    echo -n "\33[34;1mInput your API key from pybossa account: \33[0m"; \
	    unset APIKEY; \
	    read APIKEY; \
	    sed -i "/^export PYBOSSA_API_KEY=/d" ~/.bashrc ; \
	    sed -i "\$$aexport PYBOSSA_API_KEY=\"$$APIKEY\"" ~/.bashrc; \
	    echo "\33[33;1mtype: \33[32;1mexport PYBOSSA_API_KEY=\"$$APIKEY\"\\33[0m"; \
	    echo "\33[33;1mtype: \33[32;1msource ~/.bashrc\\33[0m"; \
	    echo "\33[33;1mor open a new terminal\\33[0m"; \
	)

clean:
	@ find . -regextype posix-awk -regex "(.*.log|.*.pyc)" -type f -print -delete

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; \
	 )

uninstall-dep:
	@ sudo apt-get -y purge --auto-remove apache2 apache2-bin apache2-data apache2-utils supervisor redis-server && sudo apt-get -y autoremove
	@ sudo rm -rf "/etc/apache2" "/var/log/apache2" "/var/log/redis" "/var/log/supervisor"

install-dep:
	@ 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}\";

create-db:
	@ sudo su postgres -c "${PYBOSSA_DB_CREATE}"

drop-db:
	@ sudo su postgres -c "${PYBOSSA_DB_DROP}"