From 592e961e70963e7d42a1974271a6f1dc67c12ef0 Mon Sep 17 00:00:00 2001 From: rkaldung Date: Wed, 13 Aug 2014 16:18:15 +0200 Subject: [PATCH] most work done on the install script --- script/install.sh | 92 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 80 insertions(+), 12 deletions(-) diff --git a/script/install.sh b/script/install.sh index aee26438a..0db349dcb 100644 --- a/script/install.sh +++ b/script/install.sh @@ -1,15 +1,83 @@ #!/bin/bash -get_distro(){ - arch=$(uname -m) - kernel=$(uname -r) - if [ -f /etc/lsb-release ]; then - os=$(lsb_release -s -d) - elif [ -f /etc/debian_version ]; then - os="Debian $(cat /etc/debian_version)" - elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` - else - os="$(uname -s) $(uname -r)" - fi + +USER=zammad +REPOURL=git@github.com:martini/zammad.git +DBNAME=zammad +DBUSER=zammad + +function check_requirements() { + items="git useradd sudo getent curl bash gcc make svn apg" + for item in $items + do + which $item > /dev/null + if [ $? -ne 0 ]; then + echo Please install $item and start this script again. + exit 1 + fi + done } +check_requirements + +# +# @TODO Should the mysql user be created? +# @TODO Install Elasticsearch? +# @TODO Should the script create a VirtualHost or a config file to include for apache/nginx? +# + +# +# Check for zammad user and create if needed +# +id -u "${USER}" > /dev/null 2>&1 +if [ $? -ne 0 ]; then + useradd -c 'user running zammad' -m -s /bin/bash $USER +fi + +# +# find the user's homedir and primary group name +# +HOMEDIR=$(getent passwd $USER | cut -d: -f 6) +GROUP=$(id -gn $USER) + +cd "${HOMEDIR}" +sudo -u "${USER}" -H git clone $REPOURL zammad +cd zammad +LATEST=$(git tag --list|sort|tail -1) +git checkout tags/"${LATEST}" +chown -R "${USER}":"${GROUP}" . + +# +# RVM +# +sudo -u "${USER}" -H bash -c 'curl -sSL https://get.rvm.io | bash -s stable' + + +# +# install Ruby +# +sudo -u "${USER}" -H bash -l -c 'rvm install 2.1.2' +sudo -u "${USER}" -H bash -l -c 'rvm alias create default 2.1.2' + +# +# after rvm requirements +# Installing required packages: gawk, g++, libreadline6-dev, zlib1g-dev, libssl-dev, libyaml-dev, libsqlite3-dev, sqlite3, autoconf, libgdbm-dev, libncurses5-dev, automake, libtool, bison, pkg-config, libffi-dev................ + + +sudo -u "${USER}" -H bash -l -c 'cd ~/zammad && gem install rails --no-ri --no-rdoc' +sudo -u "${USER}" -H bash -l -c 'cd ~/zammad && bundle install' + +DBPASS=$(apg -x8|head -1) +echo Password $DBPASS +mysql -e "GRANT ALL ON ${DBNAME}.* to '${DBUSER}'@'localhost' IDENTIFIED BY '$DBPASS'"; +sudo -u $USER -H cp ${HOMEDIR}/zammad/config/database.yml.dist ${HOMEDIR}/zammad/config/database.yml +sudo -u $USER -H sed -i s/some_pass/${DBPASS}/g ${HOMEDIR}/zammad/config/database.yml +sudo -u $USER -H sed -i s/some_user/${DBUSER}/g ${HOMEDIR}/zammad/config/database.yml +sudo -u $USER -H sed -i s/zammad_prod/zammad/g ${HOMEDIR}/zammad/config/database.yml + +# +# +# +sudo -u "${USER}" -H bash -l -c 'cd ~/zammad && RAILS_ENV=production rake db:create' +sudo -u "${USER}" -H bash -l -c 'cd ~/zammad && RAILS_ENV=production rake db:migrate' +sudo -u "${USER}" -H bash -l -c 'cd ~/zammad && RAILS_ENV=production rake db:seed' +sudo -u "${USER}" -H bash -l -c 'cd ~/zammad && RAILS_ENV=production rake assets:precompile'