Dev, Giai đoạn và Triển khai sản xuất cho các trang web WordPress?


41

Vì vậy, tôi cần có khả năng lặp lại dev / giai đoạn / sản xuất (trên các máy chủ riêng biệt) cho một trang web WordPress, tôi thường sử dụng git nhưng điều này rõ ràng là sẽ không hoạt động với các trang web WordPress vì phụ thuộc vào cơ sở dữ liệu cho chính cấu hình của ... tốt, hầu hết mọi thứ.

Vì vậy, câu hỏi của tôi là làm thế nào để các bạn làm điều đó? Tôi đã có một Google nhanh chóng và thấy rằng có một vài plugin, đây có phải là cách duy nhất? Những cái nào làm công việc tốt nhất về dễ sử dụng, tốc độ, độ tin cậy, ui vv?


pantheon.io có dev, thử nghiệm và sống cho một miền duy nhất. Họ sử dụng git cho các tệp và chuyển cơ sở dữ liệu giữa chúng chỉ bằng một cú nhấp chuột.
Dùng

Câu trả lời:


27

Tôi có một thiết lập tôi khá tự hào và nó hoạt động rất tốt cho đội của tôi.

Cấu trúc chung

Tôi giữ toàn bộ cài đặt dưới git. Tất cả các thay đổi, có thể là cập nhật hệ thống, thêm / cập nhật plugin, thêm / cập nhật chủ đề, trải qua cùng một quy trình. Thay đổi có thể được khôi phục tại một thời điểm thông báo. Tôi có một máy chủ triển khai (một máy tính để bàn P4 cũ) đang chạy gitosis nhưng bạn có thể dễ dàng sử dụng github hoặc gitolite . Trong git, tôi có hai nhánh "đặc biệt" masterdevelop(giải thích thêm bên dưới). Máy chủ sản xuất và dàn của tôi dựa trên đám mây.

Môi trường phát triển

Mỗi nhà phát triển chạy máy chủ phát triển riêng của họ trên máy riêng của họ. Về mặt cơ sở dữ liệu, việc cần dữ liệu trực tiếp hầu như không phải là vấn đề. Chúng tôi chủ yếu sử dụng dữ liệu thử nghiệm đơn vị chủ đề . Nếu không thì xuất nhập khẩu bao gồm hầu hết mọi thứ. Nếu phần DB là quan trọng, bạn có thể thiết lập sao chép hoặc thiết lập một cái gì đó để đồng bộ hóa theo yêu cầu. Khi tôi thiết lập cấu trúc này ban đầu, tôi nghĩ rằng điều này rất quan trọng vì vậy tôi đã bắt đầu viết một bộ công cụ để thực hiện việc này, nhưng thật ngạc nhiên là chúng thực sự không cần thiết. (lưu ý: vì chúng không cần thiết, tôi chưa bao giờ đánh bóng chúng, vì vậy có một số lỗi, ví dụ như nó sẽ thay thế tên miền trong dữ liệu nối tiếp).

Môi trường dàn dựng

Khi các cam kết được đẩy từ developchi nhánh sang gitosis, chúng sẽ tự động được triển khai đến máy chủ dàn của chúng tôi. Cơ sở dữ liệu dàn là một nô lệ cho cơ sở dữ liệu sản xuất.

Môi trường sản xuất

Khi các cam kết được đẩy đến gitosis trên masternhánh, nó sẽ tự động được triển khai đến máy chủ sản xuất.

Sự cố wp-config.php

Bạn muốn wp-config.phplà duy nhất từ ​​máy chủ này sang máy chủ khác, nhưng bạn cũng muốn giữ nó dưới sự kiểm soát phiên bản. Giải pháp của tôi là sử dụng .gitignoređể bỏ qua wp-config.phpvà lưu trữ các phiên bản dàn dựng và sản xuất dưới dạng các tệp có tên khác nhau. Sau đó, trên mỗi máy chủ, tôi symlink, vd wp-config.php -> wp-config-production.php. Mỗi người dùng sau đó giữ DB riêng của họ với thông tin đăng nhập của riêng họ, với cài đặt wp-config.php của riêng họ (không bị theo dõi).

Ghi chú khác

Tôi sử dụng Rackspace Cloud , một hiện tượng và không tốn kém. Với nó, tôi có thể giữ các máy chủ dàn dựng và sản xuất của mình giống hệt nhau. Tôi cũng đang viết các plugin ngay bây giờ sử dụng API của họ để cho phép tôi kiểm soát các dịch vụ của mình ngay từ bên trong WordPress, thật tuyệt vời.

Thư mục bộ đệm, thư mục tải lên tệp, v.v., tất cả đều được thêm vào .gitignore. Nếu bạn muốn, bạn có thể thiết lập một tác vụ cron để thường xuyên kiểm tra tải lên và đẩy chúng đến bệnh gitosis, nhưng điều đó dường như không bao giờ cần thiết đối với tôi.

Cấu trúc chính / phát triển được thiết lập để mô phỏng một phần mô hình phân nhánh của Vincent Driessen . Tôi cũng sử dụng git-Flow mở rộng git của anh ấy và tôi cũng rất muốn đề xuất điều đó.

Tôi đã có khoảng 10 nhà phát triển làm việc với cấu trúc này trong hơn một năm nay và đó là một giấc mơ để làm việc cùng. Đáng tin cậy, an toàn, nhanh chóng, chức năng và nhanh nhẹn, bạn không thể yêu cầu nhiều hơn nữa!


