Cách ngăn chặn mô-đun Devel được cài đặt trên môi trường sản xuất


26

Sử dụng trình quản lý cấu hình Drupal 8 mới, làm cách nào tôi có thể ngăn nó cài đặt mô-đun Devel trên một số môi trường nhất định? Theo như tôi biết, cài đặt nó vào cục bộ của tôi có nghĩa là lần sau khi tôi xuất cấu hình và chuyển nó sang các môi trường khác (dev, test, prod), nó sẽ tự động được kích hoạt.


Được sử dụng drushcó chấp nhận được không? Tôi phát hiện ra ngày khác về drush config-export --skip-modules=devel. Có thể có một cái gì đó tương tự mà không sử dụng drush, nhưng tôi không biết.
mradcliffe

Vì vậy, tôi phải làm điều đó mỗi khi tôi xuất cấu hình? Phải có một cách tốt hơn: |
cambraca

Có lẽ bạn có thể thêm một số tệp cấu hình vào .gitignore của bạn.
Digitaldonkey


2
Tôi nghĩ rằng câu hỏi này là quá rộng khi nhìn lại. Có lẽ có nhiều câu trả lời tốt bởi vì nó phụ thuộc vào quá trình xây dựng và phát triển cho trang web.
mradcliffe

Câu trả lời:


18

Phương pháp: Drush

  • Drush có thể bỏ qua các trạng thái mở rộng được kích hoạt khi đồng bộ hóa cấu hình.

    drush cex --skip-modules=devel

    drush cim --skip-modules=devel

  • Với các công cụ Drush CMI, bạn có thể thao tác với một danh sách cấu hình để bỏ qua.

    drush cexy --ignore-list=/path/to/config-ignore.yml

    drush cimy --delete-list=/path/to/config-ignore.yml

Phương pháp: Mô-đun

  • Bạn có thể sử dụng mô-đun Chia cấu hình cho phép bạn:

    1. Tách một số cấu hình cho thư mục chuyên dụng
    2. Cấu hình danh sách đen
    3. Bỏ qua một bộ cấu hình
    4. Cấu hình bởi các thực thể cấu hình
  • Cấu hình mô-đun chế độ chỉ đọc

    Mô-đun này cho phép khóa mọi thay đổi cấu hình được thực hiện thông qua giao diện người dùng quản trị viên Drupal. Điều này có thể hữu ích trong các tình huống trong đó các thay đổi cấu hình ví dụ không nên được thực hiện trên môi trường sản xuất, mà chỉ trên các môi trường dàn dựng hoặc cục bộ.

    $settings['config_readonly'] = TRUE;

  • Và một mô-đun khác là Cấu hình Môi trường cho phép bạn ghi đè cấu hình trên cơ sở từng môi trường.


2
Tôi thực sự không thích có tất cả các phụ thuộc thư viện cho mô-đun phát trên các máy chủ sản xuất của mình, vì vậy tôi thêm nó vào trình soạn thảo bằng cách sử dụng composer require --dev drupal/devel. Phần thưởng được thêm vào là cài đặt trình soạn thảo nhanh hơn, giúp triển khai prod nhanh hơn.
Duncanmoo


6

Cập nhật : Tính năng được mô tả bên dưới đã bị xóa gần đây https://www.drupal.org/project/config_split/issues/2926505


Nếu bạn đang sử dụng drush trong quá trình triển khai, bạn có thể làm như sau:

Tạo một drushrc.phptệp trong cùng thư mục với settings.php(ví dụ docroot/sites/default:) và đặt các mục sau:

$drush_ignore_modules = array(
  'devel',
  'webprofiler',
  'devel_generate',
  'kint',
  'yaml_editor',
);

$command_specific['config-export']['skip-modules'] = $drush_ignore_modules;
$command_specific['config-import']['skip-modules'] = $drush_ignore_modules;

Điều này có nghĩa là, bạn có thể thao tác các lệnh drush cex/ drush cimđể bỏ qua các mô-đun, trong quá trình của chúng.

Bạn có thể đọc thêm về Sử dụng Bộ lọc Mô-đun Cấu hình trong Drush 8 .


5

drush cex --skip-modulesđã được gỡ bỏ có lợi cho config_split như được giải thích trong vấn đề này, do đó các giải pháp ở đây dựa trên drush đã không làm việc cho tôi.

Đây là giải pháp dựa trên giải pháp Duncanmoo bằng mô-đun config_exclude

1. Cài đặt config_exclude bằng Trình soạn thảo yêu cầu --dev và định cấu hình nó

$ composer require --dev drupal/config_exclude
$ drush en config_exclude -y
$ nano sites/default/setting.php

cho phép settings.php được sử dụng trên môi trường dev cục bộ của bạn

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}

Thêm cài đặt config_exclude trong tệp cục bộ

$ nano sites/default/setting.local.php

đây là một số cài đặt mẫu

$settings['config_exclude_modules'] = [
    'devel', 
    'config_exclude',
    'config_filter',
    ...
    'stage_file_proxy',
];

