Uma maneira rápida de duplicar um site (Wordpress) no meu ambiente de servidor Nginx?

1

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 um utilitário que irá torná-lo automaticamente?

Digamos que a URL completa é:

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. Nenhuma personalização em qualquer lugar (sistema ou Wordpress).

    
por Arcticooling 29.11.2017 / 21:16

1 resposta

1

Isso não é rápido, mas o código a seguir descreve a abordagem que eu tomei. Copie e cole para testar e, se funcionou, execute como uma 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
    
por 07.01.2018 / 00:41

Tags