Per, 01/16/2020 - 15:58 By Umit
Drupal güncelleme rehberi

Drupal 8.8'e güncellemek, sitenizi Drupal 9 için hazırlamanın ilk adımıdır. Şu anda bir Drupal 8 sitesi çalıştırıyorsanız ve 2020 yazında piyasaya sürüldüğünde Drupal 9'a yükseltmek istiyorsanız, ilk adım yakın zamanda piyasaya sürülen Drupal 8.8'e güncelleme yapmaktır.

Drupal 8.8, kullanımdan kaldırılmış API'ları ve Drupal 9'da standart hale gelecek yeni API'ları içerir, bu nedenle siteniz 8.8'e girdikten sonra, katkıda bulunan modüllerinizi incelemeye ve özel kodunuzu kullanımdan kaldırılmış API'lardan Sanat. 9.0 sürümüne yeni özellik eklenmeyecek, bu da 8.8'in 8.x ve 9.x arasındaki yükseltme yolunu kolaylaştırmak için özellik paritesine sahip olduğu anlamına geliyor.

8.8 güncellemesi önceki Drupal 8 nokta sürümlerinden daha fazladır, çünkü 8.8 bazı yapılandırma değişkenlerini yeniden adlandırır ve composer.json'daki çekirdek drupal paketlerini ve bağımlılık yapısını değiştirir; . Magnec'de ki ekibimiz hem aktif geliştirme hem de destek konusunda birçok Drupal 8 sitesini barındırıyor ve sitenizi 8.8'e güncellerken akılda tutulması gereken bazı önemli ipuçlarını belgeledik.

Güncelleme işlemine genel bakış modül çakışmaları: Siteniz Pathauto, Workspace veya coder katkıda bulunan modülleri kullanıyorsa, önce bunları güncelleyin.

Settings.php'yi güncelle: temp ve config sync dizini değişkenlerini değiştirin.
Php Composer.json dosyasını güncelleyin: composer.json dosyasını el ile güncelleyin Drupal veritabanı güncellemelerini çalıştırın
Değiştirilmiş yapılandırmayı dışa aktar Pathauto Pathauto modülünü inşa ettiğimiz tüm sitelerde kullanıyoruz ve Pathauto'nun bu güncelleme işleminde biraz tutmaya ihtiyacı var.
Hala Drupal core 8.7'deyken Pathauto'yu güncellemezseniz, yol takma adı verilerinizi kaybedebilirsiniz!

Pathauto

Pathauto modülünü inşa ettiğimiz tüm sitelerde kullanıyoruz ve Pathauto'nun bu güncelleme işleminde biraz tutmaya ihtiyacı var. Hala Drupal core 8.7'deyken Pathauto'yu güncellemezseniz, yol takma adı verilerinizi kaybedebilirsiniz!

Siteniz hala Drupal 8.7 çalıştırırken, Pathauto'yu en son sürüme güncelleyin (8.x-1.6):

composer require drupal/pathauto:^1.6

Veritabanı güncellemelerini çalıştırın:

drush updatedb

Drupal 8.8 güncellemenize başlayın

Workspace

Workspace sitelerimizde yaygın değildir, bu nedenle bir sorunla karşılaşmak genellikle biraz araştırma yapmak anlamına gelir. Workspace modülü çekirdeğe taşındı ve "Workspaces" olarak yeniden adlandırıldı; her iki modülü de aynı siteye yüklemek, kod düzeyinde çakışmalar yaratır. Ayrıca, Drupal 8.8 sürümü, temel İçerik Content Moderation ile katkıda bulunan Workspace modülü arasında bir uyumsuzluk sunar.

Aralık 2019 itibarıyla, katkıda bulunan modülden çekirdek modüle hazır bir yükseltme yolu yoktur; öneri, henüz yayınlanmamış tüm çalışma alanı içeriğini silecek olan katkıda bulunan modülü kaldırmak ve daha sonra çekirdek modülünü [dokümantasyon] kurmaktır.

Workspace modülündeki bu hata raporunu kontrol edin

