Docker ve ElasticSearch ile Magento Nasıl Etkili Bir Şekilde Yüklenir

İçindekiler

  1. Giriş
  2. Önkoşullar
  3. Docker Ortamını Kurma
  4. Magento Yüklemesi
  5. ElasticSearch Bağlantı Sorunlarının Giderilmesi
  6. Sonuç
  7. SSS

Giriş

Bir e-ticaret platformu kurarken, Magento esnekliği ve zengin özellik seti nedeniyle öne çıkan seçeneklerden biri olarak ortaya çıkar. Ancak, Magento'nun Docker ortamında ElasticSearch ile özellikle yüklenmesi, basit görünen ancak pratikte hatalarla dolu olan bir entegrasyon üzerinde saatlerce saçınızı yolmanıza neden olabilecek karmaşık bir görev olabilir. Bir "ElasticSearch sunucusuna bağlanılamıyor" hatasıyla karşılaştıysanız, doğru yerdesiniz. Bu kılavuz, Magento 2.4.3'ü (PHP 7.4) başarılı bir şekilde Docker üzerinde yüklemek ve ElasticSearch bağlantısıyla ilgili herhangi bir sorunu gidermek için kapsamlı adımları size sunacaktır.

Önkoşullar

Kurulum sürecine başlamadan önce, aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

  • Docker ve Docker Compose: Ortamı kurmak için gereken konteynerleştirme araçları.
  • PHP 7.4: Magento 2.4.3 bu PHP sürümünü destekler.
  • Composer: Magento'nun kurulumu için temel olan PHP bağımlılık yöneticisi.

Docker Ortamını Kurma

Adım 1: Docker Compose Dosyası Oluşturma

docker-compose.yml dosyası oluşturarak başlayın. Bu YAML dosyası, PHP, MySQL, Nginx ve ElasticSearch dahil olmak üzere gereken hizmetleri tanımlayacaktır. İşte temel bir yapı:

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./src:/var/www/html
    depends_on:
      - php
  php:
    image: php:7.4-fpm
    volumes:
      - ./src:/var/www/html
    depends_on:
      - db
      - elasticsearch
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: magento
      MYSQL_USER: magento
      MYSQL_PASSWORD: magentopassword
    ports:
      - "3306:3306"
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
    environment:
      - discovery.type=single-node
    ports:
      - "9200:9200"
    volumes:
      - esdata:/usr/share/elasticsearch/data
volumes:
  esdata:

Bu dosya, Nginx, PHP, MySQL ve ElasticSearch için konteynerler oluşturur. Hizmetler birbirine bağımlı olduğundan, bağımlılıklara dayalı olarak sıralı bir şekilde başlarlar.

Adım 2: Docker Konteynerlerini Başlatma

Docker konteynerlerinizi devreye almak için aşağıdaki komutu terminale çalıştırın:

docker-compose up -d

Bu komut, gerekli görüntüleri çeker ve hizmetleri arka planda başlatır.

Magento Yüklemesi

Adım 1: Magento'yu İndirme

Proje dizininize girin:

cd src

Magento'yu indirmek için aşağıdaki komutu çalıştırın:

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.3 .

Adım 2: Çevresel Değişkenleri Ayarlama

Çevreyle ilgili değişkenleri saklamak için bir .env dosyası oluşturun. Magento bunları kurulum sırasında kullanacaktır.

cp .env.example .env

Veritabanı kimlik bilgileri ve temel URL gibi ayrıntıları doldurun.

Adım 3: Veritabanını İçe Aktarma

Bu bir miras proje ise, veritabanı dökümünü MySQL'e aktarın:

docker exec -i <mysql-container-id> mysql -u magento -pmagentopassword magento < /path/to/dump.sql

<mysql-container-id> ifadesini kendi MySQL konteyner kimliğinizle değiştirin ve döküm dosyanızın yolunu ayarlayın.

Adım 4: Magento'yu Yükleme

Nihayet, Magento'yu aşağıdaki komut kullanarak yükleyin:

docker exec -it <php-container-id> bin/magento setup:install \
  --base-url=http://localhost \
  --db-host=db \
  --db-name=magento \
  --db-user=magento \
  --db-password=magentopassword \
  --backend-frontname=admin \
  --admin-firstname=admin \
  --admin-lastname=admin \
  --admin-email=admin@example.com \
  --admin-user=admin \
  --admin-password=admin123 \
  --language=en_US \
  --currency=USD \
  --timezone=America/Chicago \
  --use-rewrites=1 \
  --search-engine=elasticsearch7 \
  --elasticsearch-host=elasticsearch \
  --elasticsearch-port=9200

Kişisel bilgilerinizi gerçek değerlerle değiştirdiğinizden emin olun.

ElasticSearch Bağlantı Sorunlarının Giderilmesi

Yaygın Hata: Canlı Düğüm Bulunamadı

"Kümenizde canlı düğüm bulunamadı" hatasıyla karşılaşırsanız, aşağıdaki adımları izleyin:

  1. ElasticSearch Durumunu Doğrulama: ElasticSearch'in durumunu kontrol edin.

    curl -X GET "localhost:9200/_cluster/health?pretty"
    

    Lütfen küme durumunun yeşil olduğundan emin olun.

  2. ElasticSearch Yapılandırmalarını Güncelleme: Magento yapılandırma dosyasındaki app/etc/env.php dosyasına gidin ve arama yapılandırmalarını aşağıdaki gibi güncelleyin:

    'search_engine' => 'elasticsearch7',
    'elasticsearch7_server_hostname' => 'elasticsearch',
    'elasticsearch7_server_port' => '9200'
    
  3. Hizmetleri Yeniden Başlatma: Bazı durumlarda, Docker hizmetlerini yeniden başlatmak bağlantı sorunlarını çözebilir:

    docker-compose restart
    

Sonuç

Bu rehbere uyarak Magento'nun Docker ortamında ElasticSearch ile sorunsuz bir şekilde çalışan bir kurulumunuz olmalı. Bu süreç, Docker konteynerlerini ayarlama, Magento'yu yapılandırma ve ElasticSearch bağlantısıyla ilgili herhangi bir sorunu ele alma adımlarını içerir. Unutmayın, sorunsuz bir kurulum için her bileşenin durumunu doğrulamak ve tüm hizmetlerin etkili bir şekilde iletişim kurmasını sağlamak önemlidir.

SSS

Neden Magento ElasticSearch'i gerektirir?

Magento, standart SQL sorgularına kıyasla daha hızlı ve daha ilgili arama sonuçları sunan güçlü arama yetenekleri için ElasticSearch'i kullanır.

Magento'da farklı bir arama motoru kullanabilir miyim?

Evet, Magento MySQL'in FullText'i, Apache Solr ve diğerlerini de içeren çeşitli arama motorlarını destekler. Ancak, performansı ve ölçeklenebilirliği nedeniyle ElasticSearch önerilir.

ElasticSearch konteynerim sürekli yeniden başlıyorsa ne yapmalıyım?

Docker hamlenizin yeterli bir bellek ayrıldığından emin olun. ElasticSearch, düzgün çalışması için önemli miktarda bellek gerektirir. Gerekirse daha fazla bellek tahsis etmek için Docker'ın ayarlarını ayarlayın.

Bu kılavuz, Magento'yu Docker ve ElasticSearch ile birlikte kurmak için kapsamlı bir kaynak olarak hizmet etmelidir. Herhangi bir sorunla karşılaşırsanız, her yapılandırma adımını gözden geçirmek ve buna göre sorun giderme yapmak çoğu yaygın sorunu çözmede yardımcı olacaktır. İyi kodlamalar!