Skip to content

Instantly share code, notes, and snippets.

@emayk
Created October 24, 2013 16:30
Show Gist options
  • Save emayk/7140426 to your computer and use it in GitHub Desktop.
Save emayk/7140426 to your computer and use it in GitHub Desktop.
deploy laravel application to production server
#!/bin/bash
# inspiration [url]http://blog.rjmetrics.com/simple-deploy-script-for-php-applications/[/url]
# unzipping files [url]http://kb.winzip.com/kb/entry/124/[/url]
# todo: does current exist? does releases exist?
APP_NAME=clouddueling
DEPLOY_SERVER=
DEPLOY_PATH=/var/www/html
DEPLOY_USER=
CURRENT_DIR=$DEPLOY_PATH/$APP_NAME/current
RELEASE_NAME=`date +"%Y-%m-%d-%H%M%S"`
CURRENT_RELEASE=$DEPLOY_PATH/$APP_NAME/releases/$RELEASE_NAME
echo "Emptying storage cache and views.\n"
rm -f storage/cache/*
rm -f storage/views/*
echo "Compressing code.\n"
tar -czf ../$RELEASE_NAME.tar.gz ./
echo "Creating release folder: $RELEASE_NAME.\n"
ssh -t $DEPLOY_USER@$DEPLOY_SERVER "cd $DEPLOY_PATH/$APP_NAME/releases &&
mkdir $RELEASE_NAME"
echo "Uploading code to server.\n"
scp -i ~/path/to/keys.pem ../$RELEASE_NAME.tar.gz $DEPLOY_USER@$DEPLOY_SERVER:$DEPLOY_PATH/$APP_NAME/releases/$RELEASE_NAME
echo "Extracting code into release folder.\n"
ssh -t $DEPLOY_USER@$DEPLOY_SERVER "cd $DEPLOY_PATH/$APP_NAME/releases/$RELEASE_NAME &&
gzip -d < $RELEASE_NAME.tar.gz | tar xf - &&
echo 'Updating storage permissions.' &&
sudo chmod -R 777 storage &&
echo 'Removing server compressed code.' &&
rm $RELEASE_NAME.tar.gz &&
echo 'Diverting traffic to new release.' &&
cd ../../ &&
ln -nsf releases/$RELEASE_NAME current"
echo "Removing local compressed code.\n"
rm ../$RELEASE_NAME.tar.gz
echo "Laravel deployment complete."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment