Deploy Magento Shops mit
Capistrano
Roman Hutterer - 2015
CAPISTRANO - MAGENTO
ROMAN HUTTERER
● Selbstständiger Webentwickler
www.multibyte.at
● Senior Developer bei Cyberhouse
www.cyberhouse.at
● Magento Certified Developer
● Webentwickler seit 2005
● Magento-Entwickler seit 2011
● @roman204
● http://github.com/roman204
WARUM EIN DEPLOYMENT TOOL?
● kein direkter Zugang (FTP, SSH, SFTP,...) nötig
● kein „vergessen Hochzuladen“
● keine Änderungen am Server direkt
● schneller Rollback
● wiederkehrende Schritte können automatisiert werden
● clearCache, enableCompiler,...
● Automatisches Testen möglich
● meistens History
● ….
WAS IST CAPISTRANO?
● ein Deployment – Tool
● geschrieben in Ruby
● Open Source
● eine Community Entwicklung
● einfach Erweiterbar und/oder Überschreibbar
● ist Event gesteuert
● leicht zu debuggen
● ...
VORTEILE CAPISTRANO?
● Schnelles Code Deployment (Komplett oder Teil)
● Prozess – Automatisierung (zb. Klone Projekt, Flush Cache, DB Update)
● Mehrstufiges Deployment (dev, staging, live)
● Multiple Server Deployment
● Befehle auf Server ausführen
● Schnelles Rollback zu einer archivierten Version der Applikation
● Server Rollen abbilden (DB, Web, App,...)
● Tasks „before“ und „after“ Tasks auslösen
● Verzeichnisse und/oder Dateien zwischen Releases sharen
● ...
INSTALL CAPISTRANO
„apt“ managed Distro's:
● apt-get install ruby
● gem install capistrano
● apt-get install git (Client & Server)
Capistrano im Projekt initialisieren:
● cd projectPath
● cap install
Magento Tasks hinzufügen
● https://github.com/roman204/capistran
● magento.rake nach
lib/capistrano/tasks kopieren
CAPISTRANO EINRICHTEN
● deploy.rb einrichten
● set :application, "myMagentoShop"
● set :repo_url, "git@bitbucket.org:roman204/mage_test.git"
● set :keep_releases, 5
● selbstdefinierte Tasks
● Magento-Core wird nicht über composer installiert:
set :linked_dirs, ['var', 'media', 'sitemaps']
set :linked_files, ['app/etc/local.xml']
● Magento-Core wird über composer im Verzeichnis „htdocs“ installiert:
set :linked_dirs, ['htdocs/var', 'htdocs/media', 'htdocs/sitemaps']
set :linked_files, ['htdocs/app/etc/local.xml']
DEPLOYMENT KONFIGURATION
phpStorm → deploy.rb
The „Flow“
Alle direkt aufrufbaren Tasks mit cap -T
phpStorm → magento.rake
CAPISTRANO UND MAGENTO
Magento spezifische Tasks für Capistrano v3
STAGES EINRICHTEN
● Stages einrichten
● config/deploy/{mystage}.rb
● Rolle definieren
● SSH Zugang definieren
– sollte Schlüssel basiert
authentifiziert werden
– sollte ein eigener
User am Server sein
NEUES PROJEKT
cap {stage} deploy:check
Capistrano verbindet sich zur Stage "development" und überprüft ob die Abhängigkeiten
für ein Deployment erfüllt sind.
Überprüft wird :
● SSH - Zugang
● Schreibrechte der Verzeichnisse
● Installation der benötigten Libs (zb. git,…).
● + Legt Verzeichnisse „shared“ und „releases“ an.
NEUES PROJEKT
cap {stage} deploy
● Capistrano verbindet sich zur Stage
● Legt einen neuen releases/{timestamp} an
● Setzt darin die symlinks für "shared dirs und shared files"
● Code Update
● Setzt den symlink 'current' auf den releases/{timestamp}
● Abschließende Tasks
Struktur
Weitere Möglichkeiten...
● Magento installieren ?
● Update Scripts ?
● Datenbank ?
● Tests ?
● Revert ?
Magento autom. Installieren
cap {stage} project:install_magento
● führt install.php anhand der angegeben Parameter
/config/stage/{stage}.rb aus
php install.php -- --license_agreement_accepted "yes" -- locale "de_AT" ...
Datenbank
cap {stage} project:import_db
● Lädt einen mySQL Dump hoch und importiert diesen.
UnitTests
cap {stage} project:run_tests
● Verbindet sich zur Stage und für phpunit aus
Rollback inkl. Datenbank
cap {stage} deploy:rollback
● deploy:starting
● deploy:started
●
deploy:reverting - revert server(s) to previous release
●
deploy:reverted - reverted hook
●
deploy:publishing
● deploy:published
● deploy:finishing_rollback - finish the rollback, clean up everything
●
deploy:finished
Danke

