¿Cuál es la forma más rápida de duplicar uno de mis propios sitios web (Wordpress) que actualmente se encuentra en mi entorno de servidor Nginx en mi VPS, con fines de prueba? ¿Existe algún script o utilidad que lo haga automáticamente?
Digamos que la URL completa es:
https://111.111.111.111/example.com || `example.com`.
y la utilidad duplicará el sitio en cuanto a:
https://111.111.111.111/test
El sitio web es un sitio web sencillo de Wordpress con 30 páginas y 5 complementos básicos. Sin personalizaciones en ningún lugar (sistema o Wordpress).
Respuesta1
Esto no es rápido, pero el siguiente código describe el enfoque que tomé. Copie y pegue para probar y, si funcionó, ejecútelo como una sola pieza colocando el código en un bloque:
(
The code...
)
El código
cd /var/www/html/
echo "1/3: Please enter the domain of the site you want to duplicate into a subdomain test version." && read domain
echo "2/3: Please enter the password for your Mysql root user." && read -s rps
echo "3/3: Please enter the password of the site's DB user." && read -s sps
ipa=$(ifconfig | grep -Po "inet addr:\K[^\s]+" | grep -v "^127")
rm -rf ./test/ ./test.sql
cp -r ./${domain} ./test/
sed -i "s/${domain}/test"/g ./test/wp-config.php
cp -r /etc/nginx/sites-available/${domain}.conf /etc/nginx/sites-available/test.conf
sed -i "s/${domain}/test"/g /etc/nginx/sites-available/test.conf
ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conf
echo "DROP USER IF EXISTS 'test'@'localhost';" | mysql -u root -p"${rps}"
echo "DROP database IF EXISTS test;" | mysql -u root -p"${rps}"
echo "CREATE USER 'test'@'localhost' IDENTIFIED BY \"${sps}\";" | mysql -u root -p"${rps}"
echo "CREATE database test;" | mysql -u root -p"${rps}"
echo "GRANT ALL PRIVILEGES ON test.* TO test@localhost;" | mysql -u root -p"${rps}"
mysql -u root -p"${rps}" -e "SELECT user FROM mysql.user; SHOW grants FOR "test'@'localhost"; show databases;"
mysqldump -u root -p"${rps}" "${domain}" > test.sql
mysql -u test -p"${sps}" test < ./test.sql
cd test
wp search-replace "https://${domain}" "http://test.${ipa}/test" --allow-root
# Note that https:// && http:// are needed to apply a URL rewrite rule.
cat <<-TESTCONF > /etc/nginx/sites-available/test.${domain}.conf
server {
root /var/www/html/test/;
server_name ${ipa} test.${domain};
location / {
index index.php index.html index.htm fastcgi_index;
try_files $uri $uri =404 $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
listen 80;
}
TESTCONF
unset domain rps sps ipa