# /bin/bash # Deply script for Nette application # # minified nette version expected in ./Nette-minified/nette.min.php # # setup server='195.210.29.9' user='k-architekt.cz' remote_dir='/web' key_path='/home/mario/.ssh/websupport_key' rsync_exclude=('/www/images/uploads/*') # index.php excluded from project files sync and send last because of maintenance mode common_exclude=('*.ssh' '/temp/*' '/log/*' '/nbproject' '/.git' 'deploy.sh' '*~'\ '.gitignore' 'composer.json' '/www/index.php' \ 'config.local.neon' 'config.production.neon') # check options delete_logs=0 while getopts ":d" opt; do case $opt in d) delete_logs=1 ;; \?) echo 'Invalid option!' echo '-d to delete remote logs and exceptions' echo 'exiting with no action' exit 1 ;; esac done current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd $current_dir # set maintenance mode echo '* setting maintenance mode on remote app' scp -q -i $key_path $user@$server:$remote_dir/www/index.php temp/ # set maintance mode if app is on remote if [ -f temp/index.php ] then sed -i "s/\/\/\s*require '.maintenance.php';/require '.maintenance.php';/" \ temp/index.php rsync -az \ temp/index.php $user@$server:$remote_dir/www/ rm temp/index.php fi # create exclude text file for i in "${rsync_exclude[@]}" do echo $i >> exclude.txt done for i in "${common_exclude[@]}" do echo $i >> exclude.txt done echo "* Starting rsync to $server:$remote_dir" echo " * sendig project files" rsync -az \ --delete \ --filter "P log/*.log" --filter "P log/*.html" \ --include ".htaccess" --exclude-from exclude.txt \ . $user@$server:$remote_dir/ rm exclude.txt echo ' * sending production config' cp app/config/config.production.neon temp/config.local.neon rsync -az \ temp/config.local.neon $user@$server:$remote_dir/app/config/ rm temp/config.local.neon echo ' * sending index.php' rsync -az \ www/index.php $user@$server:$remote_dir/www/ echo '* rsync completed, maitenance mode off.' if [ $delete_logs -eq 1 ] then echo '* removing logs and stored exceptions' sftp -q -i $key_path $user@$server >/dev/null 2>&1 << SFTPDELIM cd $remote_dir rm log/*.log rm log/*.html bye SFTPDELIM fi echo '*** Deploy completed! Yeeeeah! ***' exit 0