Şimdilik, Workspace modülünü ve çekirdek Content Moderation modülünü kullanıyorsanız, Drupal 8.8'e güncelleme yapamayacaksınız

Coder
Drupal kodlama standartlarına göre otomatik kod incelemesi yapmak için Coder kullanıyorsanız , güncellemeniz gerekebilir. Drupal 8.8, en az 8.3.2 sürümünü gerektirir.

Coder sürümünüzü kontrol edin:
composer show drupal/coder
Sürümle birlikte paket bilgilerini göreceksiniz - bu durumda, 8.2.10:

[ 3:15P ~/repos/example] (develop) $ composer show drupal/coder
name     : drupal/coder
descrip. : Coder is a library to review Drupal code.
keywords : code review, phpcs, standards
versions : * 8.2.10
type     : library
...

Paketi güncelleyin:
composer require drupal/coder:^8.3.2

Settings.php güncelleyin
Önce settings.php dosyanızı bulun; bu, adresindeki Drupal sitenizde sites/default/settings.php veya benzeri adında bir içerme dosyası olabilir sites/default/settings.*.php.

Senkronizasyon dizinini yapılandır
Yapılandırma senkronizasyon dizini, Drupal'ın dışa aktarılan yapılandırma YAML dosyalarınızı depoladığı yerdir. Drupal 8.8'den önce, config dışa aktarmak için birden fazla dizin yapılandırabilirsiniz; şimdi sadece bir tane var ve değişken adı değişti.

Değişken settings.phpiçin dosyaları kontrol edin $config_directories:

$config_directories = [];
$config_directories[CONFIG_SYNC_DIRECTORY] = '../config/sites/default';
Bunu (orijinal yolunuzu kullanarak) aşağıdakilerle değiştirin:

$settings['config_sync_directory'] = '../config/sites/default';

DAHA FAZLA BİLGİ
Senkronizasyon dizini $ config_directories değil, $ settings içinde tanımlanır
Geçici (geçici) dizin
Temp dizini genellikle ana makinenize veya Drupal sitenizin çalıştığı ortama özgüdür, bu nedenle bunu üretim ve yerel geliştirme için farklı olarak ayarlamanız gerekebilir.

settings.php Geçici dizin yapılandırması için dosyalarınızı kontrol edin :

$config['system.file']['path']['temporary'] = $_ENV['TEMP'];

Bunu (ortama özgü yolunuzu kullanarak) aşağıdakilerle değiştirin:

$settings['file_temp_path'] = $_ENV['TEMP'];

DAHA FAZLA BİLGİ
Acquia barındırma üzerinde, geçici dizin yolu, $_ENV['TEMP']yukarıdaki snippet'lerde gösterildiği gibi ortam değişkeninde bulunabilir .
Composer.json dosyasını güncelleyin
Drupal 8.8, çekirdek ve ayrılmış dev bağımlılıklarında iskele ayrı bir pakete soktu. Drupal'ın çalışması için gerekli olan çekirdek / dizin içinde index.php gibi temel dosyaları yönetir .htaccess. drupal-composer/drupal-scaffold Değiştirilmesi gereken bu amaç için zaten kullanıyor olabilirsiniz .

Bu değişiklikler mevcut paketlerin değiştirilmesini ve besteci eklentisi yapılandırmasının güncellenmesini içerdiğinden, el ile uygulamanız gerekir composer.json.

drupal/core-composer-scaffold Paketi kullanın

Kendinizi composer.json ve require bölümünüzü düzenleyin :

"drupal/core-composer-scaffold": "^8.8",
Kullanıyorsanız, bu drupal-composer/drupal-scaffoldpaketin yerini almalıdır .

Bu bir composer eklentisidir ve extra bölümünde yapılandırılmalıdır composer.json. drupal-scaffoldY apılandırmayı ekleyin veya güncelleyin :

        "drupal-scaffold": {
            "locations": {
                "web-root": "web/"
            },
            "allowed-packages": [
                "drupal/core"
            ],
            "file-mapping": {
                "[web-root]/.htaccess": {
                    "mode": "replace",
                    "path": "web/core/assets/scaffold/files/htaccess",
                    "overwrite": false
                }
            }
        },

