Takip et

Docker ve DDEV Kullanarak Yerel Makinenizde Drupal 9 Web Sitesi Geliştirme Rehberi

Docker ve DDEV Kullanarak Yerel Makinenizde Drupal 9 Web Sitesi Geliştirme Rehberi Giriş: Modern Drupal Geliştirmenin Temelleri Günümüz web gel

Docker ve DDEV Kullanarak Yerel Makinenizde Drupal 9 Web Sitesi Geliştirme Rehberi

Giriş: Modern Drupal Geliştirmenin Temelleri

Günümüz web geliştirme dünyasında, projelerin yerel makinede tutarlı, izole ve yönetilebilir bir ortamda geliştirilmesi büyük önem taşımaktadır. Özellikle Drupal gibi karmaşık ve bağımlılıkları olan bir içerik yönetim sistemi (CMS) ile çalışırken, geliştirme ortamının kurulumu ve yönetimi zaman zaman zorlayıcı olabilir. Bu zorlukların üstesinden gelmek için Docker ve DDEV gibi araçlar devreye girer.

Drupal 9, güçlü modüler yapısı ve esnek mimarisi ile kurumlar ve bireysel geliştiriciler için popüler bir tercihtir. Ancak, Drupal’ın PHP sürümü, veritabanı (MySQL/PostgreSQL), web sunucusu (Apache/Nginx) ve diğer bağımlılıkları gibi çeşitli bileşenleri vardır. Bu bileşenlerin her birinin yerel makinenizde doğru bir şekilde kurulması ve birbiriyle uyumlu çalışması, özellikle birden fazla proje üzerinde çalışıyorsanız, ciddi bir yönetim yükü getirebilir. İşte tam bu noktada Docker ve DDEV, geliştirme sürecini basitleştirmek ve verimliliği artırmak için güçlü bir ikili oluşturur.

Bu makalede, Docker ve DDEV kullanarak yerel makinenizde bir Drupal 9 web sitesini nasıl kuracağınızı, yöneteceğinizi ve geliştireceğinizi adım adım detaylı bir şekilde açıklayacağız. Bu rehber, hem yeni başlayanlar hem de mevcut Drupal geliştiricileri için modern ve verimli bir geliştirme iş akışı oluşturmalarına yardımcı olacaktır.

Neden Docker ve DDEV Kullanmalıyız?

Drupal projeleri için yerel geliştirme ortamı kurmanın geleneksel yolları (örneğin, XAMPP, WAMP, MAMP) genellikle global bağımlılık çakışmalarına, farklı PHP sürümleriyle çalışma zorluklarına ve proje izolasyonu eksikliğine yol açabilir. Docker ve DDEV bu sorunlara modern ve etkili çözümler sunar.

Docker: Kapsayıcılaştırma ile Tutarlılık ve İzolasyon

Docker, uygulamaları ve bağımlılıklarını “kapsayıcılar” (containers) adı verilen izole edilmiş, hafif ve taşınabilir birimler halinde paketlemeye yarayan bir platformdur. Sanal makinelerin aksine, kapsayıcılar işletim sisteminin çekirdeğini paylaşır, bu da onları daha hızlı başlatır ve daha az kaynak tüketir.

* Tutarlılık: Geliştirme, test ve üretim ortamları arasında tutarlılığı sağlar. “Benim makinemde çalışıyordu” sorununu ortadan kaldırır.
* İzolasyon: Her proje kendi kapsayıcılarında çalışır, böylece farklı projelerin bağımlılıkları birbirine karışmaz.
* Taşınabilirlik: Kapsayıcılar, Docker kurulu herhangi bir sistemde aynı şekilde çalışır.
* Hız: Kapsayıcılar saniyeler içinde başlatılabilir ve durdurulabilir.

DDEV: Docker Üzerine İnşa Edilmiş Geliştirici Deneyimi

DDEV, Docker’ı temel alan ve PHP tabanlı projeler (Drupal, WordPress, Laravel vb.) için yerel geliştirme ortamları oluşturmayı basitleştiren açık kaynaklı bir araçtır. DDEV, geliştiricilerin karmaşık Docker komutlarıyla uğraşmak yerine, birkaç basit komutla tam işlevsel bir geliştirme ortamı kurmasına olanak tanır.

