VPS

Dựng WordPress staging để thử trước khi đẩy

Thanh Nguyễn Đăng 9 phút đọc 4 khối lệnh

Dựng WordPress staging để thử trước khi đẩy
Mục lục bài viết
  1. Ba mảnh của một bản sao
  2. Đổi đường dẫn cho đúng cách
  3. Chặn bản nháp khỏi thế giới bên ngoài
  4. Tắt những thứ chạm tới người thật
  5. Đưa thay đổi ngược lại trang thật
  6. Tắt những thứ chạm tới người thật, danh sách bắt buộc
  7. Chặn công cụ tìm kiếm vào bản thử
  8. Chỉ đẩy mã ngược lại, không đẩy dữ liệu
  9. Câu hỏi thường gặp
  10. Bài viết liên quan

Trả lời nhanh: Bản nháp (WordPress staging) là bản sao của trang thật, dùng để thử cập nhật và tính năng mới trước khi động vào trang đang phục vụ khách. Ba việc bắt buộc khi dựng, thiếu cái nào cũng gây rắc rối: đổi toàn bộ đường dẫn trong database bằng công cụ hiểu dữ liệu tuần tự hóa, chặn công cụ tìm kiếm lập chỉ mục để bản nháp không cạnh tranh với trang thật, và tắt thanh toán cùng email tự động để khách không nhận thư từ bản nháp.

Cập nhật một plugin rồi trang trắng là chuyện đã xảy ra với mọi người làm WordPress đủ lâu. Bản nháp biến sự cố đó thành một buổi chiều bình thường: bạn thử trên bản sao, thấy hỏng thì sửa hoặc bỏ, trang thật không hề hay biết. Bài này dựng bản nháp bằng tay để bạn hiểu từng mảnh, thay vì bấm một nút rồi không biết nó làm gì.

Ba mảnh của một bản sao

Một trang WordPress gồm ba phần và bản nháp phải có đủ:

  • Mã nguồn: lõi, giao diện, plugin.
  • Thư mục file tải lên: ảnh và tài liệu.
  • Database: bài viết, cấu hình, người dùng, đơn hàng.
TerminalBa mảnh của một bản saobash
# Ma nguon va file tai lenrsync -a /home/user/trang-that/ /home/user/trang-nhap/ --exclude 'wp-content/cache' # Databasewp db export /tmp/ban-sao.sql --path=/home/user/trang-thatwp db create --path=/home/user/trang-nhapwp db import /tmp/ban-sao.sql --path=/home/user/trang-nhap

Với trang có thư mục ảnh rất lớn, bạn có thể bỏ qua phần ảnh cũ và chỉ chép cấu trúc thư mục. Ảnh thiếu chỉ làm bản nháp trông xấu chứ không ảnh hưởng tới việc thử chức năng, và nó tiết kiệm rất nhiều dung lượng.

Đổi đường dẫn cho đúng cách

Đây là bước hay hỏng nhất. WordPress lưu đường dẫn ở rất nhiều nơi, và nhiều giá trị nằm trong dữ liệu tuần tự hóa, tức chuỗi có ghi kèm độ dài. Dùng lệnh thay chuỗi thông thường sẽ làm sai độ dài và phá hỏng cấu hình một cách âm thầm: giao diện mất tùy chỉnh, widget biến mất, plugin quên hết cài đặt.

TerminalĐổi đường dẫn cho đúng cáchbash
# Dung cong cu hieu du lieu tuan tu hoawp search-replace 'https://trangcuaban.vn' 'https://nhap.trangcuaban.vn'   --all-tables --skip-columns=guid --path=/home/user/trang-nhap # Kiem tra truoc bang che do chay thuwp search-replace 'https://trangcuaban.vn' 'https://nhap.trangcuaban.vn' --dry-run --path=...

Hai chi tiết: luôn chạy thử trước để xem sẽ đổi bao nhiêu chỗ, và bỏ qua cột định danh bài viết vì giá trị đó không phải là đường dẫn dùng để hiển thị và không nên đổi.

