SlideShare ist ein Scribd-Unternehmen logo
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

Weitere ähnliche Inhalte

PDF
Vagrant - Einführung & Verwendung
PPT
Einsteiger Workshop
PDF
WP-CLI - Das Kommandozeilen Interface für Wordpress
PDF
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
PDF
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
PDF
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
ODP
Rhomobile
PDF
JavaScript Days 2015: Security
Vagrant - Einführung & Verwendung
Einsteiger Workshop
WP-CLI - Das Kommandozeilen Interface für Wordpress
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Magento 2 Zertifizierung - Wissenswertes und ein paar Tipps
Rhomobile
JavaScript Days 2015: Security

Was ist angesagt? (20)

PDF
Deployment mit Webistrano
PDF
Deployment 2.0
PDF
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
PDF
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
PDF
Eine Stunde was mit Api First!
PPTX
Nginx
PDF
Einführung in Puppet und Vagrant
PDF
Entwicklungsumgebungen - Packer, Vagrant, Puppet
PDF
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
PDF
EntwicklerCamp 2014 - DOTS reloaded
PDF
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
PDF
Deployment pipeline mit maven, chef und jenkins
PPTX
C++ Dependency Management 2.0
PDF
Docker for Python Development
PPTX
Continuous Delivery
PPTX
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
PDF
TYPO3 Performance (TYPO3camp München)
PDF
Was ist Docker ?
PPTX
Dockerize It - Mit apex in die amazon cloud
PDF
Continuous Integration mit Hudson
Deployment mit Webistrano
Deployment 2.0
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
Eine Stunde was mit Api First!
Nginx
Einführung in Puppet und Vagrant
Entwicklungsumgebungen - Packer, Vagrant, Puppet
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
EntwicklerCamp 2014 - DOTS reloaded
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Deployment pipeline mit maven, chef und jenkins
C++ Dependency Management 2.0
Docker for Python Development
Continuous Delivery
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
TYPO3 Performance (TYPO3camp München)
Was ist Docker ?
Dockerize It - Mit apex in die amazon cloud
Continuous Integration mit Hudson
Anzeige

Ähnlich wie Deploy Magento Shops with Capistrano v3 (20)

PDF
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
PDF
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
PDF
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
PDF
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
PPTX
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
PDF
Automatisierung mit grunt
PDF
Entwicklung mit Chef und Vagrant - PHPUG HH
PDF
Einführung in Docker
PDF
Make Developers Fly: Principles for Platform Engineering
PDF
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
PDF
JAMstack / Static Site Generators
PPTX
Automatischer Build mit Maven
ODP
Abläufe mit PHP und Phing automatisieren
PDF
Make Developers Fly: Principles for Platform Engineering
PDF
Gradle - Beginner's Workshop (german)
PDF
Opensource Tools für das Data Center Management
PPTX
JavaScript-Erweiterungen für UI und UX
PPTX
Vagrant, Puppet, Docker für Entwickler und Architekten
PDF
Openshift
PDF
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatisierung mit grunt
Entwicklung mit Chef und Vagrant - PHPUG HH
Einführung in Docker
Make Developers Fly: Principles for Platform Engineering
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
JAMstack / Static Site Generators
Automatischer Build mit Maven
Abläufe mit PHP und Phing automatisieren
Make Developers Fly: Principles for Platform Engineering
Gradle - Beginner's Workshop (german)
Opensource Tools für das Data Center Management
JavaScript-Erweiterungen für UI und UX
Vagrant, Puppet, Docker für Entwickler und Architekten
Openshift
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
Anzeige

Deploy Magento Shops with Capistrano v3

  • 1. Deploy Magento Shops mit Capistrano Roman Hutterer - 2015 CAPISTRANO - MAGENTO
  • 2. 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
  • 3. 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 ● ….
  • 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? ● 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 ● ...
  • 6. 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
  • 7. 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']
  • 8. DEPLOYMENT KONFIGURATION phpStorm → deploy.rb The „Flow“ Alle direkt aufrufbaren Tasks mit cap -T phpStorm → magento.rake
  • 9. CAPISTRANO UND MAGENTO Magento spezifische Tasks für Capistrano v3
  • 10. 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
  • 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
  • 14. Weitere Möglichkeiten... ● Magento installieren ? ● 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. Danke