Cloudways는 관리형 호스팅이라 편하지만 트래픽이 늘면 비용이 빠르게 올라간다. 같은 사양의 순수 VPS로 옮기면 비용을 크게 줄일 수 있는데, 이 글은 Cloudways에서 운영 중인 WordPress를 Vultr VPS(Ubuntu 24.04 + Nginx + PHP-FPM + MariaDB, 이른바 LEMP 스택)로 직접 옮기는 전 과정을 다룬다. 관리형 패널 없이 서버를 처음부터 손으로 세팅하는 방식이라 Cloudways/Plesk 같은 컨트롤 패널에 익숙하다면 낯설 수 있지만, 그만큼 서버 구조를 정확히 파악하고 필요한 만큼만 설치하게 된다.
전체 흐름
JavaScript
[1] Vultr 서버 세팅
↓
[2] LEMP 스택 설치 (Nginx + PHP + MariaDB)
↓
[3] Cloudways에서 백업 다운로드
↓
[4] Vultr에 파일/DB 복원
↓
[5] 로컬 hosts 파일로 사전 테스트
↓
[6] DNS 전환
↓
[7] SSL 발급 & Cloudways 해지STEP 1 — Vultr 서버 생성
Deploy New Server
├── Type : High Frequency (Cloud Compute)
├── Region : Seoul
├── OS : Ubuntu 24.04 LTS
├── Plan : $12/월 (2GB RAM) 권장
└── Deploy Now
생성 완료 후 IP 주소, root 비밀번호 메모해두기
STEP 2 — 서버 초기 세팅
SSH 접속
ssh root@새서버IP
시스템 업데이트
apt update && apt upgrade -y
Swap 설정 (2GB RAM 서버 필수)
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
STEP 3 — LEMP 스택 설치
Nginx 설치
apt install nginx -y
systemctl enable nginx
systemctl start nginx
PHP 8.3 설치
Ubuntu 24.04은 기본 저장소에 이미 PHP 8.3이 포함되어 있어 별도 PPA 추가 없이 바로 설치할 수 있다.
apt install php8.3-fpm php8.3-mysql php8.3-xml php8.3-mbstring \
php8.3-curl php8.3-zip php8.3-gd php8.3-imagick \
php8.3-intl php8.3-bcmath php8.3-opcache -y
MariaDB 설치
apt install mariadb-server -y
systemctl enable mariadb
# 보안 설정
mysql_secure_installation
# root 비밀번호 설정, 익명 사용자 제거, 원격 root 로그인 차단 → 모두 Y
WordPress DB 생성
mysql -u root -p
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '강력한비밀번호';
GRANT ALL ON wordpress_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
STEP 4 — Nginx 설정
mkdir -p /var/www/yourdomain.com
nano /etc/nginx/sites-available/yourdomain.com
아래 내용 붙여넣기:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com;
index index.php index.html;
# WordPress 퍼머링크
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP 처리
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 정적 파일 캐시
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
# 보안: 숨김 파일 차단
location ~ /\. {
deny all;
}
}
ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
STEP 5 — Cloudways에서 백업
방법 A — Cloudways 콘솔에서 직접 다운로드
Application Management
→ Backup And Restore
→ Take Backup Now
→ Download (tar.gz)
방법 B — SSH로 직접 백업 (권장)
Cloudways SSH 접속:
ssh master@cloudways서버IP -p 22
파일 백업:
cd /home/master/applications/앱이름/public_html
tar -czf /home/master/wp_files.tar.gz .
DB 백업:
# wp-config.php에서 DB 정보 확인
grep "DB_" /home/master/applications/앱이름/public_html/wp-config.php
# DB 덤프
mysqldump -u DB_USER -pDB_PASSWORD DB_NAME > /home/master/wp_db.sql
로컬로 다운로드 (로컬 PC 터미널에서):
scp -P 22 master@cloudways서버IP:/home/master/wp_files.tar.gz ./
scp -P 22 master@cloudways서버IP:/home/master/wp_db.sql ./
STEP 6 — Vultr 서버에 복원
파일 업로드:
scp wp_files.tar.gz root@vultr서버IP:/var/www/yourdomain.com/
scp wp_db.sql root@vultr서버IP:~/
Vultr 서버에서 압축 해제:
cd /var/www/yourdomain.com
tar -xzf wp_files.tar.gz
rm wp_files.tar.gz
DB 복원:
mysql -u wp_user -p wordpress_db < ~/wp_db.sql
wp-config.php 수정:
nano /var/www/yourdomain.com/wp-config.php
define('DB_NAME', 'wordpress_db');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', '강력한비밀번호');
define('DB_HOST', 'localhost');
파일 권한 설정:
chown -R www-data:www-data /var/www/yourdomain.com
find /var/www/yourdomain.com -type d -exec chmod 755 {} \;
find /var/www/yourdomain.com -type f -exec chmod 644 {} \;
chmod 600 /var/www/yourdomain.com/wp-config.php
STEP 7 — DNS 전환 전 사전 테스트
DNS를 바꾸기 전에 로컬 PC에서 미리 확인합니다.
hosts 파일 편집:
# Mac/Linux
sudo nano /etc/hosts
# Windows
메모장 관리자 권한 실행 → C:\Windows\System32\drivers\etc\hosts 열기
아래 한 줄 추가:
Vultr서버IP yourdomain.com www.yourdomain.com
브라우저에서 http://yourdomain.com 접속 → 사이트 정상 확인 후 hosts 파일 원복
STEP 8 — URL 변경 (도메인이 바뀐 경우만)
# WP-CLI 설치
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp
# URL 일괄 교체
cd /var/www/yourdomain.com
wp search-replace 'https://old.cloudways-domain.com' 'https://yourdomain.com' \
--all-tables --allow-root
STEP 9 — SSL 인증서 발급
apt install certbot python3-certbot-nginx -y
# DNS 전환 완료 후 실행
certbot --nginx -d yourdomain.com -d www.yourdomain.com
# 자동 갱신 확인
certbot renew --dry-run
STEP 10 — DNS 전환
| 순서 | 작업 |
|---|---|
| 이전 전 | DNS TTL을 300초로 낮춤 (최소 12시간 전) |
| 이전 후 | A 레코드를 Vultr 서버 IP로 변경 |
| 확인 | https://dnschecker.org 에서 전파 확인 |
| 안정화 후 | Cloudways 구독 해지 |
이전 후 체크리스트
# 퍼머링크 재설정 (WordPress 관리자)
설정 → 고유주소 → 저장
# Nginx + PHP 재시작
systemctl restart nginx php8.3-fpm
# 캐시 플러그인 전체 삭제
| 항목 | 확인 |
|---|---|
| 사이트 접속 정상 | ✅ |
| 이미지/미디어 파일 | ✅ |
| SSL 자물쇠 표시 | ✅ |
| 관리자 로그인 | ✅ |
| 이메일 발송 (SMTP) | ✅ |
| 퍼머링크 작동 | ✅ |
| 구글 AdSense 스크립트 | ✅ |