Làm cách nào để tôi triển khai / quản lý các trang web tương tự từ một hồ sơ duy nhất, không có bãi chứa?


15

Tôi không thích các giải pháp "trang web nhân bản " ngụ ý việc bỏ cơ sở dữ liệu và nhập bãi rác này vào một môi trường khác. Điều này không giống như một cách trong thế giới thực để triển khai một số phiên bản của cùng một trang web (dàn / prod / dev / vv).

Với D7, chúng tôi thường sử dụng các cấu hình tùy chỉnh và sử dụng drush để cài đặt các trang web từ các cấu hình này (và có thể sử dụng các tính năng để đồng bộ hóa trang web sau này). Điều này cung cấp cho chúng tôi các cài đặt mới, không có nội dung kiểm tra, nhưng chia sẻ các cài đặt quan trọng. Đồng bộ hóa nội dung phổ biến sẽ được thực hiện với di chuyển, ví dụ.

Tôi đã cố gắng quản lý một số phiên bản D8 chia sẻ cùng một cấu hình cài đặt. Trường hợp mục tiêu cuối cùng sẽ là chia sẻ và đồng bộ cấu hình trang web. Và mỗi cài đặt có một trang web UUID khác nhau. Tôi không thành công trong việc thực thi system.site uuidbiến cấu hình khi cài đặt (tất nhiên tôi có thể thay đổi giá trị sau này, nhưng dường như điều này là quá muộn và tất cả các đối tượng đã được tạo bằng các UUID khác nhau, điều này khiến cho việc đồng bộ hóa đầu tiên trở thành cơn ác mộng , trong đó một số nội dung mặc định phải bị xóa hoặc ngôn ngữ mặc định làm hỏng đồng bộ hóa vì không thể xóa được, v.v.).

Để thực thi UUID này, tôi đã thử sử dụng tệp settings.php được tạo với $config['system.site']['uuid']giá trị bên trong, thất bại lớn (cài đặt hoàn toàn bị bỏ qua, ngay cả sau khi cài đặt trang).

Tôi cũng đã xem xét hồ sơ trình cài đặt cấu hình mà tôi hoàn toàn không hiểu, đặc biệt là cách trộn giải pháp này với hồ sơ cài đặt khác.

Vì vậy, câu hỏi là, cách tốt nhất để triển khai các trang web mới từ một hồ sơ cài đặt là gì:

  • không có "nhân bản trang web" và thao tác các bãi chứa SQL khi tạo trang web (như trong câu hỏi về các trang web nhân bản là gì ).
  • với bản cài đặt sạch mới (không có rác nội dung của nhà phát triển), chỉ sử dụng cấu hình và mã được xuất
  • có thể quản lý cả cài đặt mặc định cấu hình và đồng bộ hóa sau này

Câu trả lời:


3

Các tính năng có thể giúp bỏ qua vấn đề UUID. Nó vẫn có lỗi, điều này ngăn chúng tôi tự động hóa hoàn toàn quy trình, nhưng ít nhất chúng tôi có thể thay đổi và duy trì cấu hình theo cách thủ công.

Các tính năng vẫn tạo các mô-đun, nó xuất cấu hình vào thư mục config / install của mô-đun tính năng đã cho. Điều này sẽ được chọn khi bạn cài đặt tính năng này và bạn có thể tiếp tục cập nhật cấu hình trang web của mình (tương tự như những gì các tính năng drush cũ đã hoàn nguyên) khi tính năng của bạn thay đổi.

Bạn cũng có thể nhập cấu hình trực tiếp qua drush, đảm bảo sử dụng cờ --partial, để tránh ghi đè cấu hình không có trong thư mục cấu hình. Sử dụng - nguồn bạn cũng có thể xác định vị trí thư mục cấu hình tùy chỉnh, do đó bạn có thể làm một cái gì đó như drush cim --partial --source=docroot/modules/features/myfeature/config/install.


ok, nếu tôi hiểu rõ về nó, bạn sử dụng tính năng để đồng bộ hóa cấu hình trang web trên các tính năng của phím soime . Không cho phép đồng bộ cấu hình đầy đủ của các trang web nhân bản.
regilero

2
Chính xác. Đối với chúng tôi, vấn đề cơ bản với đồng bộ cấu hình đầy đủ là chỉ cần một cài đặt mà quản trị viên có thể thay đổi và bạn không thể đồng bộ hóa nữa, vì điều đó sẽ hoàn nguyên thay đổi của họ. Việc chia nó thành các khu vực tính năng cho phép chúng tôi a) duy trì một bộ cấu hình (một phần, vì chúng tôi hiểu nó là gì) và b) vẫn linh hoạt trên các tính năng còn lại và cách chúng tôi quản lý cấu hình của chúng.
Balazs Dianiska 2/2/2016

Ok, đây có thể không phải là câu trả lời dứt khoát nhưng tôi sẽ cho bạn tiền thưởng. Nếu ai đó muốn thêm một câu trả lời cập nhật sau (vì mọi thứ đang chuyển động) tôi có thể mở lại một tiền thưởng khác cho điều đó.
regilero

1

Một lựa chọn khác:

drush config-set system.site uuid 56974bf2-68c2-3453-a211-de8bc754cc23

1

Dựa trên gợi ý @Ivan Jaros, bạn có thể đặt các tùy chọn cấu hình nhất định khi cài đặt cấu hình. Rõ ràng, điều này chỉ hoạt động khi cài đặt và không một khi một trang web đã được cài đặt.

Trong tệp .install của hồ sơ của bạn, bạn có thể thêm vào cài đặt cấu hình mặc định trong hook_install():

\Drupal::configFactory()
  ->getEditable('system.site')
  ->set('uuid', 'this is my new uuid')
  ->save(TRUE);

Tôi đã thử điều này tại địa phương và nó hoạt động. Tôi đã có thể kéo cấu hình từ một trang web khác vào một trang web cục bộ mới được cài đặt bằng cách sử dụng mã ở trên (với bộ UUID phù hợp) mà không cần sử dụng drush csetđể thay đổi UUID của trang web.

Có lẽ, bạn có thể đặt UUID của mình được lấy từ một tệp trên môi trường của bạn ở đâu đó, hoặc một biến môi trường hoặc dịch vụ, và do đó tất cả chúng sẽ giống nhau trên bất kỳ trang web nào có cấu hình đó được cài đặt.

Tôi hy vọng có thể làm một điều tương tự từ settings.phpnhưng ConfigFactorylớp không có sẵn tại thời điểm đó và khi bạn chỉ ra trong câu hỏi của bạn thiết lập nó qua $configtrong settings.phpkhông có tác dụng.

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.