Başarılı Bir Drupal 7'den 9'a Geçişin Arkasındaki Bilim (ve neden bazılarının başarısız olduğu)

Yayınlanan: 2021-12-15

Şirketinizdeki herkesin sevdiği (veya en azından hoşgördüğü) harika web sitesini daha yeni bir sisteme geçmek zorunda kaldığını hatırlıyor musunuz? Ve bunu yapmak için güvendiğiniz ekip, çiğneyebileceklerinden daha fazlasını ısırmış olabilir mi? Bir zamanlar mükemmel görünen ve işlevsel bir web sitesi olan şey, şimdi tuhaf sorunlar, düşük performans veya bazen neredeyse kullanılamaz bir site karmaşası haline geliyor.

Bu size tanıdık geliyorsa ve Drupal 7 (veya 6) sitenizi Drupal 9'a (veya 8) yükselttikten sonra garip sorunlarla karşılaşıyorsanız, lütfen bu makaleyi sonuna kadar okuyun . Site sahiplerinin Drupal 7'yi (veya 6) Drupal 9'a (veya 8) yükselttikten sonra karşılaştıkları yaygın sorunlara ve bunların nasıl çözülebileceğine gireceğiz. Bu, bir göç kurtarma için geldiğimizde gördüğümüz tüm sorunları kapsamayacak, ancak en azından sizi geceleri uyuyabileceğiniz bir noktaya getirmelidir.

Drupal 7'den Drupal 9'a

Drupal 7'den 9'a Yükseltme - Temel Zorluk

Muhtemelen kendinize sorduğunuz ilk soru, “Neden?” Drupal 7'den Drupal 9'a yükseltme (Drupal 8 artık kullanımdan kaldırıldı) platform açısından bu kadar zor olmamalı gibi görünüyor.

Drupal 8 her şeyi değiştirdi. CMS'nin daha sürdürülebilir, ilgili ve uzun vadede asılması daha kolay olabilmesi için eksiksiz bir mimari revizyona sahipti. Nesne yönelimli programlama, Symfony, Twig, en son PHP sürümleri ve (çok daha fazlası) gibi modern teknolojilerin ve çerçevelerin benimsenmesi, Drupal topluluğunun Drupal'ı oluşturmaya yardımcı olacak daha geniş bir beceri yelpazesini barındırarak katlanarak büyümesine izin verdi. Bu, Drupal web sitenizi oluşturmak ve sürdürmek için bir uzman bulmanın artık daha kolay olduğu anlamına geliyor. Harika haber şu ki, bu ilk geçişten sonra Drupal'ın gelecekteki sürümlerine (Drupal 8'den Drupal 9'a gibi) yükseltme yapmak son derece kolaydır ve yeniden oluşturma gerektirmez.

Ancak eldeki soruna geri dönersek, birçok kuruluş hala web sitesinin tamamen yeniden oluşturulmasını içeren Drupal 7'den 9'a geçiş yapıyor. Yeniden oluşturmanın kendisi, en deneyimli geliştiricilere uygun hale getirebileceği mevcut içerik yapısını korumadan yeterince karmaşıktır. Ve çoğu durumda, daha büyük web siteleri, düz bir yükseltme yoluna sahip olmayan birden çok katkıda bulunan ve özel modüllere sahip olma eğiliminde olduklarından daha da fazla dikkat gerektirir. Bütün bunlar birlikte hatalar için sonsuz fırsatlar açar.

