Bản sao hiếm khi là phần làm hỏng một lần chuyển WordPress. Phần làm hỏng là thứ không ai ghi: một cron, một webhook, một plugin đã nung hostname cũ vào một dòng, một hộp thư vẫn gửi từ máy chủ cũ. Tôi coi bản kê là chính lần chuyển. Chuyển tệp là buổi chiều dễ đến sau đó.
Viết hệ thống ra trước khi đụng vào
Trước khi một tệp chuyển, tôi viết một trang người lạ cũng dùng được. Phiên bản PHP. Kích thước cơ sở dữ liệu. Các dòng cron và hành động đã lên lịch trong WordPress, không phải cùng một danh sách. Thư: ai gửi, qua gì, và SPF đã gọi tên host đó chưa. Mọi tích hợp gọi site hoặc được site gọi. Webhook thanh toán và đồng bộ CRM là bất ngờ thường gặp, vì chúng sống trong một thiết lập plugin không ai xuất ra.
Tôi cũng viết “chạy được” nghĩa là gì với cửa hàng này. Thanh toán một sản phẩm thật. Thanh toán một sản phẩm ảo. Đăng nhập. Đặt lại mật khẩu. Biểu mẫu liên hệ, kể cả thư phải tới. Tìm kiếm, nếu danh mục phụ thuộc vào nó. Nếu tôi không gọi tên được đường đi, tôi chưa sẵn sàng đổi DNS.
| Dòng | Vì sao nó ở đây |
|---|---|
| PHP, kích thước cơ sở dữ liệu, bộ nhớ đệm đối tượng | Máy chủ mới có thể «lên» mà vẫn là runtime sai. |
| Cron và hành động đã lên lịch | Job đêm bị miss trông ổn cho đến khi báo cáo sáng trống. |
| Đường thư | Trang có thể mở trong khi mọi thư đơn hàng chết trên máy mới. |
| Webhook và API đi ra | Chúng thường không được ghi lại, và chúng nhận ra tên máy trước. |
| Năm đường tạo ra tiền | Kiểm tra trang chủ không đi qua chúng. |
Hạ TTL vào ngày hôm trước
Đặt TTL của DNS thành 300 giây một ngày trước lúc chuyển. Nếu bạn bỏ qua mà host mới sai, một phần người xem giữ bản ghi cũ hàng giờ. Bạn không thể thúc một bộ nhớ đệm mình chưa rút ngắn. Tôi thà cố ý chờ một ngày còn hơn phát hiện khoảng chờ đó giữa lúc sự cố.
URL staging không phải tên máy thật
Tôi dựng máy chủ mới và chỉ trỏ máy của mình vào đó, bằng một dòng trong tệp hosts, trong khi DNS công khai vẫn phục vụ host cũ. Rồi tôi đi các đường trên tên thật. Một URL staging giấu các plugin đã lưu miền production trong cơ sở dữ liệu. Chúng ngoan cho đến khi tên thật nằm trong yêu cầu, đúng lúc bạn không còn muốn bất ngờ.
Nếu đường then chốt chưa được đi trên tên máy thật, việc chuyển chưa được kiểm tra.
Giữ máy chủ cũ còn chạy
Tôi không hủy hosting cũ trong tuần chuyển. Nó vẫn chạy, chỉ đọc, ít nhất hai tuần. Chi phí nhỏ. Đó là đường lùi duy nhất không phụ thuộc vào bản sao lưu tôi chưa phải dùng. Nếu host mới trục trặc vào ngày thứ ba, bản ghi cũ vẫn còn nghĩa.
Thư là bước kiểm người ta quên
Site có thể trông xong trong khi mọi thư đơn chết trên máy mới. Tôi ghi địa chỉ From, relay, và cổng 25 có mở hay không. Trên hơn một host thì không, và đường duy nhất chạy là relay đã xác thực trên 587. SPF đã có một bản ghi. Tôi không thêm bản thứ hai. Hai bản ghi SPF không nhập làm một. Cả hai thành không hợp lệ, và thư từng tới bắt đầu biến mất vào tuần sau một lần chuyển mà ngoài ra thì ổn.
Tôi gửi một thư đơn hàng thật và một lần đặt lại mật khẩu từ host mới, tới hộp thư tôi mở được, trước khi gọi lần chuyển là xong. Một dòng log ghi “sent” không phải thư trong hộp thư. Cái thứ hai mới là bài kiểm.
HTTPS trên apex và trên www. Chứng chỉ tự gia hạn. Thư vẫn gửi đi. Năm đường vẫn đi hết. Rồi tôi xem nhật ký lỗi một ngày, không xem trang chủ. Trang chủ là thứ bộ theo dõi đã chúc mừng bạn. Nhật ký là nơi webhook bắt đầu trả 404 cho nhà cung cấp thanh toán.
Một lần chuyển làm theo cách này thì nhàm. Đó chính là mục đích. Những câu chuyện thú vị về việc chuyển gần như đều là chuyện một dòng bị thiếu trong bản kê.
