#/bin/bash if [ "$1" == "devel" ]; then INSTALL_DEVEL=1 else INSTALL_DEVEL=0 fi if [ "$2" == "local" ]; then INSTALL_LOCALLY=1 else INSTALL_LOCALLY=0 fi # dir with meta informatou about installation INSTALL_METADATA_DIRECTORY=".install" # if possible, do not change these paths - otherwise update could broke down WEBSITE_DOMAIN_FILE=$INSTALL_METADATA_DIRECTORY"/.website_domain" WEBSITE_PARENT_FILE=$INSTALL_METADATA_DIRECTORY"/.website_parent" DB_INITIALIZED_FILE=$INSTALL_METADATA_DIRECTORY"/.db_initialized" THEME_SET_FILE=$INSTALL_METADATA_DIRECTORY"/.theme_set" ADMIN_CREATED_FILE=$INSTALL_METADATA_DIRECTORY"/.admin_created" USER_INSTALLED_FILE=$INSTALL_METADATA_DIRECTORY"/.user" INSTALL_DIR_EXISTS=0 while [ "$INSTALL_DIR" == "" ]; do echo "" echo "Install directory: " read INSTALL_DIR if [ -d $INSTALL_DIR ]; then echo "Directory $INSTALL_DIR already exists." cd $INSTALL_DIR if [ -d ".git" ]; then # try to continue in installation when directory exists git remote -v |grep "minicms.git" > /dev/null if [ $? -eq 0 ]; then echo " ... continuing in installation" INSTALL_DIR_EXISTS=1 else echo " ... this directory does not contain installation of CMS! Use different directory." INSTALL_DIR="" fi fi cd - > /dev/null fi echo "" done # create installation directory for this instance of cms if [ $INSTALL_DIR_EXISTS -eq 0 ]; then mkdir -p $INSTALL_DIR fi cd $INSTALL_DIR # setup website info if [ ! -e $WEBSITE_DOMAIN_FILE ]; then echo "" echo "Website domain: " read WEBSITE_DOMAIN echo "" else WEBSITE_DOMAIN=`cat $WEBSITE_DOMAIN_FILE` fi if [ ! -e $WEBSITE_PARENT_FILE ]; then echo "" echo "Website parent (branch in minicms.git repository): " read WEBSITE_PARENT echo "" else WEBSITE_PARENT=`cat $WEBSITE_PARENT_FILE` fi # fetch data from server if [ ! -n "$(ls -A)" ]; then if [ $INSTALL_LOCALLY -eq 0 ]; then git clone git@binarity.cz:/opt/git/internal/cms/minicms.git -b $WEBSITE_PARENT . else git clone /opt/git/internal/cms/minicms.git -b $WEBSITE_PARENT . fi if [ ! $? -eq 0 ]; then echo "" echo " -------------------------------------------" echo "ERROR: cannot clone repository. Aborting" echo "" exit 2 fi # ignore file permission changes git config core.fileMode false else git branch |grep $WEBSITE_DOMAIN > /dev/null if [ $? -eq 0 ]; then echo "CMS already installed!" exit 1 fi fi if [ ! -e $INSTALL_METADATA_DIRECTORY ]; then mkdir $INSTALL_METADATA_DIRECTORY fi # save variables echo $WEBSITE_DOMAIN > $WEBSITE_DOMAIN_FILE echo $WEBSITE_PARENT > $WEBSITE_PARENT_FILE # setup permissions chmod 0777 bootstrap/cache -R chmod 0777 storage -R chmod 0777 resources/views/visitor/$TEMPLATE_NAME -R chmod 0777 modules/* chmod 0777 public/uploads -R # copy settings if neccesarry if [ ! -e .env ]; then cp .env.example .env # edit config vim .env fi # create autoload files - no matter what composer dump-autoload # install dependencies - no matter what if [ $INSTALL_DEVEL -eq 0 ]; then composer install --no-dev else composer install fi # init database structure if [ ! -e $DB_INITIALIZED_FILE ]; then # init, migrate and seed database php artisan db:init ./database/schema.sql && php artisan migrate && php artisan db:seed && touch $DB_INITIALIZED_FILE if [ ! $? -eq 0 ]; then echo "" echo " ---------------------------------------------- " echo "ERROR: Database was not initialized. Try to fix this error and then rerun installation." echo "" exit 3 fi fi # generate random key for ciphering php artisan key:generate if [ ! -e $THEME_SET_FILE ]; then echo " --------------------------" echo " * Theme setup * " echo "" while [ "$THEME_NAME" == "" ]; do echo "Template name (use any of following): " for i in $(ls -d resources/views/visitor/*/); do basename `echo ${i%%/}`; done read THEME_NAME if [ ! -d resources/views/visitor/$THEME_NAME ]; then echo "Theme $THEME_NAME is not valid. Try again" THEME_NAME="" fi done # setup theme php artisan theme:set $THEME_NAME # set write perms on published views for MODULE in `ls resources/views/modules`; do chmod 0777 resources/views/modules/$MODULE/visitor/$THEME_NAME -R done echo $THEME_NAME > $THEME_SET_FILE fi if [ ! -e $ADMIN_CREATED_FILE ]; then echo "" echo " ------------------------------ " echo " * CREATE ADMIN USER *" echo "" echo "New user email: " read EMAIL echo "" echo "Password: " read PASSWORD echo "" # install new user php artisan user:new $EMAIL $PASSWORD admin echo $EMAIL > $ADMIN_CREATED_FILE fi echo "" echo " -----------------------------------" echo " * GIT BRANCH *" echo "" echo "Create new Git branch? (n for no)" read NEW_GIT_BRANCH # create new branch in git if [ "$NEW_GIT_BRANCH" != "n" ]; then git checkout -b $WEBSITE_DOMAIN git push origin $WEBSITE_DOMAIN fi # save info about user, who installed this source copy echo $USER > $USER_INSTALLED_FILE echo "" echo "" echo "" echo "" echo "" echo " INSTALLATION SUCCESSFULL." echo "" echo "Do not forget to install desired modules!" echo " Use php artisan install-module or php artisan install-all-modules"