İçindekiler
- Giriş
- Önkoşullar
- Docker Ortamını Kurma
- Magento Yüklemesi
- ElasticSearch Bağlantı Sorunlarının Giderilmesi
- Sonuç
- 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:
-
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.
-
ElasticSearch Yapılandırmalarını Güncelleme: Magento yapılandırma dosyasındaki
app/etc/env.phpdosyası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' -
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!