Sau khi đổi xong, sửa lại đường dẫn database trong file cấu hình của bản nháp, nếu không nó sẽ ghi thẳng vào database của trang thật, và đó là tai nạn nghiêm trọng nhất có thể xảy ra ở bước này.

Chặn bản nháp khỏi thế giới bên ngoài

Ba lớp, nên làm cả ba:

Chặn lập chỉ mục trong phần cài đặt đọc của WordPress. Bản nháp bị công cụ tìm kiếm thu thập sẽ tạo ra nội dung trùng lặp với trang thật, và đôi khi bản nháp lại được xếp hạng thay cho trang chính.

Chặn bằng mật khẩu ở tầng máy chủ web. Đây mới là lớp thật sự chắc, vì nó ngăn cả người lẫn máy quét.

CodeChặn bản nháp khỏi thế giới bên ngoàinginx
# Nginxlocation / {    auth_basic "Ban nhap";    auth_basic_user_file /etc/nginx/.htpasswd;}

Chỉ mở trong mạng riêng nếu chỉ đội nội bộ dùng, theo cách trong bài Tailscale. An toàn nhất và cũng đơn giản nhất.

Tắt những thứ chạm tới người thật

Đây là phần gây tai nạn thật sự chứ không chỉ khó chịu. Bản nháp mang theo toàn bộ dữ liệu khách hàng và mọi thiết lập tự động, nên nếu để nguyên thì nó sẽ hành xử y như trang thật.

  • Chuyển cổng thanh toán sang chế độ thử. Bản nháp gọi vào cổng thật là có giao dịch thật.
  • Chặn email gửi ra ngoài. Cài một plugin ghi email vào log thay vì gửi, hoặc trỏ máy chủ thư sang dịch vụ hứng thư thử nghiệm. Nếu không, khách sẽ nhận được thư đơn hàng phát sinh từ lần bạn bấm thử.
  • Tắt các tác vụ định kỳ đồng bộ ra ngoài, ví dụ đẩy đơn sang hệ thống vận chuyển hay kế toán.
  • Che thông tin cá nhân của khách nếu nhiều người được vào bản nháp, đây vừa là chuyện an toàn vừa là chuyện tuân thủ.

Ba việc đầu nên gói thành một script chạy ngay sau mỗi lần làm mới bản nháp, vì làm bằng tay thì kiểu gì cũng có lần quên.

Đưa thay đổi ngược lại trang thật

Nguyên tắc quan trọng nhất của toàn bài: đẩy mã nguồn từ bản nháp lên trang thật, đừng bao giờ đẩy ngược database. Database của trang thật liên tục có dữ liệu mới, đơn hàng mới, bình luận mới. Ghi đè nó bằng database bản nháp là xóa sạch những thứ phát sinh từ lúc bạn sao chép.

Quy trình an toàn:

  1. Thử trên bản nháp cho tới khi ổn.
  2. Ghi lại chính xác những gì đã đổi: file nào, cấu hình nào.
  3. Sao lưu trang thật trước khi động vào.
  4. Áp phần mã nguồn lên trang thật, nên qua Git.
  5. Chỉnh lại phần cấu hình bằng tay theo ghi chép ở bước hai.
  6. Kiểm tra vài luồng chính: xem bài, tìm kiếm, thêm vào giỏ, thanh toán.

Bước năm là lý do bạn phải ghi chép ở bước hai. Nếu thay đổi cấu hình quá nhiều để chép tay, hãy cân nhắc đưa cấu hình vào mã nguồn dưới dạng code, khi đó bản nháp và trang thật sẽ đồng bộ theo Git chứ không theo trí nhớ.

Tắt những thứ chạm tới người thật, danh sách bắt buộc

Thứ phải tắtHậu quả nếu quênCách tắt
Gửi thư ra ngoàiKhách hàng nhận thư từ bản thửChặn ở tầng máy chủ, hoặc dùng plugin giữ thư lại
Khóa thanh toán thậtMỗi lần bấm thử là một giao dịch thậtĐổi sang khóa chế độ thử
Kết nối phần mềm vận chuyển và kế toánSinh đơn giả trong hệ thống thậtTắt hoặc trỏ sang môi trường thử của họ
Cho công cụ tìm kiếm lập chỉ mụcBản nháp xuất hiện trên kết quả tìm kiếmChặn thu thập và đặt thẻ chặn lập chỉ mục
Tác vụ định kỳ gửi thông báoKhách nhận nhắc nhở từ bản thửTắt tác vụ định kỳ trên bản thử

