Michiel Verhoef gaf een presentatie over Vagrant tijdens de laatste bijeenkomst van dit jaar bij JUG Utrecht. Onze volgende bijeenkomst vindt plaats op 9 januari 2017.

Joomla Nieuws

Themler: is iets van Artisteer waar je relatief makkelijk sites mee kunt bouwen. In verschillende CMS-en. Werkt leuk, maar je hebt wel veel overhead (net zoals bij een kant en klare template). En het is op abonnementsbasis: als je stopt met je abonnement, kun je niets meer.

Bij de vorige bijeenkomst was er een nieuwe deelnemer met een gehackte website. Omdat we allemaal iets te enthousiast waren om hem te helpen, ontstond er chaos. Tel daarbij op dat je een hack niet echt makkelijk kunt oplossen tijdens het laatste halfuurtje van een JUG-bijeenkomst en het resultaat is: teleurstelling. De deelnemer is uiteindelijk wel geholpen, door Martijn. Dat heeft flink wat tijd gekost. Martijn heeft via FTP over de bestaande 3.5 Joomla installatie een schone gezet, site naar 3.6.4 gebracht, extensies geüpdated, een hack gevonden in de template, een backup gevonden met hackvrije bestanden erin, die bestanden erop gezet en toen was hij even goed, maar daarna werd hij steeds opnieuw gehackt. Op serverniveau bleek het een drama te zijn. Het bureau dat het hostte ontdekte dat Martijn van alles op het Cpanel deed en veranderde zonder overleg het wachtwoord. Toen kon Martijn er dus ook niet meer bij. Maar toen stopten ook de hacks, dus dat was een geluk, want daarmee was ook boven water hoe de site steeds weer gehackt kon worden. En nu is het opgelost.

De vraag is nu wel: is het niet een goed idee om een Joomla!-spreekuur te organiseren bij de Zpot? Als Zpot het wil tenminste? Misschien. Na afloop van de bijeenkomst is er sowieso wel wat tijd om dieper op dingen in te gaan, één op één.

Presentatie Vagrant – Michiel Verhoef

Lokaal een site ontwikkelen heeft als voordeel dat je lokaal lekker van alles kunt uittesten en dat je dingen kunt doen die in een online testomgeving niet kunnen.

Nadeel is dat je lokale omgeving niet gelijk is aan de productieomgeving, dat samenwerken moeilijker is en dat de klant niet makkelijk kan meekijken.

Onderwerpen van vanavond:

  • Lokaal ontwikkelen in een server-like setting
  • Vagrant Joomla-in-a-box, ScotchBox
  • Vagrant Puppet
  • Vagrant als middel voor Docker
  • Deploy

De manier waarop je een website ontwikkelt is anders dan twintig, vijftien, of tien jaar geleden. Je had toen niet veel keus: XAMPP, MAMP, AMPPS, WAMP, Devserver: allemaal tools met heel veel opties die je in één keer installeert en dan heb je Apache en MySQL en nog meer. Met dat soort tools doe je net alsof je laptop de hosting omgeving kan simuleren. Dat kan goed werken, maar niet altijd.

Michiel werkte ook zo. En als er dan een lastig probleem kwam, vroeg hij zich soms af: ben ik nu een probleem van mijn hosting omgeving aan het herstellen, of een probleem van mijn website? Zo’n probleem kan bijvoorbeeld te maken hebben met rechten.

Jaarlijks komen er WAMP-achtigen bij, er verdwijnen er ook een paar. Ze zijn makkelijk en handig. Maar je bent niet flexibel in je PHP-keuzes: je moet maar hopen dat de versie die je wilt er toevallig in zit, of beschikbaar is.

Met Vagrant werkt dat anders.

Met een virtuele server installeer je een pakket op je computer waarmee je kunt doen of je een server hebt die los staat van jouw computer. Daarvoor moest je wel steeds een lijstje afwerken met instellingen. Vagrant kan de instellingen alvast vastleggen voor je virtuele server.

Met Docker kun je ook een omgeving scripten, maar dan andersom. Bij Vagrant begin je met een script dat een server installeert, je logt in, doet van alles en sluit af. De volgende keer ga je verder waar je gebleven bent. Bij Docker maak je een server aan voor eenmalig gebruik. Daarin kun je doen wat je wilt, en als je hem afsluit is-ie weg. Je start dus nooit meer dezelfde server op. Wil je iets veilig stellen, dan moet je het toevoegen aan je script. Heb je extra capaciteit nodig, dan kun je er nog een server bij instellen.

Er is ook een Joomla-docker: https://hub.docker.com/_/joomla/.

De beste manier is om met Vagrant een Ubuntu omgeving te maken op je systeem (de meeste webservers werken op Linux) en daar met Docker in te werken. Zelfs als je vier servers naast elkaar wilt zien functioneren, zal dat goed werken.

Het idee van Vagrant: je installeert het, kiest een box (server met OS) erop, past Vagrantfile aan naar jouw smaak, maakt een provision script, test en publiceert je nieuwe box op de Hashicorp / Atlas (hub waar je boxen kunt downloaden en je eigen box kunt delen).

Vagrant heeft ook nadelen. Het beheer van een Vagrant-omgeving (gedraagt zich als een server) kost tijd en geld. En als er iets misgaat, ben je met serverbeheer bezig (moeilijk). Het opstarten leunt op andere toepassingen. De PC moet ervoor geschikt zijn. Je logfiles worden groter, dus die gaan veel schijfruimte nemen. Opstarten duurt soms langer, Windows kan langzamer worden. En als je database of het systeem crasht, ben je je database kwijt. Dat is met name een probleem bij Docker (tenzij je een script hebt gemaakt dat een database dump maakt en die ergens neerzet).

Vagrant werkt uitsluitend via de command line.