* Kolay Kurulum ve Yönetim: Dockerfile’lar veya karmaşık Docker Compose yapılandırmaları yazmaya gerek kalmadan ortamları kurar.
* Önceden Yapılandırılmış Ortamlar: Drupal, WordPress gibi popüler CMS’ler için optimize edilmiş PHP, veritabanı ve web sunucusu yapılandırmaları sunar.
* Gelişmiş Özellikler: Xdebug entegrasyonu, Mailhog (e-posta testi), HTTPS desteği, Composer, Drush gibi araçlara kolay erişim sağlar.
* Performans: Yerel dosya sistemini Docker kapsayıcılarıyla senkronize etmek için optimize edilmiştir.
* Esneklik: Özel hizmetler ekleme veya mevcut yapılandırmaları özelleştirme imkanı sunar.

Ön Koşullar

DDEV ve Docker ile Drupal 9 geliştirmeye başlamadan önce, yerel makinenizde aşağıdaki araçların kurulu olması gerekmektedir:

* Docker Desktop: macOS, Windows veya Linux için Docker’ın resmi uygulaması. Bu, Docker Engine’i ve ilgili araçları sağlar.
* DDEV: Docker üzerinde çalışan yerel geliştirme aracı.
* Git: Proje dosyalarını klonlamak ve versiyon kontrolü için.
* Composer: PHP bağımlılıklarını yönetmek için. DDEV, Composer’ı kapsayıcı içinde çalıştırabilir, ancak global olarak kurulu olması da faydalıdır.
* Temel Terminal Bilgisi: Komut satırı arayüzünde gezinme ve komut çalıştırma becerisi.

Adım 1: Docker Desktop Kurulumu

Docker Desktop, Docker’ı macOS, Windows ve Linux masaüstü ortamlarında çalıştırmak için en kolay yoldur.

1. İndirme: Docker’ın resmi web sitesinden (docker.com/products/docker-desktop) işletim sisteminize uygun sürümü indirin.
2. Kurulum: İndirdiğiniz yükleyiciyi çalıştırın ve ekrandaki talimatları izleyin. Kurulum sırasında Docker, gerekli tüm bileşenleri (Docker Engine, Docker CLI, Docker Compose, Kubernetes vb.) kuracaktır.
3. Başlatma ve Doğrulama: Kurulum tamamlandıktan sonra Docker Desktop uygulamasını başlatın. Sistem tepsisinde veya menü çubuğunda Docker simgesinin yeşil olduğunu görmelisiniz, bu da Docker’ın çalıştığını gösterir. Terminalinizi açın ve docker --version komutunu çalıştırarak Docker CLI’nin doğru şekilde kurulup kurulmadığını doğrulayın.

Adım 2: DDEV Kurulumu

DDEV’i kurmanın birkaç yolu vardır. İşletim sisteminize göre en uygun yöntemi seçebilirsiniz.

* macOS (Homebrew ile önerilir):

brew install ddev/ddev/ddev

* Linux (Homebrew ile önerilir):

brew install ddev/ddev/ddev

Eğer Homebrew kurulu değilse, önce Homebrew’i kurmanız gerekebilir: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
* Windows (Chocolatey ile önerilir):
Yönetici olarak PowerShell’i açın ve aşağıdaki komutları çalıştırın:

choco install ddev

Eğer Chocolatey kurulu değilse, önce onu kurmanız gerekebilir: Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
* Manuel Kurulum (Tüm İşletim Sistemleri):
DDEV’in GitHub sayfasından (github.com/ddev/ddev/releases) en son sürümü indirin ve ddev yürütülebilir dosyasını PATH’inize ekleyin.

Doğrulama: Kurulum tamamlandıktan sonra terminalde ddev --version komutunu çalıştırarak DDEV’in doğru şekilde kurulup kurulmadığını kontrol edin.

Adım 3: Yeni Bir Drupal 9 Projesi Oluşturma

Şimdi DDEV ve Docker kullanarak sıfırdan bir Drupal 9 projesi oluşturalım.

1. Proje Dizini Oluşturma: Terminalinizde projelerinizi saklamak istediğiniz bir dizine gidin ve yeni bir proje klasörü oluşturun.

mkdir my-drupal9-project
    cd my-drupal9-project

