Magento superschalen in de cloud

Deze tutorial helpt je bij het voorbereiden van een Magento-installatie voor veel verkeer, betere laadtijden en eenvoudiger doorgaand sitebeheer. Klaar?


Vereisten

Je kunt de voltooide code voor deze tutorial downloaden of de "magento-basic" Quickstart starten vanuit je Pagoda Box-account om een ​​werkende site te testen.

  • Een Pagoda Box-account (gratis)
  • Een functionele lokale Magento-installatie
  • Lokale ontwikkelingssoftware (MAMP of WAMP)
  • Git geïnstalleerd (kan SFTP gebruiken)
  • De Pagoda Terminal-client geïnstalleerd

Eerlijke waarschuwing: deze zelfstudie kan je leven veranderen. Pagoda Box is geen traditionele hosting. De leringen in dit artikel helpen Magento niet alleen te schalen, maar leggen ook de basis voor een progressieve workflow van ontwikkeling naar productie..


Stap 1: Git lokaal instellen (SFTP werkt als alternatief)

Opmerking: als u Git al gebruikt, kunt u dit gedeelte overslaan. Als dat niet het geval is, biedt de handleiding Setup Git specifieke instructies voor het maken van een SSH-sleutel, evenals koppelingen voor het downloaden en installeren van Git (ook hieronder).

Hoewel het mogelijk is om alleen SFTP op Pagoda Box te gebruiken, integreert de officieel aanbevolen (en meest efficiënte) workflow Git in je dagelijkse ontwikkeling. Git maakt functies mogelijk zoals samenwerking, uniforme codeverdeling, deployment, deployment history en rolling back-code. Hoewel de meeste van deze functies beschikbaar zijn voor FTP-gebruikers, maakt het gebruik van Git integratie naadloos.

Als u volledig wilt profiteren van Pagoda Box, download dan Git en Leer de basisprincipes. Afhankelijk van uw besturingssysteem, kan de installatie enigszins variëren. Ongeacht je besturingssysteem zijn de opdrachten identiek als Git is geïnstalleerd.

Het gebruik van Git om samenwerking en versiebeheer te beheren kan een korte leercurve inhouden. Er zijn echter over het algemeen maar drie opdrachten die we doorlopend gebruiken om wijzigingen lokaal vast te leggen en vervolgens in Pagoda Box te implementeren:

  • git add . - Voegt lokale bestanden toe aan uw repository
  • git commit -m "wat bericht over wat je hebt gedaan" - Brengt uw wijzigingen tot stand
  • git push pagoda - allemaal - Verplaatst wijzigingen in de Repode van Pagoda Box (standaard automatisch geïmplementeerd)

We zullen deze later gebruiken.


Stap 2: Installeer de Pagoda Box Terminal Client

 * / \ / \ + _ / / / | \ \ \ _ + || * ||| * || | + || * || + | / \ + _ / / / | \ \ \ _ + || * ||| * || | + || * || + | ____ _ ____ ___ ____ _ ____ _____ __ | _ \ / \ / ___ | / _ \ | _ \ / \ | __) / _ \ \ / / | | _) / _ \ | | _ | | | | | | | / _ \ | _ \ | | | \ / | __ / ___ \ | _ | | | _ | | | _ | / ___ \ | | _) | | _ | / \ | _ | / _ / \ _ \ ____ | \ ___ / | ____ / _ / \ _ \ ____ / \ ___ / _ / \ _ \ Welkom bij uw Pagoda Box Terminal-client. ----------------------------------------------- --- -------------------------------------- ------------ --------------------- Genieten.

Pagoda Box biedt een Terminal Client waarmee u een applicatie kunt clonen, maken, implementeren, vernietigen, hernoemen en terugdraaien vanaf de opdrachtregel. Verderop in deze tutorial gebruiken we de client om een ​​beveiligde tunnel te maken naar de live Magento-database met Sequel Pro (het proces is vergelijkbaar voor andere databasemanagementtools zoals HeidiSQL).

De Pagoda Box Terminal Client is een rubygem, dus de installatie is vrij eenvoudig. Allereerst moet Ruby worden geïnstalleerd. Installatie is anders voor elk besturingssysteem.

  • Mac - Ruby en RubyGems zijn vooraf geïnstalleerd op Mac OSX. Zolang u v10.5 of later uitvoert, moet u goed zijn om te gaan.
  • Windows - Er zijn een aantal verschillende manieren om Ruby in Windows te installeren. We raden dit auto-installatieprogramma aan. Als het niet werkt voor uw installatie, geeft een Google-zoekopdracht u een redelijk goede lijst van installatie-walk-throughs.
  • Linux - Gebruik uw favoriete pakketbeheerder om het Ruby-pakket te downloaden. Voor Ubuntu-gebruikers is het juweeltje beschikbaar via getdeb.net.