De Joomlatools Vagrantbox (hier: https://www.joomlatools.com/developer/tools/vagrant/) is een server die je kunt gebruiken om Joomla te installeren. Daar zitten allemaal tools in die specifiek bedoeld zijn voor Joomla. Je kunt dus met één commando een nieuwe site maken, maar ook met één commando van PHP-versie veranderen. Een paar leuke tools: PHP MyAdmin, Mailcatcher (tool die ervoor zorgt dat als je iets verstuurt, dat-ie dat afvangt; hij stuurt het niet naar buiten maar je kunt het wel zien; je kunt dus allerlei mailgerelateerde dingen testen), op basis van Ubuntu 14.04, en je kunt snel PHP versies wisselen. Alle PHP-versies. Dat kan met andere oplossingen niet zo makkelijk.

Het nadeel van de Joomlatools Vagrantbox: sommige dingen kun je niet wijzigen. Twee naast elkaar draaien is heel ingewikkeld. Even snel de Ubuntu versie updaten kan ook niet echt. Je krijgt de Apache en de MySQL die erop zit, maar qua PHP ben je helemaal vrij.

Als je in een team werkt, kun je iedereen heel snel dezelfde omgeving geven. Met Git halen ze dan de code op en dan kunnen ze er allemaal mee aan de slag.

Tijdens de bijeenkomst heeft Michiel live een demo gegeven met behulp van de tool Cygwin (https://www.cygwin.com/) (zou ook een andere kunnen zijn, bijvoorbeeld de Windows prompt).

Hij heeft de verschillende commando’s laten zien. Om aan de slag te kunnen moet je een Vagrantfile hebben waarin dingen ingesteld zijn, bijvoorbeeld een IP adres met een naam, om te kunnen gebruiken als servernaam. Op Windows is het soms lastig om de hostfile aan te passen, omdat je daar administrator rechten voor moet hebben.

Bij Windows 10 kun je problemen krijgen met poortnummers (de beruchte poort 80).

Je kunt in de browser makkelijk naar PHP MyAdmin, MailCatcher, log files, de file browser en de terminal. In de terminal heb je de beschikking over heel veel commando’s die je kunt oproepen met bijvoorbeeld “box” of “joomla”.

Met het commando $ joomla site:create kun je een site opzetten. Typ je er ook nog -h achter, dan krijg je hulp. Met $ joomla versions kun je de beschikbare versies zien.

Je kunt dus bijvoorbeeld release candidates van Joomla installeren om te testen of jouw eigen extensies nog werken, of dat er niks anders omvalt.

Vraag: kan PHP Storm deze box benaderen? Je kunt wel Vagrant benaderen, je kunt Vagrant als een complete server in PHP Storm installeren.

Vraag: Kun je ook dingen als NoJS erin zetten? In Scotchbox wel, daar zit het standaard in, in Joomlatools Vagrantbox niet (die is in beton gehouwen).

Ik test nieuwe Joomlaversies altijd in de Scotchbox. Ik download de versie dan via Git.

Tip van Michiel: als er een nieuwe release is, test dan altijd of de Two Factor Authentication het nog doet.

Scotchbox: Michiel werkt liever met Scotchbox. Het is makkelijk installeren als je Git ter beschikking hebt. Het regelt je git clone met één commando, en na vagrant up draait je nieuwe serveromgeving.

Michiel demonstreert ook de Scotchbox vanavond. Hij zet een definitie van de Scotchbox in Git met het clone commando.

Als je met Windows werkt, moet je voor Scotchbox in de Vagrantfile de optional NFS aanzetten (#weghalen) en de config.vm.synced_folder juist uit (# neerzetten).

Het voordeel van de Scotchbox: snel op te zetten, stabiel. Maar als je flexibel wilt zijn met PHP-versies, is de Joomlatools Box makkelijker. Michiel vindt voor gewone dingen de Scotchbox makkelijker.

Met de Vagrant Box kun je ook een monitoring tool installeren (door er met SSH heen te gaan). Dan kun je ook PHP upgraden en allerlei andere dingen aan- en uitzetten die je normaal niet zou kunnen doen.

Er is ook een optie die Vagrant Share heet: daarmee kun je wat er op je lokale box in de public map staat, delen met iemand anders (of bekijken op een telefoon die niet in je netwerk zit). Je geeft een commando, er wordt een fake url geproduceerd die tijdelijk geldig is en die je kunt gebruiken om in je browser de box te benaderen (wel uitzetten als je het niet meer nodig hebt, want het loopt over internet via jouw machine, en die wordt er niet sneller van).

Voorbeelden van boxen vind je bij de bouwers van Vagrant: https://atlas.hashicorp.com/boxes/search. Downloaden met een commando en dan kun je hem draaien met vagrant up. Je kunt hier ook zelf je boxen delen.

Er zijn trouwens ook commando’s waarmee je je shares kunt bekijken of ze kunt intrekken.

Puphpet: https://puphpet.com/ tool om virtuele machines te maken met Vagrant. Allerlei dingen instellen en Puphpet genereert een lijst. Die kun je in de map zetten waar je je project wilt zetten, vagrant up en je configuratie draait. Michiel heeft de ervaring dat je zoiets op Windows niet aan de praat krijgt, maar met een Mac of Linux werkt het prima.

Nadeel van al dit soort tools: als het niet werkt, is het ingewikkeld om uit te zoeken waarom niet.

Vanuit Vagrant kun je een Vagrant deploy doen (je code live zetten). Er zijn heel veel mogelijkheden voor (FTP, FTP vanuit editor/IDE, deploydhq, CodeShip, Vagrant Deploy, Jenkins/CI, deploy uit IDE). Michiel vindt het een interessant onderwerp waar hij nog niet helemaal uit is, en hij gaat er in maart een presentatie over geven bij JUG Amsterdam.

Dokter Joomla

Case: Ik heb XAMPP geïnstalleerd, nu wil ik daar een kloon van mijn website neerzetten. Ik heb met Akeeba Backup een backup gemaakt, hoe krijg ik die lokaal aan de praat?

Antwoord: Met Akeeba Kickstart! Zet de backup in het mapje waar je site moet komen, zet daar ook het bestandje kickstart.php en het bestandje nl-NL.ini. Typ dan in je browserbalk het pad naar je lokale map, gevolgd door /kickstart.php en het start op. Daarna wijst het zich vanzelf.

2 reacties

EasyDiscuss Avatar
slibbe
Erg uitgebreid en goed verslag, crommie!
EasyDiscuss Avatar
Anja de Crom
Dank u slibbe :)

Reageer

1000 Resterende tekens