2. DDEV Yapılandırması: Proje dizininde ddev config komutunu çalıştırın. DDEV size birkaç soru soracaktır:

ddev config

* Project name: Projenizin adını girin (örneğin, my-drupal9-project).
* Docroot: Drupal’ın web dizini varsayılan olarak kabul edilir, bu yüzden boş bırakıp Enter tuşuna basın. DDEV genellikle doğru değeri otomatik olarak algılar.
* Project type: drupal9 veya drupal seçeneğini seçin.
DDEV, projeniz için .ddev/config.yaml dosyasını oluşturacaktır.
3. DDEV Ortamını Başlatma:

ddev start

Bu komut, Docker kapsayıcılarını (web sunucusu, PHP, veritabanı) başlatacak ve projeniz için yerel bir URL (örneğin, my-drupal9-project.ddev.site) atayacaktır. İlk çalıştırmada biraz zaman alabilir, çünkü DDEV gerekli Docker imajlarını indirecektir.
4. Drupal 9 Projesini Composer ile Oluşturma: DDEV ortamı çalışır durumdayken, Composer’ı kullanarak Drupal 9 projesini kurabiliriz. ddev composer komutu, Composer’ı DDEV’in PHP kapsayıcısı içinde çalıştırır.

ddev composer create-project drupal/recommended-project:^9 .

Bu komut, Drupal’ın önerilen proje yapısını mevcut dizine kuracaktır. Nokta (.) mevcut dizini ifade eder.
5. Drupal Kurulumu: Proje dosyaları indirildikten sonra, Drupal’ı veritabanına kurmak için Drush’ı kullanabiliriz. ddev drush komutu, Drush’ı DDEV’in PHP kapsayıcısı içinde çalıştırır.

ddev drush site:install standard --db-url=mysql://db:db@db/db --site-name="My Drupal 9 Project" --account-name=admin --account-pass=admin

* standard: Standart Drupal profili.
* --db-url: DDEV’in veritabanı bağlantı bilgileri (varsayılan olarak db:db@db/db).
* --site-name: Sitenizin adı.
* --account-name, --account-pass: Yönetici hesabı bilgileri.
Bu komut, veritabanını oluşturacak, tabloları yükleyecek ve Drupal’ı kuracaktır.
6. Siteye Erişim: Kurulum tamamlandıktan sonra, tarayıcınızda sitenize erişmek için ddev launch komutunu kullanın.

ddev launch