NOTE1: config_filter là một phụ thuộc config_exclude vì vậy nếu bạn không cần sản xuất, bạn có thể loại trừ nó ở trên

CHÚ THÍCH 2: Đây settings.local.phpkhông phải là một yêu cầu. Nó phụ thuộc vào việc có được kiểm soát bởi VCS của bạn hay không.

2. Nhà soạn nhạc yêu cầu --dev

Khi kích hoạt một mô-đun hoàn toàn để phát triển, hãy sử dụng cờ --dev:

$ composer require --dev drupal/devel

Điều này dẫn đến những phụ thuộc được thêm vào tệp composer.json theo yêu cầu-dev:

...
    "require-dev": {
        "drupal/twig_xdebug": "^1.0",
        "drupal/devel": "^1.0@RC"
    }
}

Vì vậy, nếu bạn cài đặt trang mà KHÔNG CÓ mô-đun dev của bạn, bạn sử dụng:

$ composer install --no-dev

LƯU Ý: Trên môi trường dàn dựng và sản phẩm của bạn, bạn nên luôn luôn làm - không-dev

3. sử dụng cush drush như bạn thường sử dụng

$ drush cex 

sẽ không xuất bất kỳ cài đặt mô-đun loại trừ

LƯU Ý: Tôi đã nhận thấy các cài đặt core.extension dường như đã được sửa đổi sau khi chạy lệnh ở trên nhưng .yml tương ứng không bao giờ được ghi trên ổ cứng (ngay cả sau khi xác nhận will be deleted and replaced with the active config) vì vậy không có gì phải cam kết, tôi đoán nó phụ thuộc vào nội bộ của mô-đun config_exclude


Tôi đã có trải nghiệm rất giống như @GiorgosK sau những gợi ý ở trên. Giải pháp này đã làm việc hoàn hảo cho tôi và cũng chứa đựng lời khuyên. Tôi cũng nhận thấy core.extension phủ định sai nhưng nó thực sự KHÔNG thay đổi trạng thái cho git vì vậy tất cả đều tốt. Cảm ơn
vrwired

2

Có một vấn đề thú vị đối với Drupal 8.3.x: Cho phép các mô-đun phát triển từ chối xuất cấu hình . Sự đồng thuận chung là Cấu hình phân chia hiện là giải pháp tốt nhất.

Nhận xét của swentel :

Chỉ muốn ghi lại ngắn gọn cách thức hoạt động của config_split: Thực thể config config config xác định danh sách đen, cho phép bạn liệt kê các mô-đun và / hoặc các đối tượng cấu hình. Ví dụ chính tắc, là devel, đã có một trường hợp sử dụng thú vị: nó đi kèm với system.menu.devel, trong trường hợp bạn liệt kê danh sách đen, tệp cấu hình menu sẽ không bị xóa do không có phụ thuộc. Mặc dù nó không phải là một vấn đề lớn, phân chia cấu hình cho phép bạn chọn riêng nó cũng như vậy để loại bỏ nó trên môi trường.

Nhận xét của ge Muffguy :

Tôi đã thử một vài phương pháp khác nhau để quản lý cấu hình dành riêng cho môi trường và config_split dường như đạt được khả năng sử dụng đúng so với cân bằng chi phí bổ sung tốt nhất cho đến nay. Nó đơn giản và nhẹ, nhưng cho phép tôi đánh dấu (và tiếp tục sử dụng) cấu hình nhất định chỉ trong một số môi trường nhất định.


2

Cấu hình Split có thể là một giải pháp khả thi cho một số.

Quản lý cấu hình Drupal 8 hoạt động tốt nhất khi nhập và xuất toàn bộ bộ cấu hình trang web. Tuy nhiên, đôi khi các nhà phát triển muốn từ chối sự mạnh mẽ của CM và có một bộ cấu hình siêu hoạt động trên máy phát triển của họ và chỉ triển khai một tập hợp con. Ví dụ điển hình cho việc này là để mô-đun phát được kích hoạt hoặc có một vài vị trí khối hoặc chế độ xem trong môi trường phát triển và sau đó không xuất chúng vào bộ cấu hình sẽ được triển khai, nhưng vẫn có thể chia sẻ cấu hình phát triển với các đồng nghiệp.

https://www.drupal.org/project/config_split


+1 để phân chia cấu hình, tôi luôn sử dụng điều đó để có Devel và các mô-đun khác như Giao diện người dùng trường và Giao diện người dùng bị tắt trong prod. Xem Vô hiệu hóa các mô-đun bằng cách sử dụng phân tách cấu hình .
leymannx

2

Có một cách gọn gàng để thực hiện việc này, trong đó bạn kết thúc với các mô-đun dev được cam kết trong trình soạn thảo để thuận tiện và cấu hình của các mô-đun đó không được thêm vào xuất cấu hình của bạn (có 2 phần):

1. Trình soạn thảo yêu cầu --dev Khi kích hoạt một mô-đun hoàn toàn để phát triển, hãy sử dụng cờ --dev:

$ composer require --dev drupal/devel

