Hvordan installere Magento effektivt med Docker og ElasticSearch

Innholdsfortegnelse

  1. Introduksjon
  2. Forutsetninger
  3. Oppsett av Docker-miljø
  4. Installering av Magento
  5. Feilsøking av tilkoblingsproblemer med ElasticSearch
  6. Konklusjon
  7. FAQ

Introduksjon

Når du setter opp en e-handelsplattform, er Magento en av de fremtredende valgene på grunn av fleksibiliteten og det rike settet med funksjoner. Imidlertid kan installasjon av Magento, spesielt i et Docker-miljø med ElasticSearch, være en utfordrende oppgave. Forestill deg å bruke timer på å rive deg i håret over en integrasjon som virker ukomplisert på papiret, men er full av feil i praksis. Hvis du har møtt på en feilmelding om "Kan ikke koble til ElasticSearch-server", er du på rett sted. Denne veiledningen vil guide deg gjennom de omfattende trinnene for å installere Magento 2.4.3 (PHP 7.4) via Docker og feilsøke eventuelle problemer med tilkobling til ElasticSearch.

Forutsetninger

Før du dykker ned i installasjonsprosessen, må du sørge for at du har følgende forutsetninger:

  • Docker og Docker Compose: Verktøy for containerisering som er nødvendige for å sette opp miljøet.
  • PHP 7.4: Magento 2.4.3 støtter denne versjonen av PHP.
  • Composer: En avhengighetsbehandler for PHP som er nødvendig for å installere Magento.

Oppsett av Docker-miljø

Trinn 1: Opprett Docker Compose-fil

Begynn med å opprette en docker-compose.yml-fil. Denne YAML-filen vil definere de nødvendige tjenestene, inkludert PHP, MySQL, Nginx og ElasticSearch. Her er en grunnleggende struktur:

versjon: '3.8'
tjenester:
  web:
    image: nginx:latest
    porter:
      - "80:80"
    volumer:
      - ./src:/var/www/html
    avhengig_av:
      - php
  php:
    image: php:7.4-fpm
    volumer:
      - ./src:/var/www/html
    avhengig_av:
      - db
      - elasticsearch
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: rot passord
      MYSQL_DATABASE: magento
      MYSQL_USER: magento
      MYSQL_PASSWORD: magentopassord
    porter:
      - "3306:3306"
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
    environment:
      - discovery.type=single-node
    porter:
      - "9200:9200"
    volumer:
      - esdata:/usr/share/elasticsearch/data
volumer:
  esdata:

Denne filen setter opp containere for Nginx, PHP, MySQL og ElasticSearch. Tjenestene er avhengige av hverandre, noe som betyr at de vil starte i en sekvensiell rekkefølge basert på avhengighetene deres.

Trinn 2: Start Docker-containere

Kjør følgende kommando i terminalen for å starte Docker-containere:

docker-compose up -d

Denne kommandoen vil hente nødvendige bilder og starte tjenestene i frakoblet modus.

Installering av Magento

Trinn 1: Last ned Magento

Naviger til prosjektkatalogen din:

cd src

Kjør følgende kommando for å laste ned Magento:

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

Trinn 2: Sett opp miljøvariabler

Opprett en .env-fil for å lagre miljøspesifikke variabler. Magento vil bruke disse variablene under installasjonen.

cp .env.example .env

Fyll inn detaljer som databasepåloggingsinformasjon og grunnleggende URL.

Trinn 3: Importer database

Hvis dette er et eksisterende prosjekt, kan du importere databasedumpen til MySQL:

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

Erstatt <mysql-container-id> med ID-en til MySQL-containeren din og juster banen til dumpfilen.

Trinn 4: Installer Magento

Til slutt kan du installere Magento ved å bruke følgende kommando:

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=magentopassord \
  --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

Sørg for at du erstatter plassholdere med faktiske verdier.

Feilsøking av tilkoblingsproblemer med ElasticSearch

Vanlig feil: Ingen aktive noder funnet

Hvis du opplever en feil som sier "Ingen aktive noder funnet i klyngen din", følger du disse trinnene:

  1. Verifiser status for ElasticSearch: Sjekk statusen for ElasticSearch.

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

    Sjekk at klusterstatusen er grønn.

  2. Oppdater ElasticSearch-konfigurasjoner: Naviger til Magento-konfigurasjonsfilen app/etc/env.php og oppdater søkekonfigurasjonene til:

    'search_engine' => 'elasticsearch7',
    'elasticsearch7_server_hostname' => 'elasticsearch',
    'elasticsearch7_server_port' => '9200'
    
  3. Start tjenestene på nytt: Noen ganger kan det å starte Docker-tjenester på nytt løse tilkoblingsproblemer:

    docker-compose restart
    

Konklusjon

Ved å følge denne veiledningen skal du ha en Magento-installasjon som kjører jevnt innenfor et Docker-miljø med ElasticSearch. Prosessen innebærer å sette opp Docker-containere, konfigurere Magento og håndtere eventuelle tilkoblingsproblemer med ElasticSearch. Husk at nøkkelen til en sømløs oppsett er å verifisere statusen til hver komponent og sikre at alle tjenestene kommuniserer effektivt.

FAQ

Hvorfor krever Magento ElasticSearch?

Magento bruker ElasticSearch for sine kraftige søkefunksjoner, som gir raskere og mer relevante søkeresultater sammenlignet med standard SQL-forespørsler.

Kan jeg bruke en annen søkemotor med Magento?

Ja, Magento støtter flere søkemotorer, inkludert MySQL FullText, Apache Solr og andre. Imidlertid anbefales ElasticSearch på grunn av ytelsen og skalerbarheten.

Hva skal jeg gjøre hvis ElasticSearch-containeren min fortsetter å starte på nytt?

Forsikre deg om at Docker-demonen din har tilstrekkelig minne. ElasticSearch krever betydelig minne for å kjøre jevnt. Juster Docker-innstillingene for å tildele mer minne om nødvendig.

Denne veiledningen skal fungere som en omfattende ressurs for å sette opp Magento med Docker og ElasticSearch. Hvis du støter på problemer, vil det å gå gjennom hver konfigurasjonssteg og feilsøke tilsvarende bidra til å løse de vanligste problemene. Lykke til med kodingen!