Skip to content

Instantly share code, notes, and snippets.

@choyer
Forked from ryanirelan/Upgrade ExpressionEngine
Last active May 15, 2017 12:44
Show Gist options
  • Save choyer/1108591 to your computer and use it in GitHub Desktop.
Save choyer/1108591 to your computer and use it in GitHub Desktop.
ExpressionEngine 2.x Upgrade Script
# Run this at your site root to upgrade EE 2.x
# http://expressionengine.com/user_guide/installation/update.html
# Inspired by https://gist.github.com/51633
# WORK IN PROGRESS! USE WITH CAUTION!
#!/bin/bash
CHECK_FILE=index.php
echo "\033[44m[====> ExpressionEngine 2.x Upgrade Script by Carl Hoyer <====]\033[0;37m"
echo
if [ -f $CHECK_FILE ];
then
echo "\033[32m$CHECK_FILE exists!\033[0;37m Assuming script run from web root."
echo
WWW_PATH=.
else
echo "Enter the FULL path to the WWW ROOT (HTDOCS) folder: \c"
read WWW_PATH
fi
# location of the release
echo "Enter the FULL path to the decompressed ExpressionEngine NEW RELEASE folder: \c"
read RELEASE_PATH
echo "Enter the FULL path of your ExpressionEngine SYSTEM folder: \c"
read SYS_PATH
echo "Enter the NAME of the ExpressionEngine ADMIN FILE (typically: admin.php): \c"
read ADMIN_FILE
echo "Enter the FULL path of your ExpressionEngine THEME folder: \c"
read THEME_PATH
# take site offline
echo "Take site offline ... \c"
cp "$SYS_PATH"/expressionengine/utilities/offline.html ./index.html
echo "\033[32mdone.\033[0;37m"
# backup files
echo "Backing up files (safety measure) ..."
cp "$WWW_PATH"/index.php "$WWW_PATH"/index.php.bak
echo " 1) index.php ... \033[32mdone.\033[0;37m"
cp "$ADMIN_FILE" ./"$ADMIN_FILE".bak
echo " 2) $ADMIN_FILE ... \033[32mdone.\033[0;37m"
# backup database
read -p "Backup Database? (y/n) " DB_RESP
if [ "$DB_RESP" = "y" ]; then
echo "Backing up database ... \c"
mysqldump -u $DATABASE_USER -h localhost -p $DATABASE_NAME | gzip -9 > $DATABASE_NAME_backup_db.sql.gz
echo "\033[32mdone.\033[0;37m"
else
echo "\033[91m!!! Database backup SKIPPED !!!\033[0;37m"
fi
echo
# update files
echo "\033[93mBeginning ExpressionEngine file updates ... \033[0;37m"
echo " 1) System folder: backup beginning ... \c"
cp -R "$RELEASE_PATH"/system "$SYS_PATH"_new
mv "$SYS_PATH" "$SYS_PATH"_old
mv "$SYS_PATH"_new "$SYS_PATH"
echo "\033[32mdone.\033[0;37m"
echo " 2) Themes folder: backup beginning ... \c"
cp -R "$RELEASE_PATH"/themes ./themes_new
mv "$THEME_PATH" "$THEME_PATH"_old
mv "$THEME_PATH"_new "$THEME_PATH"
echo "\033[32mdone.\033[0;37m"
echo " 3) Root index.php: backup beginning ... \c"
cp "$WWW_PATH"/index.php "$WWW_PATH"/index_old.php
cp -f "$RELEASE_PATH"/index.php "$WWW_PATH"/index.php
echo "\033[32mdone.\033[0;37m"
echo " 4) Admin access: backup beginning ... \c"
cp "$WWW_PATH"/"$ADMIN_FILE" "$WWW_PATH"/"$ADMIN_FILE"_old.php
cp -f "$RELEASE_PATH"/admin.php "$WWW_PATH"/"$ADMIN_FILE"
echo "\033[32mdone.\033[0;37m"
# Restore 3rd Party folders (system & themes)
read -p " 5) Restore previous 3rd-party add-on folders [system & themes]? (y/n) " THIRDPARTY_RESP
if [ "$THIRDPARTY_RESP" = "y" ]; then
echo " --> Restoring SYSTEM third_party folder ... \c"
cp -rf "$SYS_PATH"_old/expressionengine/third_party/* "$SYS_PATH"/expressionengine/third_party
echo "\033[32mdone.\033[0;37m"
echo " --> Restoring THEMES third_party folder ... \c"
cp -rf "$THEME_PATH"_old/third_party/* "$THEME_PATH"/third_party
echo "\033[32mdone.\033[0;37m"
else
echo "\033[91m!!! Database backup SKIPPED !!!\033[0;37m"
fi
echo
echo "Restoring config & database settings ...\c"
cp -f "$SYS_PATH"_old/expressionengine/config/config.php "$SYS_PATH"/expressionengine/config/config.php
cp -f "$SYS_PATH"_old/expressionengine/config/database.php "$SYS_PATH"/expressionengine/config/database.php
echo "\033[32mdone.\033[0;37m"
echo
#Set recommended file permissions
echo "Setting file permissions ... \c"
chmod 666 "$SYS_PATH"/expressionengine/config/config.php
chmod 666 "$SYS_PATH"/expressionengine/config/database.php
chmod 777 "$SYS_PATH"/expressionengine/cache/
echo "\033[32mdone.\033[0;37m"
echo
echo "\033[32mUpgrade finished!\033[0;37m"
echo "\033[96mPlease perform the following post update steps:"
echo "\033[96m 1. Restore any modifications (eg. system folder path) to index.php & admin.php."
echo "\033[96m 2. Go to http://yoursite.com/$ADMIN_FILE and run the update wizard."
echo "\033[96m 3. Remove the $SYS_PATH/installer/ folder."
echo "\033[96m 4. Remove the index.html maintenance notice file."
echo "\033[96m 5. Remove OLD & BAK files and directories once full testing is completed successfully."
echo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment