Last active
December 16, 2021 18:30
-
-
Save 50l3r/b5a80bc1bba689edd2e69bf3d8fb818c to your computer and use it in GitHub Desktop.
Clone Wordpress on a PLESK instance
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# VARS | |
ORIG_DOMAIN="example.com" | |
ORIG_FOLDER="/var/www/vhosts/example.com/httpdocs" | |
ORIG_DB_USER="" | |
ORIG_DB_PASS='' | |
ORIG_DB_NAME="" | |
DEST_DOMAIN="beta.example.com" | |
DEST_FOLDER="/var/www/vhosts/beta.example.com/httpdocs" | |
DEST_DB_USER="" | |
DEST_DB_PASS='' | |
DEST_DB_NAME="" | |
DEST_PERMS="" | |
# CLI COMMANDS | |
ORIG_MYSQL="/usr/bin/mysql --skip-column-names -u ${ORIG_DB_USER} --password=${ORIG_DB_PASS} -D ${ORIG_DB_NAME}" | |
DEST_MYSQL="/usr/bin/mysql --skip-column-names -u ${DEST_DB_USER} --password=${DEST_DB_PASS} -D ${DEST_DB_NAME}" | |
# REMOVE CURRENT CLONE DATABASE AND CREATE AGAIN | |
echo "Limpiando base de datos destino..." | |
$DEST_MYSQL -e "DROP DATABASE IF EXISTS ${DEST_DB_NAME}; CREATE DATABASE ${DEST_DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" -s | |
# CLONE CURRENT DATABASE | |
echo "Clonando base de datos..." | |
mirrorResult="$( ( mysqldump -u $ORIG_DB_USER --password=$ORIG_DB_PASS $ORIG_DB_NAME | $DEST_MYSQL) 2>&1 )" | |
if [ "$mirrorResult" == "" ] ; then | |
echo "Eliminando ficheros residuales antiguos..." | |
rm -rf $DEST_FOLDER/* | |
echo "Copiando nueva estructura de ficheros..." | |
yes | cp -rf $ORIG_FOLDER/* $DEST_FOLDER | |
yes | cp -rf $ORIG_FOLDER/.htaccess $DEST_FOLDER/.htaccess | |
echo "Reemplazando strings en ficheros..." | |
find $DEST_FOLDER/ -type f -exec sed -i "s/${ORIG_DOMAIN}/${DEST_DOMAIN}/g" {} \; | |
echo "Modificando wp-config.php..." | |
sed -i "s/^.*DB_NAME.*$/define('DB_NAME', '${DEST_DB_NAME}');/" $DEST_FOLDER/wp-config.php | |
sed -i "s/^.*DB_USER.*$/define('DB_USER', '${DEST_DB_USER}');/" $DEST_FOLDER/wp-config.php | |
sed -i "s/^.*DB_PASSWORD.*$/define('DB_PASSWORD', '${DEST_DB_PASS}');/" $DEST_FOLDER/wp-config.php | |
sed -i "s/^.*WP_CACHE.*$/define('WP_CACHE', false);/" $DEST_FOLDER/wp-config.php | |
echo "Reemplazando strings en base de datos..." | |
wp search-replace $ORIG_DOMAIN $DEST_DOMAIN --path="$DEST_FOLDER" | |
echo "Calibrando permisos de ficheros..." | |
chown -R $DEST_PERMS:psacln $DEST_FOLDER | |
chmod 755 $DEST_FOLDER/httpdocs | |
echo "Eliminando plugins innecesarios" | |
rm -rf $DEST_FOLDER/wp-content/plugins/wp-rocket | |
rm -rf $DEST_FOLDER/wp-content/plugins/wp-rocket-config | |
rm -rf $DEST_FOLDER/wp-content/plugins/redis-cache | |
rm -rf $DEST_FOLDER/wp-content/object-cache.php | |
echo "Añadiendo archivo de desindexado" | |
echo -e "User-agent: *\nDisallow: /" > $DEST_FOLDER/robots.txt | |
wp option get blog_public | |
echo "Clonación completada con éxito" | |
else | |
echo "[ERROR] No se pudo clonar la base de datos" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment