diff --git a/.gitignore b/.gitignore index 0eb1af1..27942bf 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ *.db *.noseids *.pem +*.save *.sql *.swl *.swm @@ -25,6 +26,7 @@ alembic.ini pybossa.conf pybossa.wsgi settings_local.py +rq-scheduler.conf rq-worker.conf test/test_cache.py contrib/nginx/pybossa @@ -40,5 +42,6 @@ vagrant_env/ .ropeproject/ .vagrant/ doc/_build +pybossa/translations pybossa/themes/crowdcrafting-theme/ pybossa/themes/pybossa-default-theme/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8cc0829 --- /dev/null +++ b/Makefile @@ -0,0 +1,145 @@ +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 LOCALHOST + ifndef NETWORK_INTERFACE + NETWORK_INTERFACE := $(shell ip route | 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 + +ifndef LOCALHOST + LOCALHOST := localhost +endif + +install: uninstall install-dep config + @( \ + virtualenv ./env/; \ + . ./env/bin/activate; \ + pip install -U pip; \ + pip install -U uwsgi; \ + pip install -U ndg-httpsclient; \ + pip install -r requirements.txt; \ + ) + +config: + @ rm -f ./pybossa/translations + @ ln -sf ./pybossa/themes/default/translations/ ./pybossa/translations + @ cp alembic.ini.template alembic.ini + @ sudo service postgresql restart > /dev/null + -@ $(MAKE) -s drop-db > /dev/null + @ $(MAKE) -s create-db + @ $(info Using interface: ${NETWORK_INTERFACE}) + @ $(info Using local IP: ${LOCALHOST}) + @ cp settings_local.py.tmpl settings_local.py + @ cp ./contrib/${PROJECT_NAME}.wsgi.tmpl ./contrib/${PROJECT_NAME}.wsgi + @ $(call SED_REPLACE_ALL_PATH,,${PROJECT_DIR},./contrib/${PROJECT_NAME}.wsgi) + @ cp ./contrib/apache/${PROJECT_NAME}.conf.tmpl ./contrib/apache/${PROJECT_NAME}.conf + @ $(call SED_REPLACE_ALL,ServerName localhost,ServerName ${LOCALHOST},./contrib/apache/${PROJECT_NAME}.conf) + @ $(call SED_REPLACE_ALL,user1,$$USER,./contrib/apache/${PROJECT_NAME}.conf) + @ $(call SED_REPLACE_ALL,group1,$$USER,./contrib/apache/${PROJECT_NAME}.conf) + @ $(call SED_REPLACE_ALL_PATH,,${PROJECT_DIR},./contrib/apache/${PROJECT_NAME}.conf) + @ sudo install -m 755 -p ./contrib/apache/${PROJECT_NAME}.conf /etc/apache2/sites-available/${PROJECT_NAME}.conf + @ sudo a2ensite ${PROJECT_NAME}.conf + @ sudo rm -f /etc/apache2/sites-available/vlibras-wiki.conf /etc/apache2/sites-enabled/vlibras-wiki.conf + @ sudo service redis-server stop + @ sudo update-rc.d -f redis-server remove + -@ sudo killall redis-server + @ cp ./contrib/pybossa.ini.template ./contrib/pybossa.ini + @ $(call SED_REPLACE_ALL_PATH,/home/pybossa/pybossa,${PROJECT_DIR},./contrib/pybossa.ini) + @ cp ./contrib/supervisor/rq-scheduler.conf.template ./contrib/supervisor/rq-scheduler.conf + @ $(call SED_REPLACE_ALL_PATH,/home/pybossa/pybossa,${PROJECT_DIR},./contrib/supervisor/rq-scheduler.conf) + @ $(call SED_REPLACE_ALL,user=pybossa,user=$$USER,./contrib/supervisor/rq-scheduler.conf) + @ cp ./contrib/supervisor/rq-worker.conf.template ./contrib/supervisor/rq-worker.conf + @ $(call SED_REPLACE_ALL_PATH,/home/pybossa/pybossa,${PROJECT_DIR},./contrib/supervisor/rq-worker.conf) + @ $(call SED_REPLACE_ALL,user=pybossa,user=$$USER,./contrib/supervisor/rq-worker.conf) + @ cp ./contrib/supervisor/pybossa.conf.template ./contrib/supervisor/pybossa.conf + @ $(call SED_REPLACE_ALL_PATH,/home/pybossa/pybossa,${PROJECT_DIR},./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 cp ./contrib/supervisor/pybossa.conf /etc/supervisor/conf.d/pybossa.conf + @ sudo cp ./contrib/supervisor/redis-sentinel.conf /etc/supervisor/conf.d/redis-sentinel.conf + @ sudo cp ./contrib/supervisor/redis-server.conf /etc/supervisor/conf.d/redis-server.conf + @ sudo cp ./contrib/supervisor/rq-scheduler.conf /etc/supervisor/conf.d/rq-scheduler.conf + @ sudo cp ./contrib/supervisor/rq-worker.conf /etc/supervisor/conf.d/rq-worker.conf + @ sudo cp ./contrib/redis-supervisor/redis.conf /etc/redis/redis.conf + @ sudo cp ./contrib/redis-supervisor/sentinel.conf /etc/redis/sentinel.conf + @ sudo chown redis:redis /etc/redis/redis.conf + @ sudo chown redis:redis /etc/redis/sentinel.conf + @ 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 + @ echo "\33[32;1mYou must create an account to administer the site then copy your API key\\33[0m" + @ $(MAKE) -s api-key + +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_PSQL = psql -c +PYBOSSA_DB_CREATE = ${PYBOSSA_DB_PSQL} \"CREATE USER pybossa WITH PASSWORD '${PYBOSSA_DB_PASSWORD}'\"; +PYBOSSA_DB_CREATE += ${PYBOSSA_DB_PSQL} \"CREATE DATABASE pybossa OWNER ${PYBOSSA_DB_USERNAME}\"; +PYBOSSA_DB_DROP = ${PYBOSSA_DB_PSQL} \"DROP DATABASE ${PYBOSSA_DB_USERNAME}\"; +PYBOSSA_DB_DROP += ${PYBOSSA_DB_PSQL} \"DROP USER ${PYBOSSA_DB_USERNAME}\"; + +create-db: + @ sudo su postgres -c "${PYBOSSA_DB_CREATE}" + @( \ + . ./env/bin/activate; \ + python cli.py db_create; \ + ) + +drop-db: + @ sudo su postgres -c "${PYBOSSA_DB_DROP}" diff --git a/contrib/apache/pybossa.conf.tmpl b/contrib/apache/pybossa.conf.tmpl index 5a68417..5c75b48 100644 --- a/contrib/apache/pybossa.conf.tmpl +++ b/contrib/apache/pybossa.conf.tmpl @@ -12,13 +12,6 @@ Require all granted - Alias /pybossa /view - /view> - Order deny,allow - Allow from all - Require all granted - - Header set Access-Control-Allow-Origin "*" ServerAdmin webmaster@localhost -- libgit2 0.21.2