복사가 WordPress 이전을 깨는 경우는 드뭅니다. 깨는 것은 아무도 적어 두지 않은 것입니다. cron, webhook, 옛 hostname을 한 줄에 구워 넣은 플러그인, 아직도 옛 서버에서 나가는 편지함. 목록을 이전 자체로 봅니다. 파일 전송은 그 뒤에 오는 쉬운 오후입니다.
건드리지 전에 시스템을 적는다
파일이 움직이기 전에, 낯선 사람도 쓸 수 있는 한 페이지를 적습니다. PHP 버전. 데이터베이스 크기. cron 줄과 WordPress 안의 예약 동작. 이것은 같은 목록이 아닙니다. 메일: 누가, 무엇을 통해 보내는지, SPF가 그 호스트를 이미 부르는지. 사이트를 부르거나 사이트가 부르는 모든 연동. 결제 webhook과 CRM 동기화는 흔한 놀라움입니다. 아무도 내보내지 않은 플러그인 설정에 살기 때문입니다.
이 상점에서 “된다”가 무엇을 뜻하는지도 적습니다. 실물 상품 하나의 결제. 가상 상품 하나의 결제. 로그인. 비밀번호 재설정. 문의 폼, 도착해야 하는 메일을 포함합니다. 카탈로그가 검색에 기대면 검색. 경로의 이름을 댈 수 없으면 DNS를 바꿀 준비가 되지 않은 것입니다.
| 줄 | 왜 여기 있는가 |
|---|---|
| PHP, 데이터베이스 크기, 객체 캐시 | 새 호스트가 «떠 있어도» 잘못된 런타임일 수 있다. |
| Cron과 예약 동작 | 빠진 밤 작업은 아침 보고서가 빌 때까지 괜찮아 보인다. |
| 메일 경로 | 사이트는 열리는데, 주문 메일은 새 기계에서 모두 죽는다. |
| 웹훅과 나가는 API | 보통 문서로 남아 있지 않고, 호스트 이름을 가장 먼저 알아챈다. |
| 돈을 버는 다섯 경로 | 홈 확인은 그것들을 걷지 않는다. |
전날에 TTL을 낮춘다
전환 하루 전에 DNS TTL을 300초로 두십시오. 이것을 건너뛰고 새 호스트가 틀리면, 이용자 일부는 옛 레코드를 몇 시간이나 유지합니다. 줄이지 않은 캐시는 재촉할 수 없습니다. 장애 중에 그 기다림을 발견하기보다, 하루를 일부러 기다리는 편이 낫습니다.
스테이징 주소는 진짜 호스트 이름이 아니다
새 서버를 올리고, 공개 DNS가 아직 옛 호스트를 가리키는 동안 hosts 파일로 제 기계만 그쪽으로 향하게 합니다. 그다음 진짜 이름으로 경로를 걷습니다. staging 주소는 프로덕션 도메인을 데이터베이스에 저장한 플러그인을 숨깁니다. 요청에 진짜 이름이 들어가기까지는 얌전하고, 바로 그때가 더 이상 놀라움을 원하지 않는 순간입니다.
진짜 호스트 이름에서 핵심 경로를 걷지 않았다면, 이전은 시험되지 않은 것이다.
옛 호스트는 켜 둔다
이전하는 주에 옛 호스팅을 해지하지 않습니다. 최소 2주, 읽기 전용으로 남겨 둡니다. 비용은 적습니다. 아직 쓸 일이 없던 백업에 기대지 않는 유일한 되돌림입니다. 새 호스트가 사흘째에 말을 안 들으면, 옛 레코드는 여전히 의미가 있습니다.
메일은 사람들이 잊는 확인이다
사이트는 끝난 듯 보이는데 주문 메일은 모두 새 기계에서 죽을 수 있습니다. From 주소, 릴레이, 25번 포트가 열려 있는지를 적습니다. 호스트가 하나 이상에서 열려 있지 않고, 되는 길은 587의 인증된 릴레이뿐입니다. SPF에는 이미 레코드가 하나 있습니다. 두 번째는 더하지 않습니다. SPF 레코드 둘은 합쳐지지 않습니다. 둘 다 무효가 되고, 예전에는 닿던 메일이, 그 외에는 잘 된 이전 다음 주부터 사라지기 시작합니다.
이전을 끝났다고 하기 전에, 새 호스트에서 제가 여는 받은편지함으로 실제 주문 메일 한 통과 비밀번호 재설정 한 통을 보냅니다. 로그의 “sent”는 받은편지함의 메시지와 같지 않습니다. 시험은 후자입니다.
apex와 www에 HTTPS입니다. 인증서는 스스로 갱신됩니다. 메일은 여전히 나갑니다. 다섯 경로는 여전히 끝납니다. 그다음 하루는 홈페이지가 아니라 오류 로그를 봅니다. 홈페이지는 모니터가 이미 축하하고 있는 곳입니다. 로그는 webhook이 결제 제공자에게 404를 돌려주기 시작한 곳입니다.
이렇게 한 이전은 지루합니다. 그게 핵심입니다. 마이그레이션의 흥미로운 이야기는 거의 모두, 목록에 한 줄이 빠져 있던 이야기입니다.