Dòng đầu và dòng hai là hai thứ gây hậu quả nặng nhất và cũng hay bị quên nhất. Bản thử gửi thư xác nhận đơn hàng cho khách thật, hoặc trừ tiền thật, là sự cố phải xin lỗi khách.

Chặn công cụ tìm kiếm vào bản thử

TerminalChặn công cụ tìm kiếm vào bản thửbash
# 1. Chan cong cu tim kiemcurl -s https://thu.tenmien.vn/robots.txtcurl -sI https://thu.tenmien.vn/ | grep -i "x-robots-tag" # 2. Dat mot lop dang nhap truoc toan bo ban thucurl -sI https://thu.tenmien.vn/ | head -3   # nen tra ve 401 # 3. Kiem KHONG noi vao co so du lieu thatgrep -n "DB_NAME\|DB_HOST" wp-config.php # 4. Kiem khoa thanh toan dang o che do thugrep -rn "sk_live\|pk_live" wp-content/ && echo "CANH BAO: dang dung khoa that" # 5. Kiem thu co bi gui ra ngoai khong# Cai plugin giu thu lai, hoac chan o tang may chu

Chỉ đẩy mã ngược lại, không đẩy dữ liệu

  1. Chỉ đưa mã và cấu hình, không đưa cơ sở dữ liệu ngược lại. Cơ sở dữ liệu bản thử đã cũ so với bản thật, ghi đè là mất đơn hàng phát sinh trong lúc thử.
  2. Sao lưu trang thật trước, và kiểm tệp sao lưu mở được.
  3. Đưa lên vào khung giờ ít khách nhất.
  4. Kiểm trọn luồng ngay sau khi đưa lên: xem sản phẩm, thêm giỏ, thanh toán, nhận thư xác nhận, đơn hiện trong trang quản trị.
  5. Theo dõi nhật ký lỗi trong vài giờ đầu.

Đây là sai lầm nghiêm trọng nhất trong quy trình này: đồng bộ cả cơ sở dữ liệu từ bản thử về bản thật. Chỉ đồng bộ một chiều từ thật sang thử, không bao giờ ngược lại.

Câu hỏi thường gặp

Bản nháp có cần cùng máy chủ với trang thật không?

Không bắt buộc, nhưng cùng máy chủ thì tiện vì sao chép nhanh và môi trường giống hệt. Nếu trang thật đang chạy sát tài nguyên thì nên tách sang máy khác, vì bản nháp cũng ngốn CPU và ổ đĩa khi bạn thử.

Vì sao đổi đường dẫn xong giao diện mất hết tùy chỉnh?

Vì bạn đã thay chuỗi bằng công cụ không hiểu dữ liệu tuần tự hóa, làm sai độ dài chuỗi ghi kèm. Phải dùng lệnh chuyên dụng của WordPress. Nếu đã lỡ, cách nhanh nhất là nhập lại bản sao database rồi làm lại cho đúng.

Bao lâu nên làm mới bản nháp một lần?

Trước mỗi lần thử một thay đổi lớn, để dữ liệu và cấu hình sát với trang thật. Nếu bạn thử liên tục thì viết script làm mới toàn bộ quy trình, gồm cả các bước tắt email và thanh toán.

Bản nháp có tốn thêm tài nguyên máy chủ không?

Có, chủ yếu là dung lượng ổ đĩa cho bản sao file và database. Phần CPU chỉ tốn khi bạn đang thử. Với trang vừa, chuẩn bị dư khoảng gấp đôi dung lượng hiện tại là đủ thoải mái.

Chia sẻ:Facebook

Thanh Nguyễn

TND

Tư vấn bản quyền, VPS và máy chủ kèm hóa đơn VAT, hợp đồng đầy đủ cho doanh nghiệp.