Phát triển, thử nghiệm và phát hành


10

Làm thế nào để bạn phát triển, kiểm tra và triển khai để sống các trang Wordpress của mình?

Tôi luôn thấy hơi khó hiểu, đặc biệt là khi có liên quan đến cơ sở dữ liệu - chủ yếu là do thực tế là có một trang web thử nghiệm cần một cơ sở dữ liệu hoàn toàn mới để triển khai đôi khi giống hệt nhau, ngoại trừ tất cả các liên kết được thay đổi thành kiểm tra url trang web, thay vì trang web trực tiếp.

Tương tự như bất kỳ tải lên nào mà người dùng đã tải lên kể từ lần cuối cùng bạn cần sửa lỗi hoặc phát triển một cái gì đó mới sẽ phải được sao chép qua trang web thử nghiệm.

Làm thế nào để người khác làm điều đó? Bạn chỉ cần đưa lên với faff? Bạn có sử dụng hệ thống kiểm soát phiên bản thông minh mà giúp?

Cảm ơn


Nếu bạn tạo một hệ thống xoay quanh việc thay đổi tệp máy chủ của mình , thì bạn không bao giờ phải làm hỏng với DB thử nghiệm của mình. ( wordpress.stackexchange.com/a/10943/9142 )
Alexander Bird

Câu trả lời:


12

Có một chút triết lý cá nhân đi vào quy trình triển khai. Đây không phải là một câu hỏi dễ dàng để trả lời thẳng thắn mà không biết kinh nghiệm của bạn với máy chủ và kiểm soát phiên bản, hệ điều hành, lưu trữ, trải nghiệm của khách hàng và văn hóa công nghệ, v.v ...

  1. Đây là một câu hỏi tương tự có rất nhiều lời giải thích.
  2. Để triển khai nội dung, bạn có thể kiểm tra plugin RAMP của Crowd Favorites .
  3. WP Hackers là một chủ đề tuyệt vời để tìm thông tin tốt về việc triển khai.

Cá nhân, tôi đảm bảo rằng tôi không bao giờ cứng mã URL tuyệt đối trong các chủ đề của mình. Sử dụng bloginfo () hoặc mã URL tương đối. Tôi sử dụng rất nhiều điều kiện trong tệp wp-config.php của mình. Đây là phiên bản vanilla của các chỉnh sửa wp-config của tôi.

switch($_SERVER['SERVER_NAME']){
    case 'dev.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        //define debugging
        break;
    case 'stage.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        break;
    default: //Live
        $db_host = '';
        $db_pass = '';
}
define('DB_PASSWORD', $db_pass);
define('DB_HOST', $db_host);

//You could also set this as a variable above
define('WP_HOME', 'http://'.$_SERVER['SERVER_NAME']));
define('WP_SITEURL', 'http://'.$_SERVER['SERVER_NAME']));

Tôi làm việc trên rất nhiều trang web theo dõi

  • cục bộ (hack cá nhân :) trên máy chủ web máy tính xách tay của tôi)>
  • dev (thử nghiệm trên máy chủ)>
  • giai đoạn (nguồn ổn định cho QA - chỉnh sửa nội dung)>
  • sản xuất (trang web trực tiếp)

Cuối cùng, tôi sẽ đề nghị bạn sử dụng một công cụ tạo phiên bản để hỗ trợ cho việc triển khai của bạn như GIT hoặc SVN. Nó giảm bớt quá trình đáng kể và duy trì tính toàn vẹn nguồn giữa các môi trường. Cam kết với địa phương của bạn dễ dàng được cập nhật thông qua dòng lệnh trên sân khấu và sản xuất. Tốt nhất trong quá trình khám phá để xác định phiên bản nào kiểm soát bạn và khách hàng sẽ sử dụng ngay từ đầu nếu họ có nhà phát triển làm việc trong dự án. Cá nhân tôi sử dụng GIT để kiểm soát phiên bản của mình. Tuy nhiên, nếu một khách hàng sử dụng SVN, tôi kết hợp cả hai trên địa phương của mình để tôi duy trì repo cho chính mình đồng thời cam kết repo của họ.

Chúng tôi hiếm khi có vấn đề di chuyển từ môi trường này sang môi trường khác. Chúng tôi thực hiện tìm / thay thế trong DB để thay đổi URL phù hợp với phương tiện được nhúng, v.v ...


Điều này rất hữu ích! :) Cảm ơn rât nhiều. Vì vậy, mỗi khi bạn triển khai đến từng máy chủ khác nhau, bạn có sao chép cơ sở dữ liệu từ trang web trực tiếp không? Bạn nói rằng bạn triển khai đến một máy chủ dàn (giai đoạn.domain.com) để chỉnh sửa nội dung và QA. Điều gì xảy ra nếu cơ sở dữ liệu thay đổi trong khi bạn đang chạy máy chủ giai đoạn trên trang web trực tiếp? tức là bạn hoặc khách hàng của bạn đăng nhập vào giai đoạn và cập nhật một số nội dung, nhưng đồng thời một người đóng góp đăng một bài viết mới trên trang web trực tiếp? Bạn chỉ thực hiện các chỉnh sửa nội dung MỘT LẦN trên trang web trực tiếp? Làm thế nào để bạn giải quyết thay đổi cấu trúc cơ sở dữ liệu?
Thomas Clayson

Xin lỗi về tất cả các câu hỏi! : p Tôi rất biết ơn về thời gian và sự giúp đỡ của bạn.
Thomas Clayson

Trên một bộ tính năng mới, bạn có thể kéo từ prod> giai đoạn. Thêm nội dung cho tính năng mới sau đó, đẩy lùi giai đoạn> prod. Từ đó, giai đoạn là một bản sao có độ trung thực cao của prod và bạn có thể kéo giai đoạn> dev. Chúng tôi không thường xuyên kéo DB trở lại từ sân khấu. Phần lớn các trao đổi với DB xảy ra từ giai đoạn sang prod trừ khi một tính năng thay đổi kiến ​​trúc db.
Brian Fegter

Nếu bạn muốn sử dụng giai đoạn để triển khai nội dung và không bao giờ chạm vào prod, bạn có thể kiểm tra plugin RAMP mà tôi đã đăng trước đó.
Brian Fegter

+1 tất cả mọi thứ ở trên, với điều kiện là một số plugin khó chịu khăng khăng lưu trữ URL trong các mảng được tuần tự hóa, điều này có thể làm rối tung mọi thứ từ DB của env sang DB khác. Vấn đề là các mảng được tuần tự hóa lưu trữ độ dài chuỗi và bị borken khi độ dài thay đổi. Do đó, tôi khuyên bạn nên giữ tên miền của env giống nhau nếu có thể, ví dụ: dev.example.com, tst.example.com, www.example.com, v.v.
web biết
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.