Terminal-client installeren en verifiëren

Nadat Ruby is geïnstalleerd, voert u eenvoudig de volgende opdracht uit om de Pagoda RubyGem te installeren:

Op Mac of Linux:

 $ sudo gem installeer pagode

Op Windows:

 $ gem installeer pagode

Voer vervolgens uit om te controleren of de Pagoda Gem correct is geïnstalleerd:

 $ pagodalijst

Als dit de eerste keer is dat je de Gem hebt gebruikt, zal deze je gebruikersnaam en wachtwoord voor je Pagodebox vragen. Nadat u deze hebt ingevoerd, verwacht u een lijst met uw Pagoda Box-toepassingen te zien. Als u geen toepassingen hebt gemaakt, is de lijst leeg.

Als u een foutmelding krijgt, zijn dit hoogstwaarschijnlijk ongeldige inloggegevens. U kunt verifiëren of wijzigen welke inloggegevens de edelsteen gebruikt door het bestand op uw lokale computer te bewerken op ~ / .Pagodarc. Zorg ervoor dat u exact overeenkomt met de inloggegevens die u gebruikt in uw Pagoda Box-account. (Opmerking: dit is een verborgen bestand, dus u moet verborgen bestanden inschakelen of openen via de terminal. Houd er ook rekening mee dat het bestand uw referenties twee keer opslaat, dus bewerk beide indien nodig.)


Stap 3: Installeer Magento lokaal

Opmerking: sla deze stap over als u al een werkende lokale Magento-installatie hebt.

Als u dit nog niet hebt, controleert u of u lokale webserver- en databasebeheersoftware gebruikt. Er zijn verschillende opties beschikbaar, afhankelijk van uw besturingssysteem. Een veelvoorkomende optie voor Mac is MAMP of WAMP voor Windows. Beide zijn gratis en gemakkelijk in te stellen.

Zodra uw lokale ontwikkelomgeving is ingesteld, kunt u Magento downloaden en vervolgens de officiële gids volgen om Magento lokaal te installeren.

U kunt het automatische installatiescript van Magento gebruiken om de toepassing in uw lokale omgeving in te stellen. Vanwege de gedistribueerde cloudarchitectuur van Pagoda Box zal het script Magento echter niet rechtstreeks in uw productieomgeving installeren. De werkstroom en architectuur van de Pagoda Box vereist dat u lokaal wijzigingen in de code aanbrengt, commiteert en vervolgens implementeert in productie. Deze workflow biedt ruimte voor samenwerking en ontwikkeling> staging> best practices voor productie.


Stap 4: PHP configureren met behulp van een Boxfile

Opmerking: op Pagoda Box kan een YAML-boxfile worden opgenomen in de root van uw coderepository. Hoewel de Boxfile optioneel is, biedt deze geavanceerde functies, zoals het manipuleren van uw gehoste omgeving op elke implementatie. We gebruiken de Boxfile uitgebreid in deze zelfstudie om taken te vereenvoudigen en de repository herbruikbaar te maken op Pagoda Box.

Maak een bestand met de naam "Boxfile" in de root van uw lokale Magento-installatie en kopieer vervolgens het volgende in uw Boxfile (onderstaande uitleg):

 web1: naam: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap

Maak / benoem de webcluster

Deze Boxfile heeft verschillende doelen. Eerst maakt het een web1 component, noemt het vervolgens mag-app.

Gedeelde beschrijfbare mappen

Ten tweede identificeert het Boxfile media en var als gedeelde beschrijfbare mappen. Hiermee kunnen gebruikers afbeeldingen, video's en andere media uploaden naar een gedistribueerde Magento-cloudsite zonder dat deze zichzelf niet synchroon schrijven.

Wanneer een map als beschrijfbaar is gemarkeerd, wordt de inhoud niet langer in Pagoda Box geïmplementeerd vanuit uw lokale repository. Telkens lokale bestanden in deze mappen moeten worden geïmplementeerd, moeten ze handmatig worden gekopieerd via SSH of SFTP. U kunt ook SSH / SFTP gebruiken om bestanden van Pagoda Box naar uw lokale computer over te zetten indien nodig.

PHP-versie en -extensies

De Boxfile verklaart ook welke PHP-versie en -extensies worden opgenomen in uw webinstances terwijl ze worden geïmplementeerd. Op deze manier zijn zowel de omgeving als de applicatieversies samen, dus het terugdraaien naar een eerdere implementatie omvat de juiste PHP-versie en -extensies. De lijst met PHP-extensies in dit Boxbestand is overgenomen uit de officiële systeemvereisten van Magento.

Tip: als Git is geïnstalleerd in uw lokale omgeving, gebruikt u de .gitignore bestand om de beschrijfbare mappen te negeren die zijn opgegeven in uw Boxfile. Identificatie van deze mappen binnen de .gitignore bestand helpt de grootte van uw repo en uw inzettijd te verminderen. Naast de beschrijfbare mappen, kunt u ook de downloader map naar de .gitignore bestand, omdat het lokaal wordt gebruikt, en niet op Pagoda Box.

Nadat je Git en de Terminal Client hebt geïnstalleerd, het Boxbestand hebt geconfigureerd en je lokale broncode hebt voltooid, ben je klaar om te starten op Pagoda Box.


Stap 5: Maak een gratis Pagoda Box-account aan

Als je er nog geen hebt, maak dan een gratis Pagoda Box-account aan. U hoeft geen creditcard in te voeren om Magento te installeren voor testen.

Als u dit nog niet hebt gedaan, volgt u deze gids om een ​​SSH-sleutel toe te voegen aan het paneel Beheerder van uw pagodevak. De handleiding bevat specifieke instructies voor het instellen van een SSH-sleutel op Mac of Windows.


Stap 6: Upload Magento naar Pagoda Box

Zodra je een Pagoda Box-account hebt gemaakt en een SSH-sleutel hebt ingesteld, ga je naar de startpagina in je nieuwe account en klik je op de knop "Nieuwe applicatie" om een ​​nieuwe applicatie te maken.

Opmerking: deze zelfstudie geeft onze voorbeeldapplicatie "magento". De app-naam wordt ook gebruikt voor de Pagoda Box-repository, het subdomein voor de vers geïmplementeerde applicatie (magento.pagodabox.com) en de gebruikersnaam in de SFTP-modus. Vervang "magento" door "uw-app-naam-hier" indien van toepassing gedurende de rest van deze tutorial.

Uploaden naar een lege repo (aanbevolen voor deze tutorial)

Kies vervolgens uit de 3 opties om uw Magento-site te lanceren. Omdat je al een aangepaste versie van Magento lokaal hebt, selecteer je 'Empty Repo' om te deployen met SFTP of Git, benoem je je applicatie en klik je op 'Application starten'..

U wordt gevraagd om uw voorkeursimplementatiemethode (Git of SFTP) te selecteren. Klik op uw voorkeur en volg de instructies op het scherm.

Git Option

U kunt de instructies op het scherm van het Pagoda Box-dashboard naar uw terminal kopiëren en plakken nadat u Terminal hebt gebruikt om de directory (cd) te wijzigen in de hoofdmap van uw project.

De geplakte opdrachten doen het volgende:

  • git init - Initialiseer je Magento-project als Git Repository
  • git add . - Voeg alle bestanden uit het project toe aan de repo
  • git commit -m 'your commit message' - Bestanden toewijzen met een bericht waarmee u snel de implementatiegeschiedenis in de toekomst kunt scannen, voor het geval u wijzigingen moet terugdraaien of wijzigen
  • git remote add pagoda [email protected]: magento.git - Voeg Pagoda Box toe als een afstandsbediening (de specifieke git-URL voor uw applicatie verschijnt op zowel dit scherm als in uw app-dashboard
  • git push pagoda - allemaal - Duw uw lokale code naar de externe repository van Pagoda Box. Zolang u zich in de "master" -tak bevindt (wat de standaard is), zal Pagoda Box uw code automatisch implementeren en de instructies uitvoeren die we in de Boxfile hebben ingesteld. Auto-deploy kan worden uitgeschakeld in het Admin-dashboard of automatisch worden geïmplementeerd vanuit een andere Git-branch dan Master.

SFTP-optie

Als u voor SFTP hebt gekozen, zal Pagoda Box u helpen bij het vaststellen van inloggegevens en een wachtwoord. Maak verbinding via SFTP naar Pagoda Box en upload uw Magento-broncode in de code directory.


Stap 7: Maak een database

Er zijn twee manieren om een ​​database te maken op Pagoda Box. Elk heeft voordelen, zoals hieronder uitgelegd:

Maak een DB in de Boxfile

De Boxfile maakt automatisch een databasecomponent voor de implementatie, zolang die component (db1, db2, enz.) bestaat nog niet. Het declareren van de database in de Boxfile bespaart nu een beetje tijd en maakt het in de toekomst veel eenvoudiger om meerdere Magento-sites te implementeren vanaf een gestandaardiseerde codebasis. (Opmerking: alleen cloud-DB's kunnen worden gedistribueerd vanuit de Boxfile.Als u een grotere, toegewijde of redundante database nodig hebt, raadpleegt u de optie Dashboard later in deze stap.) Voeg het volgende toe aan uw Boxfile:

 db1: naam: mag-db type: mysql

Uw bijgewerkte Boxfile zou er als volgt uit moeten zien:

 web1: naam: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap db1: naam: mag-db type: mysql

Breng vervolgens wijzigingen aan in het bijgewerkte bestand en push wijzigingen in Pagoda Box:

 $ git commit -m "pagoda config" $ git push pagoda - alles

Alternatief: maak een DB in het Dashboard

U kunt ook een database maken vanuit het Pagoda Box-dashboard. Hier voegt u een grotere, toegewijde of redundante database toe.

Klik eerst op "Database toevoegen" in het Dashboard.

Pagoda Box doorloopt een reeks schermen om uw database te configureren, afhankelijk van uw keuzes. Als u de Dedicated-optie hebt gekozen, wordt u gevraagd om uw database als volgt te vergroten:

Clouddatabases worden meestal binnen enkele minuten geïmplementeerd. Als je Dedicated hebt gekozen, wees dan niet ongeduldig. U kunt maximaal 90 minuten wachten voordat een grote server aan uw specificaties voldoet.


Stap 8: DB-legitimeringen voor productie configureren

Uw database genereert automatisch referenties wanneer deze wordt gemaakt in Pagoda Box. We gebruiken die inloggegevens om Magento in productie te configureren.

Aangezien Magento zowel in lokale omgevingen als in productie zal worden gebruikt, moeten we echter voor elk daarvan verschillende databasereferenties leveren. We gebruiken Deploy Hooks in de Boxfile om dit proces te vereenvoudigen door tijdens de implementatie scripts of opdrachten uit te voeren.

In het geval van Magento, zullen we de local.xml bestand bij inzet. Op die manier, zonder handmatig inloggegevens te wijzigen, de app / etc / local.xml bestand zal automatisch lokale database-inloggegevens in ontwikkeling hebben, maar productiedatabase-inloggegevens op Pagoda Box.

Maak een local.xml voor productie

Maak eerst een map met de naam pagode in root, kopieer dan Magento's app / etc / local.xml naar de nieuwe map.

Bewerk vervolgens local.xml om Pagoda Box-databasereferenties op te nemen vanuit uw accountdashboard. Houd er rekening mee dat Pagoda Box 3 verificatieniveaus gebruikt, zodat zelfs als uw inloggegevens worden aangetast, andere gebruikers geen toegang hebben tot uw database.

Wissel Local.xml uit bij Configs on Deploy

Voeg het volgende toe aan uw Boxfile, onder de web1 sectie om de Deploy Hook te maken.

 after_build: "mv pagoda / local.xml app / etc / local.xml"

Uw bijgewerkte Boxfile zou er als volgt uit moeten zien:

 web1: naam: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap after_build: - "mv pagoda / local.xml app / etc / local.xml "db1: naam: mag-db type: mysql

Breng vervolgens wijzigingen aan en druk op Pagoda Box:

 $ git add. $ git commit -m "pagoda config" $ git push pagoda - alles

Stap 9: Migreer de database

Met dezelfde hulpmiddelen die u gebruikt om een ​​lokale database te beheren, kunt u veilig een live database op Pagoda Box beheren. We gebruiken Sequel Pro voor dit voorbeeld, maar het proces is vergelijkbaar voor tools zoals HeidiSQL.

Exporteer uw lokale DB

Toen het Magento-installatiescript lokaal werd uitgevoerd, heeft het verschillende tabellen in de lokale database gemaakt. Die tabellen moeten worden gemigreerd naar productie.

Exporteer eerst uw lokale database met behulp van uw databasemanager: Bestand> Exporteren.

Kies nu een locatie en sla de export op.

Breng een veilige DB-verbinding tot stand

Maak nu een databasetunnel. Gebruik de Pagoda Box Terminal Client en geef de app op waarvan u de database probeert te openen, en de ID van de databasecomponent (bijvoorbeeld db1), zoals in dit voorbeeld:

 $ pagoda -a magento tunnel -c db1 --OR-- $ pagoda --app = magento tunnel --component = db1

Zodra de tunnel is gevestigd, gebruikt u Sequel Pro (of iets dergelijks) om verbinding te maken met de database met behulp van de host en poort van de Pagoda Terminal-client ...

En de gebruikersnaam en het wachtwoord in uw Pagoda-databasereferenties. Deze werden automatisch gemaakt met uw database en zijn te vinden in het Pagoda Box-dashboard onder de databasecomponent (zie voorbeeld in stap 8).

Importeer en update de productie-DB

Importeer vervolgens uw database in productie met Sequel Pro (of vergelijkbaar): Bestand> Importeren. Selecteer nu het database-exportbestand en Open.

Omdat we het installatiescript lokaal hebben uitgevoerd, is het ten slotte noodzakelijk om de basis-url rechtstreeks in de database aan te passen voordat u door de site bladert. Terwijl u nog steeds verbonden bent met de Pagoda Box-database in Sequel Pro, navigeert u / filtert u naar de core_config_data tabel en bewerk de waarde voor de volgende paden:

 web / unsecure / base_url web / secure / base_url

De waarden voor elk moeten er ongeveer zo uitzien:


Stap 10: Configureer Mail

Om uw IP's te beschermen tegen spam, gebruikt Pagoda Box het SMTP-mailprotocol om e-mail te verzenden via SMTP-inloggegevens van derden. In het Engels betekent dit dat u een bedrijf (zoals Gmail) nodig hebt dat e-maildiensten aanbiedt.

Ongeacht welke mailprovider u kiest, voer de accountreferenties van die provider in uw Pagoda Box-dashboard in. Het zou er ongeveer zo uit moeten zien:


Stap 11: Cron-banen (optioneel)

Een paar terugkerende taken in Magento (bijvoorbeeld het versturen van nieuwsbrieven, logboekregistratie, klantmeldingen, etc.) moeten periodiek plaatsvinden. De cron.php bestand dat zich in Magento's root bevindt, zal deze taken activeren. We zullen een Cron-taak instellen in het adminpaneel van de Pagoda Box om uit te voeren cron.php elke 15 minuten. (Opmerking: zie de officiële gids voor informatie over het configureren van Magento-specifieke taken.)

Cron Jobs in de Boxfile

Cron-taken kunnen worden toegevoegd of bijgewerkt via de Boxfile en vervolgens worden geïmplementeerd in Pagoda Box. Om een ​​taak met intervallen van 15 minuten te plannen, voegt u het volgende toe aan uw Boxfile onder de web1: component (verander de "magento" naar uw eigen appnaam / subdomein):

 cron: - "* / 15 * * * *": "curl -s -o / dev / null http://magento.pagodabox.com/cron.php"

Uw bijgewerkte Boxfile zou er als volgt uit moeten zien:

 web1: naam: mag-app shared_writable_dirs: - media - var php_version: 5.3.8 php_extensions: - pdo_mysql - mysql - simplexml - mcrypt - hash - gd - dom - iconv - curl - soap after_build: - "mv pagoda / local.xml app / etc / local.xml "cron: -" * / 15 * * * * ":" curl -s -o / dev / null http://magento.pagodabox.com/cron.php "db1: naam: mag -db type: mysql

Alternatief: Cron-taken in het dashboard

Voeg het volgende toe in het adminpaneel van de Pagoda Box onder het tabblad Cron (verander de "magento" naar je eigen app-naam):

Commando: curl -s -o / dev / null http://magento.pagodabox.com/cron.php

Planning: * / 15 * * * *

Het zou er zo uit moeten zien:


Deel 2 - Optimalisatie: Redis, Schalen & Benchmarking

Je hebt het zware werk al uit de weg geruimd. Uw Magento-applicatie is schaalbaar en wijzigingen kunnen eenvoudig overal worden toegepast $ git push pagoda - allemaal.

In het vervolgartikel optimaliseren we Magento, voegen we een redis-cache, SSL- en domeinaliassen toe en schalen we de applicatie voor benchmarking en productie. Tot ziens!