테스트 목적으로 현재 내 VPS의 Nginx 서버 환경에 있는 내 웹사이트(Wordpress) 중 하나를 복사하는 가장 빠른 방법은 무엇입니까? 이 작업을 자동으로 수행할 수 있는 스크립트나 유틸리티가 있습니까?
예를 들어 전체 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