테스트 목적으로 현재 내 Nginx 서버 환경에 있는 내 웹사이트(Wordpress) 중 하나를 내 VPS에 복제하는 가장 빠른 방법은 무엇입니까? 자동으로 만드는 스크립트나 유틸리티가 있나요?
전체 URL은 다음과 같습니다.
https://111.111.111.111/example.com || `example.com`.
유틸리티는 다음과 같이 사이트를 복제합니다.
https://111.111.111.111/test
이 웹사이트는 30페이지와 5개의 기본 플러그인을 갖춘 간단한 Wordpress 웹사이트입니다. 어디에도 사용자 정의가 없습니다(시스템 또는 Wordpress).
답변1
이것은 빠르지는 않지만 다음 코드는 내가 취한 접근 방식을 설명합니다. 붙여넣기를 복사하여 테스트하고, 작동하는 경우 코드를 블록에 넣어 하나의 조각으로 실행합니다.
(
The 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