Wie kann ich am schnellsten eine meiner eigenen Websites (Wordpress), die sich derzeit in meiner Nginx-Serverumgebung auf meinem VPS befindet, zu Testzwecken duplizieren? Gibt es ein Skript oder Dienstprogramm, das dies automatisch macht?
Angenommen, die vollständige URL lautet:
https://111.111.111.111/example.com || `example.com`.
und das Dienstprogramm dupliziert die Site wie folgt:
https://111.111.111.111/test
Die Website ist eine einfache Wordpress-Website mit 30 Seiten und 5 Basis-Plugins. Keine Anpassungen irgendwo (System oder Wordpress).
Antwort1
Das geht nicht schnell, aber der folgende Code beschreibt meinen Ansatz. Kopieren Sie ihn zum Testen und fügen Sie ihn ein. Wenn es funktioniert, führen Sie ihn in einem Stück aus, indem Sie den Code in einen Block einfügen:
(
The code...
)
Der Code
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