Qual é a maneira mais rápida de duplicar um dos meus próprios sites (Wordpress) que atualmente está no meu ambiente de servidor Nginx no meu VPS, para fins de teste? Existe um script ou utilitário que fará isso automaticamente?
Digamos, o URL completo é:
https://111.111.111.111/example.com || `example.com`.
e o utilitário duplicará o site para:
https://111.111.111.111/test
O site é um site Wordpress simples com 30 páginas e 5 plugins básicos. Sem personalizações em qualquer lugar (sistema ou Wordpress).
Responder1
Isso não é rápido, mas o código a seguir descreve a abordagem que adotei. Copie e cole para testar e, se funcionou, execute como uma única peça, colocando o código em um bloco:
(
The code...
)
O 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