123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #!/usr/bin/env bash
-
- # TODO: generate cookie secrent (if not yet done)
- # TODO: run uwsgi as other user
- # TODO: Gestion des migrations
- # TODO: Verbosite des logs ?
-
- #
- # ENVIRONMENT VARIABLES ARE:
- #
- # * DATABASE_TYPE (values: postgresql, mysql, sqlite)
- # * DATABASE_USER
- # * DATABASE_PASSWORD
- # * DATABASE_HOST
- # * DATABASE_PORT
- # * DATABASE_NAME
- # * PULL
- #
-
- # Default values
- # TODO: Voir avec Damien si c'est le comportement souhaité
- PULL=${PULL:=1}
-
- # Check environment variables
- /tracim/check_env_vars.sh
-
- # If PULL is set, change repository HEAD
- if [ "$PULL" = 1 ]; then
- echo "Upgrade Tracim code"
- cd /tracim && git pull origin master
- fi
-
- # Create config.ini file if no exist
- if [ ! -f /etc/tracim/config.ini ]; then
- cp /tracim/tracim/development.ini.base /etc/tracim/config.ini
- fi
- ln -s /etc/tracim/config.ini /tracim/tracim/config.ini
-
- # Create wsgidav.conf file if no exist
- if [ ! -f /etc/tracim/wsgidav.conf ]; then
- cp /tracim/tracim/wsgidav.conf.sample /etc/tracim/wsgidav.conf
- fi
- ln -s /etc/tracim/wsgidav.conf /tracim/tracim/wsgidav.conf
-
- # Create uwsgi file if no exist
- if [ ! -f /etc/tracim/uwsgi.ini ]; then
- cp /tracim/tracim/uwsgi.ini.template /etc/tracim/uwsgi.ini
- fi
-
- # MySQL case
- if [ "$DATABASE_TYPE" = mysql ] ; then
- # Ensure DATABASE_PORT is set
- if ! [ -n "$DATABASE_PORT" ]; then
- DATABASE_PORT=3306
- fi
- # engine is mysql+oursql
- DATABASE_TYPE=mysql+oursql
-
- # Check if database must be init
- TEST_TABLE=$(mysql --host="$DATABASE_HOST" --user="$DATABASE_USER" --password="$DATABASE_USER" --database="$DATABASE_NAME" -s -N --execute="SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '$DATABASE_NAME' AND table_name = 'content';")
- if [ ${TEST_TABLE} = 0 ] ; then
- INIT_DATABASE=true
- fi
- fi
-
- # PostgreSQL case
- if [ "$DATABASE_TYPE" = postgresql ] ; then
- # Ensure DATABASE_PORT is set
- if ! [ -n "$DATABASE_PORT" ]; then
- DATABASE_PORT=5432
- fi
- DATABASE_SUFFIX="?client_encoding=utf8"
-
- # Check if database must be init
- TEST_TABLE=$(PGPASSWORD="$DATABASE_PASSWORD" psql -U ${DATABASE_USER} -h ${TEST_TABLE} -d ${DATABASE_NAME} -t -c "SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'content' );")
- if [ ${TEST_TABLE} = f ] ; then
- INIT_DATABASE=true
- fi
- fi
-
- # SQLite case
- if [ "$DATABASE_TYPE" = sqlite ] ; then
- if [ ! -f /var/tracim/tracim.db ]; then
- INIT_DATABASE=true
- fi
- fi
-
- # Update radicale file system folder config
- sed -i "s/\(# radicale.server.filesystem.folder *= *\).*/radicale.server.filesystem.folder = \/var\/tracim\/radicale/" /etc/tracim/config.ini
-
- # Update sqlalchemy.url config
- if ! [ "$DATABASE_TYPE" = sqlite ] ; then
- sed -i "s/\(sqlalchemy.url *= *\).*/\\sqlalchemy.url = $DATABASE_TYPE:\/\/$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOST:$DATABASE_PORT\/$DATABASE_NAME$DATABASE_SUFFIX/" /etc/tracim/config.ini
- else
- sed -i "s/\(sqlalchemy.url *= *\).*/\\sqlalchemy.url = sqlite:\/\/\/\/var\/tracim\/tracim.db/" /etc/tracim/config.ini
- fi
-
- # Initialize database if needed
- if [ "$INIT_DATABASE" = true ] ; then
- cd /tracim/tracim/ && gearbox setup-app -c config.ini
- fi
-
- # Upgrade database
- if [ "$PULL" = 1 ]; then
- echo "Upgrade Tracim database id required"
- cd /tracim/tracim/ && gearbox migrate upgrade
- fi
-
- # Start with uwsgi
- uwsgi --http-socket 0.0.0.0:80 /etc/tracim/uwsgi.ini
|