Deploy Magento Shops with Capistrano v3

  • 1.
    Deploy Magento Shopsmit Capistrano Roman Hutterer - 2015 CAPISTRANO - MAGENTO
  • 2.
    ROMAN HUTTERER ● SelbstständigerWebentwickler www.multibyte.at ● Senior Developer bei Cyberhouse www.cyberhouse.at ● Magento Certified Developer ● Webentwickler seit 2005 ● Magento-Entwickler seit 2011 ● @roman204 ● http://github.com/roman204
  • 3.
    WARUM EIN DEPLOYMENTTOOL? ● kein direkter Zugang (FTP, SSH, SFTP,...) nötig ● kein „vergessen Hochzuladen“ ● keine Änderungen am Server direkt ● schneller Rollback ● wiederkehrende Schritte können automatisiert werden ● clearCache, enableCompiler,... ● Automatisches Testen möglich ● meistens History ● ….
  • 4.
    WAS IST CAPISTRANO? ●ein Deployment – Tool ● geschrieben in Ruby ● Open Source ● eine Community Entwicklung ● einfach Erweiterbar und/oder Überschreibbar ● ist Event gesteuert ● leicht zu debuggen ● ...
  • 5.
    VORTEILE CAPISTRANO? ● SchnellesCode Deployment (Komplett oder Teil) ● Prozess – Automatisierung (zb. Klone Projekt, Flush Cache, DB Update) ● Mehrstufiges Deployment (dev, staging, live) ● Multiple Server Deployment ● Befehle auf Server ausführen ● Schnelles Rollback zu einer archivierten Version der Applikation ● Server Rollen abbilden (DB, Web, App,...) ● Tasks „before“ und „after“ Tasks auslösen ● Verzeichnisse und/oder Dateien zwischen Releases sharen ● ...
  • 6.
    INSTALL CAPISTRANO „apt“ managedDistro's: ● apt-get install ruby ● gem install capistrano ● apt-get install git (Client & Server) Capistrano im Projekt initialisieren: ● cd projectPath ● cap install Magento Tasks hinzufügen ● https://github.com/roman204/capistran ● magento.rake nach lib/capistrano/tasks kopieren
  • 7.
    CAPISTRANO EINRICHTEN ● deploy.rbeinrichten ● set :application, "myMagentoShop" ● set :repo_url, "git@bitbucket.org:roman204/mage_test.git" ● set :keep_releases, 5 ● selbstdefinierte Tasks ● Magento-Core wird nicht über composer installiert: set :linked_dirs, ['var', 'media', 'sitemaps'] set :linked_files, ['app/etc/local.xml'] ● Magento-Core wird über composer im Verzeichnis „htdocs“ installiert: set :linked_dirs, ['htdocs/var', 'htdocs/media', 'htdocs/sitemaps'] set :linked_files, ['htdocs/app/etc/local.xml']
  • 8.
    DEPLOYMENT KONFIGURATION phpStorm →deploy.rb The „Flow“ Alle direkt aufrufbaren Tasks mit cap -T phpStorm → magento.rake
  • 9.
    CAPISTRANO UND MAGENTO Magentospezifische Tasks für Capistrano v3
  • 10.
    STAGES EINRICHTEN ● Stageseinrichten ● config/deploy/{mystage}.rb ● Rolle definieren ● SSH Zugang definieren – sollte Schlüssel basiert authentifiziert werden – sollte ein eigener User am Server sein
  • 11.
    NEUES PROJEKT cap {stage}deploy:check Capistrano verbindet sich zur Stage "development" und überprüft ob die Abhängigkeiten für ein Deployment erfüllt sind. Überprüft wird : ● SSH - Zugang ● Schreibrechte der Verzeichnisse ● Installation der benötigten Libs (zb. git,…). ● + Legt Verzeichnisse „shared“ und „releases“ an.
  • 12.
    NEUES PROJEKT cap {stage}deploy ● Capistrano verbindet sich zur Stage ● Legt einen neuen releases/{timestamp} an ● Setzt darin die symlinks für "shared dirs und shared files" ● Code Update ● Setzt den symlink 'current' auf den releases/{timestamp} ● Abschließende Tasks
  • 13.
  • 14.
    Weitere Möglichkeiten... ● Magentoinstallieren ? ● Update Scripts ? ● Datenbank ? ● Tests ? ● Revert ?
  • 15.
    Magento autom. Installieren cap{stage} project:install_magento ● führt install.php anhand der angegeben Parameter /config/stage/{stage}.rb aus php install.php -- --license_agreement_accepted "yes" -- locale "de_AT" ...
  • 16.
    Datenbank cap {stage} project:import_db ●Lädt einen mySQL Dump hoch und importiert diesen.
  • 17.
    UnitTests cap {stage} project:run_tests ●Verbindet sich zur Stage und für phpunit aus
  • 18.
    Rollback inkl. Datenbank cap{stage} deploy:rollback ● deploy:starting ● deploy:started ● deploy:reverting - revert server(s) to previous release ● deploy:reverted - reverted hook ● deploy:publishing ● deploy:published ● deploy:finishing_rollback - finish the rollback, clean up everything ● deploy:finished
  • 19.