Tôi đã hỏi câu hỏi này hơn một năm trước và trong thời gian đó chúng tôi đã thêm nhiều người vào nhóm của mình và phát triển số lượng trang web lớn hơn nhiều trong WordPress. Tôi muốn đi qua quy trình của chúng tôi trong trường hợp nó có thể giúp đỡ bất cứ ai khác.
Mọi thứ trong Git
Đây là điều tôi đang làm ngay cả khi tôi đặt câu hỏi, nhưng thật tốt khi gọi điểm này. Sử dụng Git không chỉ giúp chúng tôi làm việc hiệu quả hơn mà còn tiết kiệm được những cú lừa tập thể của chúng tôi nhiều lần.
Bạn đã bao giờ cần phải thực hiện cải tạo cấu trúc lớn cho một trang web, có được sự chấp thuận cho những cải tạo đó từ khách hàng và tất cả các bản cập nhật nhỏ cho phiên bản không được cải tạo? Chúng tôi có, và Git cho chúng tôi làm điều đó. Mô tả thiết lập này sẽ hơi dài dòng, nhưng điều cơ bản là chúng tôi đã tạo một nhánh mới, kéo nhánh đó lên máy chủ và gắn một tên miền phụ vào nhánh đó.
Chúng tôi cũng đã được cứu bởi Git. Tất nhiên nó cho phép chúng tôi khôi phục các thay đổi, điều này thật tuyệt, nhưng nó cũng cho phép chúng tôi đưa các phiên bản cũ của các tệp trở lại. Điều này có nghĩa là nếu một khách hàng hỏi: "Hãy nhớ phần này của trang web hoạt động như thế nào khoảng một năm trước? Chúng ta có thể mang nó trở lại không?", Câu trả lời là có - ngay cả khi người được hỏi không tham gia dự án đó một năm trước đây
Bên cạnh những điểm này, điều đó cũng có nghĩa là chúng tôi không bao giờ bị mắc kẹt nếu không có các tệp chúng tôi cần. Chúng tôi luôn có thể kéo xuống phiên bản mới nhất của trang web từ bất kỳ máy nào và bắt đầu thực hiện thay đổi.
Sử dụng Git để triển khai
Chúng tôi thực hiện lưu trữ WordPress trên Media Temple và chúng tôi thực sự thích chúng. Họ không phải là nhà cung cấp rẻ nhất, nhưng dịch vụ của họ rất tuyệt vời và máy chủ của họ thực sự được thiết lập tốt. Cũng cung cấp Git theo mặc định. Điều này có nghĩa là chúng ta có thể thiết lập máy chủ thành kho lưu trữ Git và kéo các thay đổi theo cách đó thay vì sử dụng SFTP. Điều đó cũng có nghĩa là thực hiện công việc trên máy chủ không có nguy cơ bị ghi đè (vì những thay đổi đó chỉ có thể được hợp nhất và đẩy lùi).
Vì chúng tôi sử dụng BitBucket làm máy chủ Git của chúng tôi, nên cần thêm một chút công việc ở đây. Trước hết, chúng tôi sử dụng các tệp .ssh / config để chúng tôi có thể nhập những thứ như ssh sitename
đăng nhập vào máy chủ của mình (chúng tôi cũng sử dụng SSH không mật khẩu , điều này giúp việc này trở nên siêu dễ dàng). Chúng tôi cũng đảm bảo luôn sử dụng cụm mật khẩu ssh (Mac OS X làm cho việc này trở nên rất dễ dàng bằng cách cho phép bạn lưu trữ cụm mật khẩu của mình trong Keychain.app ). Cuối cùng, chúng tôi thêm một dòng ForwardAgent vào mục .ssh / config trên các máy chủ mà chúng tôi muốn lấy từ đó. Điều này có nghĩa là chúng tôi chỉ cần khóa công khai SSH của mỗi người trong BitBucket chứ không phải khóa chung của mỗi máy chủ. Chúng tôi cũng đảm bảo giữ .git
thư mục một thư mục phía trên thư mục HTML công khai.
Cơ sở dữ liệu tự động
Khi máy chủ ở chế độ sản xuất, chúng tôi đảm bảo tự động sao lưu cơ sở dữ liệu của chúng tôi, chỉ trong trường hợp .
Mọi người đều có wp-config của riêng mình
Bởi vì tất cả chúng ta đều có tên người dùng và mật khẩu cơ sở dữ liệu cục bộ của riêng mình và vì chúng ta có thể sử dụng các tên và cơ chế phục vụ khác nhau, mỗi chúng ta đều giữ tệp wp-config của riêng mình. Mỗi trong số này được lưu trữ trong Git với một tên như wp-config-gavin.php
và khi chúng tôi muốn sử dụng cấu hình đó, chúng tôi liên kết nó với wp-config.php
(được Git bỏ qua bằng cách sử dụng .gitignore ).
Điều này cũng cho phép chúng ta ghi đè siteurl
tùy chọn trong wp_options
bảng cơ sở dữ liệu như sau:
define('WP_SITEURL', 'http://sitename.localhost');
define('WP_HOME', 'http://sitename.localhost');
Điều này ngăn WordPress xem xét cơ sở dữ liệu cho vị trí máy chủ và có nghĩa là không có sự khác biệt kỳ lạ về vị trí giữa cài đặt cục bộ và máy chủ.
Một lưu ý cuối cùng về các tệp wp-config.php: đảm bảo lưu trữ chúng phía trên thư mục HTML công khai và làm cho các quyền chỉ được đọc cho người dùng web . Điều này tạo ra một sự khác biệt rất lớn trong việc bảo mật WordPress.
Vấn đề cơ sở dữ liệu
Cuối cùng, thịt của vấn đề.
Điều tôi phải chấp nhận là, khi sử dụng WordPress, không có cách nào tốt để "hợp nhất" các thay đổi cơ sở dữ liệu. Thay vào đó, chúng tôi cần phát triển các quy tắc ứng xử để giải quyết điều này. Các quy tắc khá đơn giản, và đã phục vụ chúng tôi tốt cho đến nay.
Trong quá trình phát triển, có một người duy nhất "sở hữu" trang web. Người đó thường thực hiện cài đặt (kết hợp gói lưu trữ với nhau, bắt đầu dự án Basecamp, cắt thiết kế, đại loại như vậy). Khi người đó đến điểm hợp lý, kết xuất cơ sở dữ liệu để cài đặt WordPress và đưa nó vào Git. Từ thời điểm đó trở đi, mọi người thực hiện phát triển đều sử dụng kết xuất cơ sở dữ liệu đó và chủ sở hữu là người duy nhất thực hiện thay đổi cơ sở dữ liệu.
Khi việc xây dựng trang web tiến xa hơn một chút, trang web sẽ được đặt trên một máy chủ. Từ thời điểm đó, cơ sở dữ liệu của máy chủ là hợp quy. Mọi người (bao gồm cả chủ sở hữu) phải thực hiện tất cả các thay đổi cơ sở dữ liệu trên máy chủ và kéo các thay đổi xuống để phát triển và thử nghiệm cục bộ.
Quá trình này không hoàn hảo. Vẫn có khả năng ai đó có thể cần thực hiện các thay đổi trong phần phụ trợ WordPress cục bộ trong quá trình phát triển và sau đó phải thực hiện lại những thay đổi đó trong sản xuất. Tuy nhiên, chúng tôi thấy rằng đó là điều hiếm gặp và quá trình này hoạt động khá tốt đối với chúng tôi.