Vagrant, Homestead, Laravel Vagrant tekee virtuaalikoneiden hallinnan melko helpoksi. Vaikka voit asentaa kaiken tarvitsemasi virtuaalikoneeseen itse, valmiit Vagrant boxit tarjoavat nopean aloituskohdan. Paikallisessa kehityksessä tarvittavat tietokannat, kielen laajennokset ja www-palvelinohjelma ovat valmiiksi asennettuja ja määriteltyjä. Palvelimen asentaminen tyhjän käyttöjärjestelmän päälle on sellainen osaaminen, jota jokainen www-ohjelmointia tekevä joutuu jossain määrin opettelemaan, mutta päästäkseen nopeasti käsiksi itse koodaamiseen valmis boxi tekee paljon tästä työstä puolestasi. Vaikka dokumentaatio esimerkiksi Homesteadin asentamiselle on tarjolla (https://laravel.com/docs/5.3/homestead), se olettaa jonkin verran aiempaa tietämystä. Mukailen tässä asennusohjetta siten, että pyrin tarjoamaan hieman täsmennyksiä mahdollisiin uusiin asioihin. Sisällysluettelo Vagrant ja VirtualBox... 1 Komentokehoitetyökalut... 1 Homestead... 2 Homestead.yaml... 2 Vagrant UP... 3 Hosts... 4 Troubleshoot... 5 Vagrant ja VirtualBox Asenna ensimmäiseksi Oracle VirtualBox. Lataussivulla on valmiit asennuspaketit useille käyttöjärjestelmille, eikä asennuksessa tarvita juurikaan erityisosaamista. Asenna Vagrant. Lataussivuilla jälleen asennuspaketit eri käyttöjärjestelmille. Jos Vagrant on oikein asennettu, voit ajaa komentokehoitteessa komennon vagrant v, joka tulostaa ruudulle Vagrantin asennusversion. Komentokehoitetyökalut Jos käytät macos:ää tai Linuxia, sinulla on useimmat tarvittavat työkalut jo valmiiksi asennettuna. Jos et ole koskaan käyttänyt macos:llä esimerkiksi Git:iä, git komennon ajaminen saattaa ilmoittaa XCoden kehitystyökalujen asentamisen tarpeesta, mutta sen pitäisi aloittaa asentaminen hyväksynnän jälkeen itse. Jos taas käytät Windowsia, sinulla ei välttämättä ole sellaisia komentorivityökaluja, joita asennusohjeessa oletetaan sinulla olevan. Git:n asennuksen yhteydessä olet saattanut asentaa Git Bash shellin, tai voit asentaa Cygwin:n (http://www.cygwin.com/), tai konsoliemulaattorin, kuten torstai 12. tammikuu 2017 1
Cmder (http://cmder.net/). Käytän esimerkkikuvissa Cmder:iä Windows 10 käyttöjärjestelmässä. Komennot kirjoitetaan siis Cmder:n ikkunaan. Homestead Lisätään laravel/homestead boxi Vagrantin kokoelmaan komennolla vagrant box add laravel/homestead Tämä lataa Homestead boxin Vagrantille. Tämän lisäksi tarvitaan hieman hämäävästi nimetty Homestead ohjelma, joka ohjaa Homestead boxin asetuksia. Voit ladata sen suoraan GitHub:sta. Cd ~ git clone https://github.com/laravel/homestead.git Homestead Huomaa, että ~ tarkoittaa omaa kotihakemistoasi. MacOS käyttöjärjestelmässä tämä voi olla esimerkiksi /Users/antti, tai Windowsilla C:\Users\Antti. Komennot luovat kotihakemistoosi Homestead hakemiston, johon kloonautuu tarvittavat asennuskomentosarjat. Windowsilla voit ajaa init.bat tiedoston, macos:llä init.sh:n. Tämä luo kotihakemistoosi.homestead hakemiston ja sinne Homestead.yaml tiedoston. Homestead.yaml Tämä tiedosto määrittelee asetuksia Homestead Vagrant boxille. Jos Yaml on merkintäkielenä sinulle uusi, niin huomaa ainakin se, että sisennyksillä on merkitystä. Jätän tässä kohtaa Homestead.yaml:n niihin asetuksiin, jotka siinä oletuksena ovat, mutta huomioi tiedostosta ainakin seuraavat. folders: - map: ~/Code to: /home/vagrant/code Tämä määrittää jaetun kansion. Näitä voi olla useita, mutta tässä esimerkissä määritellään, että kotihakemistossasi olevat Code hakemisto tuodaan virtuaalikoneelle näkyviin polulla /home/vagrant/code. Tämä tarkoittaa sitä, että kaikki muutokset, joita teet isäntäkoneen hakemistoon, ovat suoraan käytettävissä virtuaalikoneessa. Sinun ei siis tarvitse siirrellä tiedostoja esimerkiksi FTP:n yli. Pidä huoli siitä, että muistat luoda tuon Code hakemiston kotihakemistosi juureen ennen kuin yrität käynnistää virtuaalikoneen. sites: - map: homestead.app to: /home/vagrant/code/laravel/public torstai 12. tammikuu 2017 2
Tämä puolestaan määrittää www-palvelinohjelmalle virtualhostin. Jos virtuaalikoneen wwwpalvelinohjelma vastaanottaa pyynnön osoitteella http://homestead.app, se tarjoaa hakemiston /home/vagrant/code/laravel/public. Tässä siis oletetaan, että määrittelit edellisessä kohdassa ohjelmakoodien säilytyspaikaksi /home/vagrant/code ja että sen sisälle on asennettu Laravel framework hakemistoon Laravel. Laravel puolestaan olettaa, että julkisesti tarjottava osuus ohjelmakoodista, i.e. front controller, löytyy hakemistosta public. Tämän Laravel asettaa oletuksena itse. Jos sinulla on useita projekteja, jotka haluat ajaa saman virtuaalikoneen sisällä, voit tehdä useita virtualhost määrittelyjä lisäämällä vaikka että testi1.dev -> /home/vagrant/code/testiprojekti. Muita huomioitavia asioita ovat IP -osoite, jonka haluat virtuaalikoneen saavan, koneelle varattavan muistin määrä, sekä kohta databases. Tähän listaan lisätyt nimet lisätään automaattisesti MySQL/MariaDB tietokantaan tietokannoiksi. Vielä viimeisenä on maininnat authorize ja keys. Nämä viittaavat SSH -avaimiin ja nämä asetetaan virtuaalikoneen authorized_keys tiedostoon. Tämä puolestaan tarkoittaa käytännössä sitä, että voit kirjautua SSH:n yli virtuaalikoneeseen antamatta salasanaa, sillä tunnistaminen tapahtuu SSH avaimien avulla. Sinulla tulee kuitenkin olla SSH -avain luotuna. Jos olet käyttänyt GitHub:ia versiohallinnan remotena, sinulla varmaankin on SSH avaimet jo luotuna, mutta jos sinulla ei ole ~/.ssh hakemistoa ja siellä id_rsa.pub ja id_rsa tiedostoja, niin luo itsellesi SSH avaimet esimerkiksi näiden ohjeiden mukaisesti: https://help.github.com/articles/generating-anew-ssh-key-and-adding-it-to-the-ssh-agent/ Vagrant UP Oletan, että Homestead on asennettu aiemman kohdan mukaisesti hakemistoon ~/Homestead. Mene siihen hakemistoon ja suorita Vagrant up Tämä provisioi virtuaalikoneen ja pyrkii käynnistämään sen. Jos SSH avaimet olivat oikein asetetut ja Code hakemisto on luotu oikeaan paikkaan, konsoliin tulostuu jotain seuraavan kaltaista. Huomaa kuvan lopussa kohta vihreällä, jossa SSH avain asetetaan virtuaalikoneen sallittuihin avaimiin. torstai 12. tammikuu 2017 3
Jos virtuaalikone käynnistyi ongelmattomasti ja SSH avain asetettiin oikein, voit nyt kirjautua SSH:n yli virtuaalikoneeseesi komennolla Vagrant ssh Kuvassa näemme, että olemme siirtyneet virtuaalikoneeseen käyttäjätunnuksella vagrant@homestead ja että näemme hakemiston /home/vagrant/code. Seuraavaksi voimme käyttää Homestead boxiin valmiiksi asennettua Composer PHPpakettienhallintaohjelmaa asentaaksemme Laravel ohjelmistokehyksen komennolla Composer create-project laravel/laravel Laravel Projektin nimeksi tulee siis Laravel, koska sen aiemmin määrittelimme vastaamaan homestead.app osoitetta. Koska määrittelimme Homestead.yaml tiedostoon, että virtuaalikoneen tulisi toimia IP-osoittessa 192.168.10.10, voimme nyt testata kokonaisuutta vierailemalla tässä osoitteessa isäntäkoneella. Hosts Koska meillä on vain yksi projekti, voimme toimia suoraan IP osoitteen perusteella, mutta jos haluaisimme samalle virtuaalikoneelle useita virtualhosteja, meidän olisi pakko kutsua konetta kelvollisella nimellä IP osoitteen sijaan, koska tämä on se tapa, jolla WWW-palvelinohjelma erottelee virtualhostit toisistaan. Voit halutessasi lisätä isäntäkoneesi hosts tiedostoon rivit jokaiselle virtualhostille. Mac ja Linux koneissa tämä on /etc/hosts ja Windows koneissa c:\windows\system32\drivers\etc\hosts. Hosts tiedostoon voidaan lisätä rivejä IP osoite, domain. Eli esimerkiksi torstai 12. tammikuu 2017 4
192.168.10.10 homestead.app 192.168.10.10 testi1.dev Nämä rivit ohjaavat noihin osoitteisiin menevät pyynnöt virtuaalikoneen IP osoitteeseen, mutta virtuaalikoneen www-palvelinohjelma osaa niiden perusteella tarjota oikean hakemiston (homestead.app -> /home/vagrant/code/laravel/public ja testi1.dev -> /home/vagrant/code/testiprojekti). Troubleshoot Vaikka asennus on pyritty tekemään mahdollisimman helpoksi, virtualisoinnissa on aina muutamia mahdollisia ongelmia. Esimerkiksi se, että Homestead boxi on Ubuntu 64bit. Jos isäntäkone on 32 -bittinen, sen sisällä 64 -bittisen koneen virtualisointi voi johtaa isoihin ongelmiin. Virtualisointi vaatii myös asioita isäntäkoneelta. Yleisesti ottaen Windowsissa hardware virtualization tuki tulee olla laitettuna päälle BIOSissa. Tämä taas ei välttämättä mene päälle, jos sinulla on jo päällä Microsoft Hyper-V. Hyper-V:n saa Windowsin asetuksista pois päältä tai komentoriviltä komennolla dism /online /disable-feature /featurename:microsoft-hyper-v-all HW Virtualization tuki taasen löytyy BIOSin syövereistä jos on löytyäkseen, mutta tässä kohtaa tietysti emolevyn valmistajasta riippuen BIOS voi olla hyvinkin eri näköinen. Prosessorivalmistajat Intel ja AMD tarjoavat verkkosivuillaan Windows ohjelmia, joilla voi tarkistaa mm. onko virtualisointi päällä. Intelin prosessoreille esimerkiksi https://downloadcenter.intel.com/download/7838/intel-processor-identification-utility- Windows-Version Joka tapauksessa kun olet ajanut vagrant up komennon ja huomannut, että kaikki ei mennytkään oikein, voit tarkistaa, onko ongelmana se, ettei virtuaalikone lähde käytiin vilkaisemalla VirtualBoxin käyttöliittymää. torstai 12. tammikuu 2017 5
Show painikkeella VirtualBox avaa virtuaalikoneen ikkunan, kunhan virtuaalikone on tilassa Running. Tämä tila ei takaa kuitenkaan sitä, että virtuaalikone toimisi oikein. Aukeava ikkuna valottaa tilannetta paremmin. Jos isäntäkoneen virtualisointiasetukset ovat pielessä, saatat saada jo tässä kohtaa VirtualBoxilta ilmoituksen ongelmista. Jos ikkunaan aukeaa vain musta ruutu, joka ei reagoi mitenkään, niin asetukset ovat pielessä. Jos taas aukeaa musta ruutu, jossa on kirjautumiskehoite, voit kirjautua sisään tunnuksilla vagrant:vagrant. Tällöin virtuaalikone toimii oikein ja ongelmana on Homestead.yaml asetukset. Tarkista, että viitatut kansiot ovat oikein ja etenkin, että SSH avaimet toimivat. SSH avaimia ei ole pakko käyttää, voit yrittää kirjautua virtuaalikoneeseen myös normaalisti komennolla Ssh vagrant@192.168.10.10 -p2222 Lopulta, jos sinulla on 32 bittinen isäntäkone, niin kannattaa harkita 32 bittisen vagrant boxin käyttöä. torstai 12. tammikuu 2017 6