Bu komut, projenizin yerel URL’sini (örneğin, https://my-drupal9-project.ddev.site) otomatik olarak tarayıcınızda açacaktır.

Tebrikler! Yerel makinenizde DDEV ve Docker kullanarak çalışan bir Drupal 9 web siteniz var.

Adım 4: Mevcut Bir Drupal 9 Projesi ile Çalışma

Eğer mevcut bir Drupal 9 projeniz varsa ve onu DDEV ile yerel olarak çalıştırmak istiyorsanız, adımlar biraz farklıdır.

1. Proje Dosyalarını Klonlama: Git veya başka bir yöntemle projenizin dosyalarını yerel makinenize indirin.

git clone your-repo-url my-existing-drupal-project
    cd my-existing-drupal-project

2. DDEV Yapılandırması: Proje dizininde ddev config komutunu çalıştırın. DDEV genellikle proje tipini (Drupal 9) ve docroot‘u otomatik olarak algılar. Onaylayın veya gerekirse düzeltin.

ddev config

3. DDEV Ortamını Başlatma:

ddev start

4. Veritabanını İçe Aktarma: Genellikle mevcut bir projenin veritabanı yedeği (.sql veya .sql.gz formatında) bulunur. Bu yedeği DDEV ortamına aktarmak için ddev import-db komutunu kullanın.

ddev import-db --src=path/to/your/database_dump.sql.gz

Eğer dosya .ddev dizininde veya proje kök dizininde ise, --src parametresine gerek kalmayabilir.
5. Composer Bağımlılıklarını Yükleme: Projenin composer.json dosyasında tanımlanan tüm PHP bağımlılıklarını yükleyin.

ddev composer install

6. Drush Komutlarını Çalıştırma: Drupal’ın veritabanı güncellemelerini çalıştırmak ve önbelleği temizlemek için Drush’ı kullanın.

ddev drush updatedb
    ddev drush cr

7. Siteye Erişim:

ddev launch

Temel DDEV Komutları ve Özellikleri

DDEV, geliştirme sürecinizi kolaylaştırmak için bir dizi kullanışlı komut ve özellik sunar.

* ddev start: Proje ortamını başlatır.
* ddev stop: Proje ortamını durdurur. Kapsayıcıları durdurur ancak silmez.
* ddev restart: Proje ortamını yeniden başlatır.
* ddev poweroff: Tüm DDEV projelerini ve Docker’da çalışan diğer DDEV hizmetlerini durdurur. Genellikle kaynakları serbest bırakmak için kullanılır.
* ddev status: Projenin mevcut durumunu (çalışıyor mu, durdu mu vb.) gösterir.
* ddev launch: Projenin yerel URL’sini tarayıcınızda açar.
* ddev ssh: Projenin PHP kapsayıcısına SSH ile bağlanmanızı sağlar. Bu, kapsayıcı içinde komut çalıştırmak veya dosyalara erişmek için kullanışlıdır.
* ddev exec : PHP kapsayıcısı içinde tek bir komut çalıştırmanızı sağlar. Örneğin: ddev exec ls -l web/modules/custom
* ddev drush : Drush komutlarını PHP kapsayıcısı içinde çalıştırır. Örneğin: ddev drush status, ddev drush pm:enable my_module
* ddev composer : Composer komutlarını PHP kapsayıcısı içinde çalıştırır. Örneğin: ddev composer require drupal/admin_toolbar
* ddev mysql: MySQL istemcisini başlatarak veritabanına doğrudan erişmenizi sağlar.
* ddev logs: Docker kapsayıcılarının loglarını görüntüler. Sorun giderme için faydalıdır.
* ddev describe: Projenin tüm detaylarını (URL’ler, veritabanı bilgileri, PHP sürümü vb.) gösterir.
* ddev config --auto: Proje dizinini yeniden tarar ve otomatik olarak bir yapılandırma dosyası oluşturmaya çalışır.
* ddev delete: Proje ortamını ve ilgili Docker kapsayıcılarını siler. Veritabanı ve dosyalar yerel makinenizde kalır. ddev delete --omit-data ile veritabanını da silebilirsiniz.

Gelişmiş DDEV Özellikleri

* Xdebug: DDEV, Xdebug’ı otomatik olarak yapılandırır. IDE’nizde (örneğin, PhpStorm) Xdebug’ı etkinleştirmeniz ve gelen bağlantıları dinlemeniz yeterlidir. ddev xdebug on ve ddev xdebug off komutlarıyla Xdebug’ı kolayca açıp kapatabilirsiniz.
* Mailhog: DDEV her proje için bir Mailhog hizmeti içerir. Bu, geliştirme sırasında sitenizden gönderilen e-postaları yakalamanızı ve incelemenizi sağlar. Mailhog arayüzüne ddev launch -p 8025 ile erişebilirsiniz.
* HTTPS Desteği: DDEV, tüm projeler için otomatik olarak HTTPS sertifikaları oluşturur ve kullanır, bu da üretim ortamına daha yakın bir deneyim sunar.
* Özel Komutlar: .ddev/commands dizinine özel shell betikleri ekleyerek kendi DDEV komutlarınızı oluşturabilirsiniz. Örneğin, sık kullandığınız bir drush komutunu veya bir git iş akışını otomatikleştirebilirsiniz.
* Hizmetler (Services): config.yaml dosyasını düzenleyerek veya .ddev/docker-compose.yaml dosyaları ekleyerek Redis, Solr gibi ek hizmetleri projenize dahil edebilirsiniz.

DDEV Kullanmanın Avantajları

DDEV’in Drupal geliştirme iş akışınıza kattığı başlıca avantajları özetleyelim:

* Tutarlı Geliştirme Ortamı: Tüm ekip üyeleri aynı Docker kapsayıcılarını ve yapılandırmalarını kullanarak çalışır, bu da “benim makinemde çalışıyordu” sorununu ortadan kaldırır.
* Proje İzolasyonu: Her Drupal projesi kendi izole ortamında çalışır. Farklı PHP sürümleri veya veritabanı gereksinimleri olan projeler arasında çakışma yaşanmaz.
* Kolay Kurulum ve Yönetim: Karmaşık Docker yapılandırmalarına gerek kalmadan, birkaç basit komutla tam işlevsel bir geliştirme ortamı kurulur.
* Geliştirici Odaklı Araç Entegrasyonu: Drush, Composer, Xdebug, Mailhog gibi geliştiricilerin sıkça kullandığı araçlar DDEV ile sorunsuz bir şekilde entegre olur.
* Performans: DDEV, yerel dosya sistemini Docker kapsayıcılarıyla senkronize etmek için optimize edilmiştir, bu da hızlı dosya erişimi ve sayfa yükleme süreleri sağlar.
* Taşınabilirlik: Proje ortamı .ddev dizinindeki yapılandırma dosyalarıyla tanımlanır. Bu dosyalar versiyon kontrolüne eklenebilir ve proje, DDEV kurulu herhangi bir makinede kolayca kurulabilir.
* Esneklik ve Genişletilebilirlik: İhtiyaç duyulduğunda özel hizmetler eklenebilir, mevcut yapılandırmalar özelleştirilebilir veya özel DDEV komutları oluşturulabilir.

Sorun Giderme ve İpuçları

DDEV kullanırken karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:

* “Port already in use” hatası: DDEV’in kullandığı bir port (örneğin, 80 veya 443) başka bir uygulama tarafından kullanılıyor olabilir. ddev poweroff komutunu çalıştırarak tüm DDEV hizmetlerini durdurun ve ardından ddev start ile projenizi yeniden başlatmayı deneyin. Gerekirse, config.yaml dosyasında router_http_port ve router_https_port ayarlarını değiştirerek DDEV’in kullanacağı portları özelleştirebilirsiniz.
* Docker Desktop çalışmıyor: DDEV’in çalışması için Docker Desktop’ın çalışır durumda olması gerekir. Docker Desktop uygulamasının açık ve düzgün çalıştığından emin olun.
* Dosya İzinleri Sorunları: Özellikle Linux ve macOS’ta dosya izinleri sorunlara yol açabilir. ddev ssh ile kapsayıcıya bağlanarak dosya sahipliklerini ve izinlerini kontrol edebilirsiniz.
* DDEV komutları bulunamıyor: DDEV’in PATH’inize doğru şekilde eklenip eklenmediğini kontrol edin. Kurulum adımlarını tekrar gözden geçirin.
* Veritabanı bağlantı hataları: ddev describe komutu ile veritabanı bağlantı bilgilerini kontrol edin ve Drupal’ın settings.php dosyasındaki veritabanı ayarlarının DDEV’in sağladığı bilgilerle eşleştiğinden emin olun.
* ddev poweroff vs. ddev stop: ddev stop, yalnızca mevcut projenizin kapsayıcılarını durdurur. ddev poweroff ise DDEV ile ilgili tüm kapsayıcıları ve hizmetleri durdurur, bu da genellikle daha kapsamlı bir temizlik ve kaynak serbest bırakma sağlar.
* Kapsayıcı loglarını kontrol etme: Bir sorunla karşılaştığınızda, ddev logs komutunu kullanarak Docker kapsayıcılarının çıktılarını kontrol etmek faydalı bilgiler sağlayabilir.

Sonuç

Docker ve DDEV, Drupal geliştiricileri için yerel geliştirme ortamı kurma ve yönetme şeklini kökten değiştiren güçlü ve modern araçlardır. Bu makalede ele aldığımız adımları izleyerek, hem yeni hem de mevcut Drupal 9 projelerinizi yerel makinenizde tutarlı, izole ve verimli bir ortamda geliştirebilirsiniz.

DDEV’in sunduğu kolaylık, entegrasyonlar (Drush, Composer, Xdebug, Mailhog) ve performans optimizasyonları sayesinde, geliştiriciler altyapı kurulumuyla uğraşmak yerine doğrudan kod yazmaya ve proje geliştirmeye odaklanabilirler. Bu, özellikle ekip içinde çalışırken veya birden fazla proje yönetirken zaman tasarrufu sağlar ve geliştirme sürecinin kalitesini artırır. Modern Drupal geliştirme pratiği için Docker ve DDEV ikilisi vazgeçilmez bir araç seti haline gelmiştir. Bu araçları benimseyerek, Drupal geliştirme deneyiminizi önemli ölçüde iyileştirebilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version