2016-10-25 13:29:10 +00:00
#!/bin/bash
2016-10-25 13:51:46 +00:00
#
# packager.io postinstall script
#
2016-10-25 15:59:31 +00:00
PATH = /opt/zammad/bin:/opt/zammad/vendor/bundle/bin:/sbin:/bin:/usr/sbin:/usr/bin:
2016-10-25 16:07:10 +00:00
ZAMMAD_DIR = "/opt/zammad"
2016-10-25 15:59:31 +00:00
DB = "zammad_production"
DB_USER = "zammad"
2016-11-02 17:18:29 +00:00
MY_CNF = "/etc/mysql/debian.cnf"
2016-10-25 15:59:31 +00:00
2016-10-27 10:15:51 +00:00
# check which init system is used
2016-10-31 12:00:59 +00:00
if [ -n " $( which initctl) " ] ; then
2016-10-27 11:50:18 +00:00
INIT_CMD = "initctl"
2016-10-31 12:00:59 +00:00
elif [ -n " $( which systemctl) " ] ; then
2016-10-27 11:50:18 +00:00
INIT_CMD = "systemctl"
2016-10-27 10:15:51 +00:00
else
function sysvinit ( ) {
service $2 $1
}
INIT_CMD = "sysvinit"
fi
2016-10-26 14:28:59 +00:00
echo "# (Re)creating init scripts"
2016-10-26 11:45:14 +00:00
zammad scale web = 1 websocket = 1 worker = 1
2016-10-26 14:28:59 +00:00
echo "# Stopping Zammad"
2016-10-27 10:15:51 +00:00
${ INIT_CMD } stop zammad
2016-10-25 15:59:31 +00:00
2016-10-27 10:15:51 +00:00
# check if database.yml exists
if [ -f ${ ZAMMAD_DIR } /config/database.yml ] ; then
2016-10-26 11:45:14 +00:00
# db migration
2016-11-02 17:18:29 +00:00
echo "# database.yml found. Updating db..."
2016-10-26 11:45:14 +00:00
zammad run rake db:migrate
else
2016-11-02 17:18:29 +00:00
echo "# database.yml not found. Creating db..."
2016-10-26 14:28:59 +00:00
# create new password
2016-10-25 15:59:31 +00:00
DB_PASS = " $( tr -dc A-Za-z0-9 < /dev/urandom | head -c10) "
2016-11-02 17:18:29 +00:00
# postgresql
if [ -n " $( which psql) " ] ; then
echo "installing zammad on postgresql"
2016-10-31 14:46:37 +00:00
2016-11-02 17:18:29 +00:00
# centos
if [ -n " $( which postgresql-setup) " ] ; then
echo "preparing postgresql server"
postgresql-setup initdb
2016-10-31 14:46:37 +00:00
2016-11-02 17:18:29 +00:00
echo "backuping postgres config"
test -f /var/lib/pgsql/data/pg_hba.conf.bak || cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.bak
2016-10-31 14:46:37 +00:00
2016-11-02 17:18:29 +00:00
echo "allow login via username and password in postgresql"
sed 's/ident/trust/g' < /var/lib/pgsql/data/pg_hba.conf.bak > /var/lib/pgsql/data/pg_hba.conf
echo "restarting postgresql server"
${ INIT_CMD } restart postgresql
echo "create postgresql bootstart"
${ INIT_CMD } enable postgresql.service
fi
echo "creating zammad postgresql db"
su - postgres -c " createdb -E UTF8 ${ DB } "
echo "creating zammad postgresql user"
echo " CREATE USER \" ${ DB_USER } \" WITH PASSWORD ' ${ DB_PASS } '; " | su - postgres -c psql
echo "grant privileges to new postgresql user"
echo " GRANT ALL PRIVILEGES ON DATABASE \" ${ DB } \" TO \" ${ DB_USER } \"; " | su - postgres -c psql
echo "updating database.yml"
sed -e "s/.*adapter:.*/ adapter: postgresql/" \
-e " s/.*username:.*/ username: ${ DB_USER } / " \
-e " s/.*password:.*/ password: ${ DB_PASS } / " \
-e " s/.*database:.*/ database: ${ DB } / " < ${ ZAMMAD_DIR } /config/database.yml.dist > ${ ZAMMAD_DIR } /config/database.yml
# mysql / mariadb
elif [ -n " $( which mysql) " ] ; then
echo "installing zammd on mysql"
2016-10-31 12:00:59 +00:00
2016-11-02 17:18:29 +00:00
if [ -f " ${ MY_CNF } " ] ; then
MYSQL_CREDENTIALS = " --defaults-file= ${ MY_CNF } "
else
echo -n "Please enter your MySQL root password:"
read -s MYSQL_ROOT_PASS
MYSQL_CREDENTIALS = " -u root -p ${ MYSQL_ROOT_PASS } "
fi
2016-10-25 15:59:31 +00:00
2016-11-02 17:18:29 +00:00
echo "creating zammad mysql db"
mysql ${ MYSQL_CREDENTIALS } -e " CREATE DATABASE ${ DB } DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; "
2016-10-25 15:59:31 +00:00
2016-11-02 17:18:29 +00:00
echo "creating zammad mysql user"
mysql ${ MYSQL_CREDENTIALS } -e " CREATE USER \" ${ DB_USER } \"@\" ${ DB_HOST } \" IDENTIFIED BY \" ${ DB_PASS } \"; "
2016-10-25 15:59:31 +00:00
2016-11-02 17:18:29 +00:00
echo "grant privileges to new mysql user"
mysql ${ MYSQL_CREDENTIALS } -e " GRANT ALL PRIVILEGES ON ${ DB } .* TO \" ${ DB_USER } \"@\" ${ DB_HOST } \"; FLUSH PRIVILEGES; "
echo "updating database.yml"
sed -e "s/.*adapter:.*/ adapter: mysql2/" \
-e " s/.*username:.*/ username: ${ DB_USER } / " \
-e " s/.*password:.*/ password: ${ DB_PASS } / " \
-e " s/.*database:.*/ database: ${ DB } / " < ${ ZAMMAD_DIR } /config/database.yml.dist > ${ ZAMMAD_DIR } /config/database.yml
# sqlite / no local db
elif [ -n " $( which sqlite) " ] ; then
echo "installing zammad on sqlite"
echo "in fact this does nothing at the moment. use this to install zammad without a local database. sqlite should only be used in dev environment anyway."
fi
2016-10-26 14:28:59 +00:00
2016-10-25 15:59:31 +00:00
# fill database
2016-11-02 17:18:29 +00:00
zammad run rake db:migrate
2016-10-25 15:59:31 +00:00
zammad run rake db:seed
2016-11-02 17:18:29 +00:00
2016-10-25 15:59:31 +00:00
fi
2016-10-25 13:29:10 +00:00
2016-10-26 14:28:59 +00:00
echo "# Starting Zammad"
2016-10-27 10:15:51 +00:00
${ INIT_CMD } start zammad
2016-10-25 16:07:10 +00:00
2016-11-02 17:18:29 +00:00
# copy nginx config
2016-10-31 12:00:59 +00:00
if [ -n " $( which nginx) " ] ; then
2016-10-28 07:44:11 +00:00
# debian / ubuntu
if [ -d /etc/nginx/sites-enabled ] ; then
NGINX_CONF = "/etc/nginx/sites-enabled/zammad.conf"
test -f /etc/nginx/sites-available/zammad.conf || cp ${ ZAMMAD_DIR } /contrib/nginx/zammad.conf /etc/nginx/sites-available/zammad.conf
2016-10-28 08:05:36 +00:00
test -h ${ NGINX_CONF } || ln -s /etc/nginx/sites-available/zammad.conf ${ NGINX_CONF }
2016-11-02 17:18:29 +00:00
2016-10-28 07:44:11 +00:00
# centos / sles
elif [ -d /etc/nginx/conf.d ] ; then
NGINX_CONF = "/etc/nginx/conf.d/zammad.conf"
2016-10-28 08:05:36 +00:00
test -f ${ NGINX_CONF } || cp ${ ZAMMAD_DIR } /contrib/nginx/zammad.conf ${ NGINX_CONF }
2016-10-26 09:04:36 +00:00
fi
2016-10-26 14:28:59 +00:00
echo "# Restarting Nginx"
2016-10-27 10:15:51 +00:00
${ INIT_CMD } restart nginx
2016-11-04 10:13:11 +00:00
echo -e " \nAdd your FQDN to servername directive in ${ NGINX_CONF } and restart nginx if you're not testing localy "
echo -e "or open http://localhost in your browser to start using Zammad.\n"
else
echo -e "\nOpen http://localhost:3000 in your browser to start using Zammad.\n"
2016-10-25 16:07:10 +00:00
fi
2016-11-02 17:18:29 +00:00