Điều này dẫn đến những phụ thuộc được thêm vào tệp composer.json theo yêu cầu-dev:

...
    "require-dev": {
        "drupal/twig_xdebug": "^1.0",
        "drupal/devel": "^1.0@RC"
    }
}

Vì vậy, nếu bạn cài đặt trang mà KHÔNG CÓ mô-đun dev của bạn, bạn nói:

$ composer install --no-dev

NB: Trên môi trường dàn dựng và sản phẩm của bạn, bạn nên luôn luôn làm - không-dev

2. Sử dụng mô-đun config_split

Mô-đun phân chia cấu hình cho phép bạn tạo các nhóm xuất cấu hình có thể được bật hoặc tắt trong môi trường.

Tôi thực sự có 3 lần chia tách:

  1. Cấu hình trang web chính (được bật ở mọi nơi; dev và dàn dựng và sản xuất)
  2. Cấu hình dàn (được bật trong dev và staging) - bao gồm định tuyến lại mô-đun email
  3. Dev config - bao gồm devel, kint ... nhưng không định tuyến lại email vì đi kèm với việc cấu hình dàn được kích hoạt trong dev.

1
Bạn thực sự không nên sử dụng phụ thuộc dev theo cách này. Chúng là nhiều hơn cho các công cụ, chẳng hạn như sniffer mã, mà bạn sẽ không cần phải chạy trong sản xuất. Nếu chúng được kích hoạt và Drupal đang mong đợi mô-đun được cài đặt và mã không có thì điều này có thể dẫn đến sự mất ổn định của trang web. Drupal / Composer vẫn có thể cố tải một tệp không nằm trong hệ thống tệp nếu đó là phụ thuộc dev.
Frank Robert Anderson

@FrankRobertAnderson bạn không đề xuất giải pháp nào tốt hơn? Tôi không muốn mô-đun phát hoặc thư viện phụ thuộc trên máy chủ sản xuất của mình, bạn đề xuất gì?
Duncanmoo

Drupal không thực sự cung cấp một lựa chọn tốt cho việc này. Kế hoạch của bạn không khủng khiếp, nhưng nó sẽ dẫn đến các vấn đề nếu bạn không cẩn thận. Vấn đề tôi gặp phải với kế hoạch của bạn là config_split trở thành mã pin mà toàn bộ trang web của bạn sau đó có bản lề. Tôi sẽ bỏ phiếu của bạn nếu không phải vì điều phụ thuộc dev, thậm chí không phải là một câu hỏi trong OP.
Frank Robert Anderson

1

Tôi đã tạo một kịch bản nhỏ để làm tất cả trong một lần.

#!/bin/bash

drush pm-uninstall devel -y
drush pm-uninstall field_ui -y
drush pm-uninstall field_name_prefix_remove -y

drush config-export

drush en devel -y
drush en field_ui -y
drush en field_name_prefix_remove -y

1

Bạn cũng có thể thấy mô-đun Cấu hình Bỏ qua .

Mô-đun này là một công cụ để cho phép bạn giữ cấu hình bạn muốn, đúng chỗ.

Hãy nói rằng bạn muốn cấu hình system.site (chứa tên trang web, slogan, email, v.v.) để không bị ảnh hưởng, trên trang web trực tiếp của bạn, bất kể cấu hình, trong thư mục xuất khẩu nói gì.

Hoặc có thể bạn cảm thấy mệt mỏi khi thay đổi devel.sinstall mỗi khi bạn nhập cấu hình?


Mô-đun Cấu hình Bỏ qua không phù hợp trong trường hợp này. Từ trang mô-đun: Đừng bỏ qua cấu hình core.extension vì nó sẽ ngăn bạn kích hoạt các mô-đun mới với nhập cấu hình. Sử dụng mô-đun Split Split cho các mô-đun cụ thể cho môi trường.
bmunlow

1

Bạn có thể sử dụng một mô-đun ghi đè triển khai cho việc này. Đọc liên kết sau để mô tả chi tiết:

http: // d Motorcycleproject.org/blog/46/continupt-deployment-drupal-style

Tuy nhiên , cách tốt nhất để làm điều này là vô hiệu hóa mô-đun của bạn trên cục bộ và sau đó xuất cấu hình.

Drupal cung cấp một cách để ghi đè cài đặt cấu hình settings.php, nhưng chúng không hợp lệ để vô hiệu hóa / kích hoạt các mô-đun.

Từ default.settings.php:

/**
 * Configuration overrides.
 *  * To globally override specific configuration values for this site,
 * set them here. 
 * 
 *
 * blah..blah...blah
 *
 *  
 * There are particular configuration values that are risky to override. For
 * example, overriding the list of installed modules in 'core.extension' is not
 * supported as module install or uninstall has not occurred. Other examples
 * include field storage configuration, because it has effects on database
 * structure, and 'core.menu.static_menu_link_overrides' since this is cached in
 * a way that is not config override aware. Also, note that changing
 * configuration values in settings.php will not fire any of the configuration
 * change events.
 */
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.