Tôi sắp thiết lập cài đặt wp theo cách tương tự (nhưng chúng tôi sử dụng svn) và tôi muốn xác nhận quy trình của bạn để cập nhật plugin và wp: hoàn thành cập nhật và kiểm tra dev, cam kết thay đổi, triển khai chúng trên dàn, kiểm tra, deply trực tiếp. Tóm lại, bạn chưa bao giờ thực sự cập nhật cài đặt wp trên máy chủ trực tiếp mà bạn mang đến các thay đổi thông qua các bản cập nhật trong repo?
paullb

1
Điều gì về những thay đổi đối với DB được thực hiện bởi thói quen cập nhật. Làm thế nào những người bị ảnh hưởng đến DB sản xuất?
paullb

Quy trình công việc đó là chính xác @paullb và bạn không phải lo lắng về các cập nhật DB. Cách WordPress hoạt động, các bản cập nhật được kích hoạt sau khi thay đổi được phát hiện, do đó, hoạt động này chính xác giống như cách cập nhật thủ công (vào lõi hoặc plugin) hoạt động!
Matthew Boynes

@MatthewBoynes, xin chào. bạn vẫn đang sử dụng công việc này cho sự phát triển của bạn? nếu vậy, tôi sẽ áp dụng quy trình công việc này cho dự án của mình. cảm ơn bạn :)
khakiout

Tôi không, nhưng chỉ vì nó không áp dụng cho các dự án tôi hiện đang làm, chủ yếu được lưu trữ trên WordPress.com VIP. Nếu nó được áp dụng, tôi vẫn sẽ sử dụng nó (và trên thực tế, công ty tôi từng làm việc trước đây vẫn tiếp tục sử dụng nó).
Matthew Boynes

4

Đầu tiên, tôi nghĩ điều quan trọng là phải xem xét những gì bạn sẽ đến với Kiểm soát phiên bản. Tôi muốn giới thiệu với việc đưa toàn bộ thư mục WP dưới VC. Tôi nghĩ sẽ hợp lý nhất khi đặt wp-content / Themes / YourThemeName trong VC. Đối với một trang web lớn có số lượng plugin phức tạp cao, tôi cũng có thể thấy trường hợp bao gồm cả nội dung wp / plugin. Nếu bạn hoàn toàn phải làm, bạn có thể bao gồm nội dung wp / tải lên. Các câu trả lời dưới đây sẽ thay đổi một chút, tùy thuộc vào những gì bạn kiểm soát phiên bản.

Cho rằng, đây là những gì tôi sử dụng:

Cục bộ: Thiết lập ngăn xếp LAMP trên máy của bạn. Sử dụng cùng một URL với trang web phát triển của bạn. Sử dụng các mục nhập tệp Virtualhost và .host để mô phỏng môi trường phát triển theo quan điểm URL. Nếu bạn chỉ đang sử dụng chủ đề của mình, hãy xem xét sử dụng SSHFS để liên kết với wp-content / plugin, wp-content / upload. Cân nhắc sử dụng cơ sở dữ liệu về cài đặt phát triển dự án của bạn trừ khi bạn thực sự thực hiện một số công việc nặng.

Phát triển: Kiểm tra một bản sao hoạt động của Repo vào môi trường WP của bạn. Thiết lập Hook POST-CAMIT trong SVN để cập nhật repo này trên mỗi lần xác nhận. Điều này sẽ giữ cho nó đồng bộ hóa. (Hãy coi đó là sự hòa nhập liên tục của một người nghèo.)

Sản xuất: Kiểm tra thẻ phiên bản có tên đại diện cho một ứng cử viên cuối cùng. Khi bạn cần sử dụng phiên bản mới, hãy chuyển thẻ và cập nhật repo.


Một môi trường dev rất phù hợp để thử nghiệm các bản dựng hàng đêm và git wordpress được cập nhật tự động cứ sau 30 phút, bên cạnh việc phân cấp và làm việc tốt hơn cho các đội, tôi không biết bất kỳ ai đã chuyển sang git / hg đã quay trở lại để sử dụng svn.
Wyck

1
Chỉ tò mò về lý do của bạn để không đặt toàn bộ thư mục WP dưới sự kiểm soát phiên bản. Điều đó có vẻ như một nút cổ chai trong quy trình làm việc. Đưa WP vào repo cung cấp cho tất cả các nhà phát triển cùng một phiên bản mã cơ sở và WP. Nó cũng cho phép sự thống nhất giữa các môi trường. Xem liên kết của Wyck (trên câu trả lời của anh ấy) với các tệp wp-config có điều kiện.
Brian Fegter

2

Gần đây chúng tôi đã phát hiện ra RAMP . Lưu ý: đây chỉ là một phần của toàn bộ quá trình, nhưng đồng bộ hóa cơ sở dữ liệu nội dung giữa các máy chủ có lẽ là phần khó nhất của nó.


2

Tôi làm điều này với git và đồng bóng, chỉ cần đảm bảo rằng bạn đang sử dụng repo riêng.

Lựa chọn 1.

Vấn đề duy nhất là config.php, bạn có thể yêu cầu git bỏ qua khi đẩy hoặc trước init.

Sử dụng .gitignorehoặc git update-index --assume-unchanged config.php(đọc một chút về lệnh không giả định trước khi sử dụng)

Tùy chọn 2.

Sử dụng một điều kiện trong config.php để kiểm tra url và áp dụng thông tin đăng nhập chính xác, dọc theo dòng "if url url = dev sau đó sử dụng thông tin đăng nhập A, khác sử dụng thông tin đăng nhập B", v.v.

Mark giải thích điều này tốt hơn, http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/

ps. Bạn cũng có thể lưu trữ các tệp trực tiếp từ một repo từ xa thay vì có một "máy chủ tệp" truyền thống. (video thực sự nhàm chán tôi đã thực hiện về điều này http://www.youtube.com/watch?v=8ZEiFi4thDI )

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.