web-root Konumu iki kez kontrol edin ve web/gerekirse değiştirin - örneğin, Acquia'da barınıyorsanız, bunu olarak ayarlayın docroot/.

Ayrıca file-mapping bölümü kontrol edin ve değerinin path doğru olduğundan emin olun. Bu file-mapping yapılandırma, .htaccess özelleştirdiyseniz dosyanızın üzerine yazılmasını engelleyecektir, ancak bunun dışında bırakılabilir.

DAHA FAZLA BİLGİ

Drupal'ın composer İskelesini Kullanma
Yeni drupal/core-recommended paketi Composer gereksinimlerinize ekleyin
Bu, temel Drupal gereksinimlerinizi yükleyecektir.

Kendinizi composer.json düzenleyin ve require bölümde drupal/corepaketi değiştirin :

"drupal/core-recommended": "^8.8",

Yeni drupal/core-dev paketi Composer geliştirici gereksinimlerinize ekleyin
Bu, otomatik test gibi şeyleri çalıştırabilmeniz için isteğe bağlı, geliştirmeye özgü çekirdek bağımlılıklar yükler.

Kendinizi composer.json ve geliştirici bölümüne düzenleyin, şunları ekleyin:

"drupal/core-dev": "^8.8",

Kullanıyorsanız, bu webflo/drupal-core-require-devpaketin yerini almalıdır .

Son olarak, Composer'ı çalıştırın
Artık güncellediğimizi composer.json dosyayı paketinizi güncellemek için composer çalıştırın. Yalnızca değiştirdiğiniz paketleri (ve her paketi aynı anda değil) güncellemek için şunu çalıştırın:

composer update --lock

COMPOSER YÖNELİK SORUN GİDERME
Blogunuza Bu değişiklikleri yaptıktan sonra composer.json çalıştırdığınızda, aşağıdaki hata görebilirsiniz composer install ve ya composer update:

Installation failed, reverting ./composer.json to its original content.
[RuntimeException]
Could not delete /srv/users/serverpilot/apps/sandbox/drupal/web/sites/default/default.services.yml:
Bunun nedeni, (besteci yükleme ve güncellemesinde çalışan) iskele sites/default/dizininize dosya yazmaya çalıştığı , ancak izinleri olmadığı için olur. Bunu aşağıdakilerle çözebilirsiniz:

chmod +w web/sites/default

Güncelleme komut dosyalarını çalıştırma
Son olarak, normal Drupal güncelleme işlemini yapmanız gerekir: veritabanı dışa aktarmalarını çalıştırın ve yapılandırma değişikliklerini dışa aktarın:

drush updatedb
drush config:export

VERİTABANI GÜNCELLEMELERİNDE SORUN GİDERME
Veritabanı güncellemelerini aynı ortamda birden çok kez test ediyorsanız, bu hatayla karşılaşabilirsiniz:

[error] Update failed: system_update_8804
Bunun nedeni system_update_8804 yeni veritabanı tabloları oluşturmasıdır. drush sql-sync Güncellemeyi üretim veritabanının bir kopyasına karşı sınamak ve yeniden sınamak için kullanıyorsanız , önceki bir çalıştırma tarafından oluşturulan tabloları silmek için önce yerel veritabanınızı temizlemeniz gerekir drush sql-drop.

Sırada ne var?
Siteniz Drupal 8.8 olarak güncellendiğinde, şu anda 3 Haziran 2020'de veya bu tarihte beklenen Drupal 9'a yükseltme için iyi durumda olacaksınız. Şimdilik diğer Drupal katılımcılarıyla birlikte çalışacağız. katkıda bulunan önemli modüllerin Drupal 9 için hazır olduğundan emin olmak ve müşterilerimizin sitelerindeki özel kod ve modüllerin kullanımdan kaldırılmış API'lardan arınmış olduğundan emin olmalarına yardımcı olmak. Daha fazlası için bizi takip etmeye devam edin!