Bu tür bir geçiş girişiminde bulunmamış ekipler için, çoğu zaman ilk Drupal 7 ila 9 geçiş hatası hazırlık eksikliğidir. Başarılı bir Drupal geçişi için ilk ve en önemli adım, mevcut web sitesi yapısının her küçük detayını analiz etmek için kapsamlı bir geçiş denetimi yaptırmaktır . Bu rapor yalnızca geçişin sonuçlarını değerlendirmenize yardımcı olmakla kalmaz, aynı zamanda iyileştirme alanları hakkında size fikir verir. Sonraki en önemli adım, özel bir Drupal geliştirme ortağının (Drupal'ı her gün soluyan biri) geçişi yapmasına izin verip vermemeye karar vermektir. Tıpkı bir kalp cerrahının baypas ameliyatı yapmasını ortopedi cerrahına tercih edeceğiniz gibi; Drupal web sitenizi oluşturmak için Drupal odaklı uzmanlaşmış bir şirkete sahip olmak başarılı bir geçişe yol açacaktır.

Taşıma Denetimi

Ortak Drupal 7 - 9 Geçiş Zorlukları

Drupal 6/7'den 8/9'a geçişten sonra en yaygın hayal kırıklığı kaynaklarından biri, sorunlarla uğraşırken nereden başlayacağınızı bilmemektir. Kodlama becerisi olsun ya da olmasın, gerçek sorunların nerede olduğunu nasıl anlarsınız? Kolay - hata günlüklerinizi kontrol edin. Biliyorum, günlüklerin ne dediğini anlamaya çalışan başka bir solucan kutusu açıyorsunuz gibi geliyor, ancak size aşağıda yaygın olanları anlatacağız.

Hata günlüklerimi nasıl bulabilirim?

  1. Yönetici -> modüller sayfanızda dblog modülünü etkinleştirdiğinizden emin olun. Bu bir çekirdek modüldür.
  2. Yönetici -> raporlara gidin
  3. Veritabanı Günlükleri'ne tıklayın. Tüm hata günlüklerinizi burada görmelisiniz.

Drupal 7'den Drupal 9'a geçişten sonra Drupal site sahiplerinin karşılaştığı en yaygın sorunlardan bazılarına doğrudan bakalım.

Web sitesi zar zor çalışıyor / bozuk

  1. Sunucu sorunları: Sunucunuza erişmek için yeterli izniniz yoksa sunucunuzun güvenliği ihlal edilebilir. Hata günlüklerine daha derin bir bakış, sorunun nereden kaynaklandığını anlamanıza yardımcı olacaktır. Bu bir sunucu sorunuysa, sunucunuza erişmek için yeterli haklara sahip olduğunuzdan emin olun. Alan yetersizliği sorunu yaşıyorsanız, bellek sınırınızı artırmak için barındırma sağlayıcınızla iletişime geçin. Bu işe yaramazsa, sunucu sorununuzdan bahsederek onlarla bir bilet oluşturun.
  2. Özel kod: Drupal 6/7 web siteniz beklenenden daha karmaşıksa, özel kodu değerlendirmek ve bunları geçişten önce uygun şekilde eşlemek yerine, basit bir kaldırma ve kaydırma gerçekleştirildi. Sayfanız yüklendiğinde tetiklenen özel koşullarınız varsa ve bununla ilişkili özel kodu bulamazsa, bozuk bir sayfayla sonuçlanırsınız. Yapmanız gereken ilk şey, özel modülleri ve kodu kontrol etmek için geçiş denetiminizde (eğer yaptıysanız) web sitesini doğru bir şekilde değerlendirip değerlendirmediğinizi kontrol etmektir. Sorun özel bir koşuldan kaynaklanıyorsa ve kod eksikse, özel kod uygulamasını oluşturmak için Drupal geliştiricinize ihtiyacınız olacaktır. İdeal olarak, herhangi bir içerik taşınmadan önce özel kod oluşturulmuş olmalıdır.
  3. Çekirdek/Katkı modülü: Bazen çekirdek veya katkıda bulunan modülünüzde zaten bir çözüm/yama içeren bilinen bir sorunla karşılaşabilirsiniz. Küçük bir araştırma bunu belirlemeye yardımcı olabilir. Yamayı bulun ve uygulayın ve gitmeniz iyi olur.
  4. Eski PHP sürümü/kitaplıkları: Yeni Drupal siteniz hala PHP'nin eski bir sürümünü veya kodunuzun bağlı olduğu kitaplıkları çalıştırıyor olabilir. Web sitenizin PHP'nin en son sürümünü ve diğer kitaplıkları uyguladığından emin olun. Ayrıca tüm sistem gereksinimlerinin ve yapılandırmalarının karşılanıp karşılanmadığını kontrol edin.

Sayfalar Düzenlenemiyor (İzin Sorunları)

  1. 500 hatası: 500 Dahili Sunucu Hatası ile karşılaştığınız için sayfaları düzenleyemiyorsanız, bunun çeşitli nedenleri olabilir (yanlış yapılandırma, hatalı kod, yanlış dizin oluşturma, toplama vb.). Ancak, daha yaygın nedenlerden biri, bunun alan biçimleri veya eksik alanlar arasındaki uyumsuzluktan kaynaklanabilmesidir. Örneğin, Drupal 7 sitenizdeki tarih alanınız doğru formatta taşınmadıysa veya değer Drupal 9 formatına dönüştürülmediyse hata verecektir. Başka bir örnek, Drupal 7'de Görüntüler alanını kullanıyor, ancak Drupal 9'da bunun yerine bir medya alanı kullanıyor olmanızdır. Bunu düzeltmenin en iyi yolu, verileri doğru şekilde depolamak için geçiş komut dosyasını düzeltmektir. Düzenlenecek yalnızca birkaç alan varsa, bir kanca güncellemesi de oluşturabilirsiniz.
  2. 403 hatası: Çoğu zaman 403 hatası, izinlerin yanlış aktarılmasından kaynaklanır. İzinlerin doğru ayarlanıp ayarlanmadığını kontrol edin. Kullanıcılarınızı yönetmek için bir modül kullanıyorsanız, bunun Drupal 9'da bulunup bulunmadığını kontrol edin. Bazen, bazı kullanıcılara erişimi kısıtlayan kancalarınız veya olay aboneleriniz olabilir. Bu koşulları kontrol edin ve yeni kurulumunuzda da uygulandığından emin olun.
  3. İzinler sayfası yanıt vermiyor: Drupal siteniz izinleri işlemek için bazı özel kodlar uyguluyor olabilir. Bu kod yeni Drupal 9 sitesinde uygulanmazsa, izinler sayfasını görüntüleyemeyebilir veya düzenleyemeyebilirsiniz (veya her ikisini birden). Zaman zaman, kullanıcıların rollerini ve kullanıcı profillerini düzgün bir şekilde taşımadan toplu olarak taşındığı durumlarla karşılaşırız. Standart bir uygulama olarak, izinleri taşımadan önce geliştiricinin özel izinler oluşturması ve bunları kişilerden/izinlerden rollere ataması gerekir.

Sefil Web Sitesi Performansı

  1. Gereksiz modüller: Modüller, Drupal sitenizin yapı taşlarıdır, dolayısıyla onları da taşımak isteyeceksiniz. Ancak bazen, her türlü soruna neden olabilecek eski Drupal 7 modüllerinin Drupal 9'a taşındığını görüyoruz. Özellikle sitenizi ağırlaştırabileceklerinden. Modüllerinizden bazılarının taşınmasına gerek olmamasının bazı nedenleri şunlardır:
    • Modül (veya işlevselliği) zaten Drupal Core'a taşındı. Örneğin, Medya katkısı modülü, katkıda bulunan modülü kullanma ihtiyacını ortadan kaldıran Drupal 8.5'te çekirdeğe taşındı.
    • İşlevselliği basittir ve başka bir özel modüle eklenebilir. Örneğin, bir node::postSave modülü, kullanıcının düğüm oluşturulduktan sonra nereye gitmesi gerektiğini seçmek için yalnızca bir veya iki içerik türü için kullanılıyorsa, bunun yerine kodu özel bir modüle taşımak mümkün olabilir.
    • Modül gereksinimlerinin yeniden değerlendirilmesi gerekiyor. Bazen, kullanılabilirlikteki küçük bir değişiklik, web sitesi performansını büyük ölçüde iyileştirebilir. Örneğin, içerik pazarlama ekibi büyük ve dağıtılmış olmadıkça, tüm web sitelerinin bir İçerik Denetleme modülüne gerçekten ihtiyacı yoktur. Drupal'ın temel editoryal iş akışı özellikleri (Taslak, Yayınlama), karmaşık / ayrıntılı bir iş akışı gerektirmeyen çoğu iş gereksinimi için yeterince iyidir.
    • Bazen, alt modüller modüllerle birlikte kurulur ancak nadiren/hiç kullanılmaz. Bu tür alt modüller kaldırılmalıdır.
  2. Aynı mimariyi kopyalamak: Bir taşımayı kaldırmak ve kaydırmak ve ellerinizi tozdan arındırmak daha kolay olsa da, bu neredeyse hiçbir zaman iyi bir yaklaşım değildir. Özellikle eski (Drupal 6/7) mimarisi dağınık ve daha az sağlamsa. İş mantığında/gereksinimlerinde yapılacak bir değişiklik, eksiksiz bir yeniden mimariye de ihtiyaç duyabilir. Kapsamlı bir saha denetimi, tam olarak hangi modüllerin tutulması gerektiğini ve nelerin güvenli bir şekilde ortadan kaldırılabileceğini size söyleyecektir.

Üçüncü Taraf Entegrasyonları Artık Çalışmıyor

  1. Eski API sürümü: Web siteniz Salesforce, Marketo, Mailchimp vb. gibi farklı üçüncü taraf araçlara bağlıysa, yanlış yürütülen bir geçiş bu entegrasyonların nasıl çalıştığını etkileyebilir. Genellikle Drupal entegrasyon modülünde aradığınız API daha eski bir sürümdür. Tek düzeltme, entegrasyonun üçüncü taraf API'nin en son sürümünde yazılması gerektiğidir.
  2. Entegrasyon modülü sorunları: Entegrasyon modülünde üçüncü taraf API'lerinin doğru çağrıldığını kontrol etmeniz gerekecektir. Parametreler uygun şekilde aktarılıyor mu? Nasıl ayarlandıklarını ve alındıklarını kontrol edin. Bu entegrasyon modülü için sorun kuyruğunu kontrol edin. Uygulanması gereken bir yama mevcut olabilir. API'nin Drupal 9'a düzgün şekilde taşındığından emin olmak için uygun testler yapılmalıdır.

Diğer Genel Sorunlar ve Düzeltmeler

  1. Modül kurulumu: Modülleri kurmak için her zaman oluşturucuyu kullanın. Bu, geçersiz/kullanılamayan bağımlılıklardan kaynaklanan hataları önleyecektir.
  2. Taşıma kaynağı uyuşmazlığı: Taşıma kaynağınız ne olursa olsun (CSV, Veritabanı, JSON, XML), kaynak alanların hedef alanlarla eşleştiğinden emin olun. Kaynağınız olarak CSV kullanıyorsanız, içe aktarma sırasını göz önünde bulundurun - içerik türlerinin eşlenmesi için öncelik önemlidir.
  3. Görüntü yolları: Çoğu zaman, kullanıcılar görüntüleri doğrudan CKEditor içeriğine ekler. Konumları genellikle diğer medya dosyalarının bulunduğu yerden farklı olduğundan, bu görüntüler taşınırken her zaman belirlenen yola gitmez. Titizlikle planlanmış bir göç bu konuyla ilgilenmelidir.
  4. SEO: İhmalkar bir Drupal 7'den 9'a geçiş, web sitenizin SEO'sunu birçok yönden etkileyebilir. En önemli sorunlardan biri kırık linklerdir. Herhangi bir değişiklik tonlarca bozuk bağlantıya yol açabileceğinden, mevcut URL yapısının ve gezinmenin korunduğundan emin olun. Yolda herhangi bir çarpma olmadığından emin olmak için eksiksiz bir SEO denetimi yapılmalıdır.
  5. Drupal 7 Stili: Genellikle Drupal 7'den Drupal 9'a geçiş sorunları (özellikle performans sorunları), geliştiricilerin Drupal 8 tarafından getirilen değişikliklere uyum sağlamak yerine Drupal 7 ile aynı kodlama stilini kullanması nedeniyle ortaya çıkar. Örnekler, (a) öldürme şekliniz. sayfa önbelleği Drupal 8'de çok farklıdır. (b) Drupal 8 yerleşik yapılandırma yönetimine sahiptir, ancak genellikle her ortamda doğru şekilde uygulanmaz veya iyi korunmaz. (c) Drupal 8 projesinin hala prosedürel kod stili uyguladığı durumlarla da karşılaştık.