# 스테이징 사용하기: 프로덕션으로 푸시 및 프로덕션에서 가져오기

Source: https://support.kapsulehost.com/ko-kr/wordpress-staging-workflow

Staging은 WordPress 및 WooCommerce 사이트를 위한 기능입니다. 스테이징 사본이 존재하면, 그것을 유용하게 활용하는 두 가지 작업이 있습니다. 테스트가 끝난 변경 사항을 실 사이트로 푸시하는 것과, 스테이징을 프로덕션의 새 사본으로 초기화하는 것입니다. 이 가이드는 두 방향 모두를 자세히 다루고, 실 사이트를 보호하는 확인 절차와 데이터베이스를 푸시하면 데이터가 손상될 수 있는 경우를 설명합니다.

아직 스테이징 환경을 만들지 않았다면 [스테이징 환경 사용하기](https://support.kapsulehost.com/ko-kr/staging-environments)부터 시작하세요. 이 글은 스테이징이 이미 존재하는 시점부터 다룹니다.

## 두 가지 방향

| 작업 | 덮어쓰는 대상 | 사용 시점 |
|---|---|---|
| **프로덕션으로 푸시** | 실 사이트 | 스테이징에서의 변경 사항이 테스트를 마치고 실 사이트에 반영될 준비가 되었을 때 |
| **프로덕션에서 초기화** | 스테이징 사이트 | 현재 실 사이트의 깨끗한 사본을 기준으로 작업하고 싶을 때 |

두 기능 모두 같은 화면에 있습니다. **웹사이트**, 해당 사이트, **Environment**, **스테이징** 순서입니다.

![KPanel에서 사이트의 스테이징 페이지. 스테이징 도메인, 상태, 마지막 동기화 시점이 표시됨](https://support.kapsulehost.com/help/screenshots/wordpress-staging-workflow.8f62c65f.webp)

해당 화면 상단의 카드에는 스테이징 도메인, 상태, 마지막으로 프로덕션에서 동기화된 시점, 마지막으로 푸시된 시점이 표시됩니다. **WP 관리자**를 클릭하면 스테이징 사이트의 대시보드로 바로 로그인되고, **사이트 방문**을 클릭하면 스테이징 프런트엔드가 열립니다.

> **Tip:** 일주일 이상 동기화되지 않은 스테이징 사본은 해당 카드에 호박색으로 표시됩니다. 오래된 스테이징은 스테이징이 없는 것보다 더 나쁩니다. 더 이상 실 사이트와 닮지 않은 사이트를 대상으로 테스트하게 되기 때문입니다. 새로운 작업을 시작하기 전에 초기화하세요, 작업을 마친 후가 아니라요.

## 스테이징을 프로덕션으로 푸시하기

이 작업은 스테이징에 있는 내용으로 실 사이트의 일부 또는 전체를 교체합니다.

1. **Environment**, **스테이징**을 엽니다.
2. **스테이징을 프로덕션으로 푸시** 항목까지 스크롤합니다.
3. 체크박스로 푸시할 항목을 선택합니다. **파일**, **데이터베이스**, 또는 둘 다입니다.
4. **데이터베이스**를 체크했다면 **URL 다시 쓰기**는 체크된 상태로 둡니다. 이 기능은 모든 테이블에 걸쳐 검색 및 치환을 실행하여 푸시 과정에서 스테이징 호스트명을 프로덕션 호스트명으로 바꿉니다.
5. **이 작업이 라이브 프로덕션 사이트를 수정함을 이해합니다.**를 체크합니다.
6. 표시된 그대로 확인란에 프로덕션 도메인을 입력합니다.
7. **프로덕션으로 푸시**를 클릭합니다.

버튼은 체크박스가 체크되고 도메인이 일치할 때까지 비활성화 상태로 유지되므로, 실수로 잘못 클릭해도 푸시가 시작되지 않습니다.

> **Warning:** 푸시는 병합이 아니라 덮어쓰기입니다. 마지막 초기화 이후 프로덕션에서 변경된 모든 내용은 스테이징에 있는 내용으로 교체됩니다. 여기에는 새 게시글, 새 고객 계정, 새 양식 입력, 새 주문이 포함됩니다.

쓰기 작업이 시작되기 전에 프로덕션의 전체 백업이 자동으로 생성되며, 푸시가 도중에 실패하면 프로덕션은 해당 백업으로 복원됩니다. 소규모 사이트는 보통 1분도 채 안 되어 완료되지만, 대용량 데이터베이스나 수 기가바이트 규모의 미디어 라이브러리는 시간이 더 걸립니다.

### Files, Database, 또는 둘 다 선택하기

이것이 가장 중요한 결정이며, 답은 보통 "둘 다"가 아닙니다.

**Files만.** 방문자로부터 무언가를 수집하는 사이트에 안전한 기본 선택입니다. 테마 수정, 플러그인 업데이트, 템플릿 변경, 사용자 지정 코드는 모두 파일에 존재합니다. 파일만 푸시하면 프로덕션의 모든 게시글, 댓글, 주문, 사용자는 그대로 유지됩니다.

**Database만.** 프로덕션을 직접 편집하는 사람이 없는 사이트에서, 스테이징에서 수행된 콘텐츠나 설정 변경 사항을 반영할 때 사용합니다. 실무에서는 드문 경우입니다.

**둘 다.** 스테이징이 새 사이트이고 프로덕션을 완전히 교체하는 재설계나 재구축 작업에 적합합니다. 사전에 공지하고, 업무 시간 외에 진행하며, 먼저 최신 백업이 있는지 확인하세요.

> **Important:** 실 상점에 데이터베이스를 푸시하면 주문이 삭제됩니다. WooCommerce는 주문, 고객, 구독, 쿠폰, 재고 수준을 데이터베이스에 저장하므로, 마지막으로 프로덕션에서 초기화한 이후 접수된 모든 주문은 푸시가 완료되는 순간 사라집니다. 부분 복구는 불가능합니다. 상점에서는 파일만 푸시하고, 데이터베이스 수준의 변경은 프로덕션에서 직접 수행하세요. [WooCommerce 설정하기](https://support.kapsulehost.com/ko-kr/wordpress-woocommerce)를 참고하세요.

같은 함정은 댓글, 양식 제출, 회원 가입, 또는 WordPress에 저장된 메일링 리스트가 있는 모든 사이트에도, 정도는 덜하지만 똑같이 적용됩니다.

## 프로덕션에서 스테이징 초기화하기

이것은 안전한 방향입니다. 스테이징을 현재 실 사이트로 덮어쓸 뿐, 프로덕션에는 전혀 영향을 주지 않습니다.

1. **Environment**, **스테이징**을 엽니다.
2. **프로덕션에서 초기화** 항목을 찾습니다.
3. **파일**, **데이터베이스**, 또는 둘 다를 체크합니다.
4. **프로덕션에서 초기화**를 클릭합니다.

다음과 같은 경우 이 작업을 수행하세요.

- 프로덕션에 새 게시글, 새 주문, 콘텐츠 수정 등 진전이 있었을 때.
- 새 작업을 시작하면서 현실적인 기준 상태가 필요할 때.
- 스테이징이 충분히 뒤처져서 거기서 얻은 테스트 결과가 의미가 없을 때.

푸시되지 않은 스테이징의 모든 내용은 사라집니다. 스테이징에 여전히 보존하고 싶은 작업이 있다면, 먼저 푸시하거나, 초기화하기 전에 **설정**, **파일 관리자**를 통해 변경된 파일을 복사해 두세요.

## URL 다시 쓰기 작동 방식

WordPress는 자신의 주소를 데이터베이스의 options 테이블에 있는 `siteurl` 및 `home` 행에 저장하며, 절대 URL은 게시글 콘텐츠, 메타 값, 위젯 설정, 테마 옵션에도 남습니다.

스테이징 사이트는 도메인 앞에 `staging.`이 붙은 주소에서 실행되므로, 작업하는 동안에는 이러한 값들이 모두 스테이징 호스트명을 가리킵니다. 푸시 시의 **URL 다시 쓰기**는 모든 테이블에 걸쳐 제대로 된 검색 및 치환을 수행하며, 직렬화된 플러그인 설정도 올바르게 처리하여 스테이징 호스트명을 프로덕션 호스트명으로 바꿉니다.

특별한 이유가 없다면 이 옵션은 체크된 상태로 두세요. 파일만 푸시했거나 간혹 스테이징 URL이 남아 있다면, [검색 및 치환 실행하기](https://support.kapsulehost.com/ko-kr/wordpress-search-replace)로 해결하세요.

## 안정적인 작업 흐름

1. **프로덕션에서 초기화**하여 스테이징을 실 사이트와 일치시킵니다.
2. **작업을 시작하기 전에 프로덕션의 백업을 생성**하여 푸시와 무관한 복원 지점을 확보합니다. [백업 생성하기](https://support.kapsulehost.com/ko-kr/taking-a-backup)를 참고하세요.
3. **스테이징에서 작업을 수행합니다.** 플러그인 및 테마 업데이트, 새 코드, 레이아웃 변경 등입니다.
4. **스테이징 도메인에서 테스트합니다.** 변경한 페이지와 변경하지 않은 페이지를 모두 로드해 보세요. 상점이라면 테스트 주문을 처음부터 끝까지 진행해 보세요.
5. 데이터베이스까지 반영해야 한다고 의도적으로 결정한 경우가 아니라면 **파일만 푸시**합니다.
6. **프로덕션을 즉시 확인합니다.** 홈페이지, 하위 페이지, 결제 페이지, 관리자 대시보드를 확인하세요.
7. 작업에 만족했다면 **스테이징을 프로덕션에서 다시 초기화**하여 다음 작업을 깨끗한 상태에서 시작하세요.

> **Note:** 스테이징은 전적으로 프로덕션 사이트에서 관리됩니다. **웹사이트** 목록에 별도 항목으로 표시되지 않으므로, 삭제를 포함한 스테이징의 모든 제어 기능은 이 하나의 탭에 있습니다.

## 스테이징 삭제하기

같은 화면 하단의 **스테이징 삭제** 카드는 스테이징 사본을 제거합니다. 프로덕션에는 영향이 없습니다. 프로젝트가 끝났다면 삭제하세요. 스테이징은 플랜의 저장 공간에 포함되며, 오래된 사본은 자산이 아니라 부담이 됩니다.

## 문제 해결

**프로덕션으로 푸시 버튼이 활성화되지 않습니다.** 두 조건이 모두 충족되어야 합니다. 확인 체크박스가 체크되어 있어야 하고, 프로덕션 도메인이 `https://`이나 끝의 슬래시 없이 정확히 입력되어야 합니다.

**푸시는 완료되었는데 사이트에 여전히 이전 콘텐츠가 표시됩니다.** 캐싱 문제입니다. **WordPress**, **빠른 작업**, **캐시 비우기**에서 비우고, **성능**, **Kapsule CDN**에서 CDN을 초기화한 다음, 사생활 보호 창에서 새로고침하세요.

**푸시 후 실 사이트에 스테이징 URL이 표시됩니다.** **URL 다시 쓰기**를 체크하지 않은 채 데이터베이스가 전송된 경우입니다. 스테이징 호스트명에서 프로덕션 도메인으로 검색 및 치환을 실행하세요. [검색 및 치환 실행하기](https://support.kapsulehost.com/ko-kr/wordpress-search-replace)를 참고하세요.

**데이터베이스를 푸시했더니 주문이 사라졌습니다.** 덮어쓰인 데이터베이스에 더 많은 주문이 들어오기 전에 자동으로 생성된 푸시 이전 백업을 즉시 복원하세요. [백업에서 복원하기](https://support.kapsulehost.com/ko-kr/restoring-from-backup)를 참고하세요.

**초기화 후 스테이징에 오류가 표시됩니다.** 프로덕션 도메인을 하드코딩한 플러그인이 일반적인 원인입니다. 스테이징 카드에서 **WP 관리자**로 로그인하여 오류가 사라질 때까지 플러그인을 비활성화한 다음, 문제가 된 플러그인을 프로덕션에서 수정하거나 교체하세요.
