Vytvořit vývojové prostředí není vždy jednoduché a zabere vždy hodně času než začnete vůbec pracovat na svém projektu. Laravel na toto myslel a vytvořil proto pro Windows Vagrant balíček s názvem Homestead (pro Mac existuje Valet), který elegantním způsobem umožňuje využívat virtuální stroj a vytvořit prostředí velmi jednoduše a rychle. V tomto článku se dozvíte, jak Homestead bez problému rozběhnout na Windows 10.

Laravel Homestead je oficiální předpřipravený Vagrant balíček, který poskytuje vývojové prostředí bez nutnosti instalování PHP, webového serveru a dalších jiných serverových softwarů na váš lokální počítač. Nemusíte si tak na svůj operační systém instalovat všechny věci, jen aby jste si rozběhli svůj projekt. Vagrant je zcela nezávislý a pokud někde vznikne chyba, můžete balíček smazat a vytvořit znovu téměř během minuty.

Homestead běží na Windows, Mac (tam doporučuji využít spíše Valet) nebo Linux, a zahrnuje webový server Nginx, PHP 7.1, MySQL, Postgres, Redis, Memcached, Node a další věci, které potřebujete k vývoji Laravel aplikace. Zde je úplný seznam, které Homestead poskytuje:

  • Ubuntu 16.04
  • Git
  • PHP 7.1
  • Nginx
  • MySQL
  • MariaDB
  • Sqlite3
  • Postgres
  • Composer
  • Node (With Yarn, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • ngrok

Instalace

Návod je psán pro spuštění Homestead na Windows 10 s Laravel 5.4 ve Virtualboxu. Podobný postup by však měl být i se staršími verzi Windows nebo Laravel. Všechny příkazy raději pište ručně, používání kopírovat/vložit může vytvořit zbytečné problémy, kdy se do příkazu zkopírují i nechtěné tečky či čárky a zbytečně pak budete hledat, kde vznikl problém.

Krok 1

Podle oficiální dokumentace je potřeba povolit hardwarovou virtualizaci (VT-x). Návod jak ji povolit najdete například zde. Pokud návod nepomohl, pak se snažte na Google najít váš počítač/notebook a jeho konfiguraci pro povolení VT-x. A pokud využíváte Hyper-V na UEFI systému, pak navíc potřebujete zakázat Hyper-V, aby jste měli přístup k VT-x.

Krok 2

Po nastavení z kroku 1 potřebujete stáhnout nejnovější verzi Virtualboxu a Vagrantu.

Odkaz pro stažení Virtualboxu: https://www.virtualbox.org/wiki/Downloads

Odkaz pro stažení Vagrantu: https://www.vagrantup.com/downloads.html

Poté co je stáhnete prvně nainstalujte Virtualbox a až poté Vagrant. Pro dokončení instalace budete nejspíše potřebovat restartovat počítač.

Krok 3

Nyní potřebujete stáhnout a nainstalovat Git bash (pokud již máte git bash nainstalovaný, pak tento krok přeskočte).

Odkaz pro stažení: https://git-scm.com/download/win

Krok 4

Otevřete Git bash jako administrátor a spusťte příkaz: ```php vagrant box add laravel/homestead ```

Pokud dostanete odpověď jako chybu:

The box ‘laravel/homestead’ could not be found or
could not be accessed in the remote catalog. If this is a private
box on HashiCorp’s Atlas, please verify you’re logged in via
`vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:
URL: [“https://atlas.hashicorp.com/laravel/homestead"]
Error:

pak musíte stáhnout a nainstalovat MS Visual C++ 2010 x86 Redistributables a spustit znovu příkaz:

vagrant box add laravel/homestead

Tímto příkazem by se měl ve Vagrantu přidat balíček laravel/homestead. Poté zvolte číselnou volbu s Virtualboxem. Akce chvíli trvá a stažení balíčku závisí na rychlosti vašeho internetového připojení.

Krok 5

Po dokončení předchozího kroku v git bash napište `cd ~` (vlnovka se píše pravý ctrl a +) a zmáčkněte enter. Příkaz vás přesune do uživatelského adresáře, kde napište příkaz: ```php git clone https://github.com/laravel/homestead.git Homestead ```

Díky tomu naklonujete Homestead repozitář do složky Homestead ve vašem uživatelském adresáři (C:\Users\uzivatelske_jmeno ).

Nyní vykonejte příkaz pro přesun do složky Homestead:

cd Homestead

A poté:

bash init.sh

který vytvoří konfigurační soubor Homestead.yaml. Soubor se vytvoří ve složce C:\Users\uzivatelske_jmeno\Homestead.

Krok 6

Dalším krokem je ssh klíč. Ve složce `C:\Users\uzivatelske_jmeno` zkontrolujte, jestli existuje i skrytý adresář `.ssh`. Pokud existuje, pak v něm zkontrolujte, jestli jsou zde i soubory `id_rsa` a `id_rsa.pub`. Pokud adresář `.ssh` neexistuje nebo oba soubory v něm neexistují, pak spusťte následující příkaz: ```php ssh-keygen -t rsa -C "vas-email@example.com" ```

poté se vás příkazový řádek zeptá na dvě věci. Nepotřebujete nic vyplňovat, jen zmáčkněte enter kdykoliv to po vás bude něco chtít. Poté se příkaz vykoná, vytvoří se nový adresář .ssh (pokud již neexistuje) společně s dvěma soubory s názvem id_rsa a id_rsa.pub jako jeho obsah.

Krok 7

Nyní budeme editovat soubor `Homestead.yaml`, který jsme vygenerovali v pátém kroku. Tento krok je velmi důležitý. V adresáři `C:\Users\uzivatelske_jmeno\Homestead` otevřete soubor `Homestead.yaml` v jakýmkoliv editoru. Soubor vypadá následovně:
— -
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
 — ~/.ssh/id_rsa

folders:
 — map: ~/Code
 to: /home/vagrant/Code

sites:
 — map: homestead.app
 to: /home/vagrant/Code/Laravel/public

databases:
 — homestead

# blackfire:
# — id: foo
# token: bar
# client-id: foo
# client-token: bar

# ports:
# — send: 50000
# to: 5000
# — send: 7777
# to: 777
# protocol: udp

Vysvětlím soubor krok za krokem a také ho upravím, aby se nám správně rozběhl homestead.

ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

Tyto řádky popisují na které IP adrese bude náš homestead poslouchat - tedy 192.168.10.10 (můžete upravit), kolik paměti zkonzumuje (maximálně) - tedy 2048 (můžete upravit), bude využívat jedno CPU a poskytovatel je virtualbox.

authorize: ~/.ssh/id_rsa.pub
keys:
 — ~/.ssh/id_rsa

Na těchto řádkách nastavujeme náš ssh klíč pro homestead. Pamatujete jak jsme v šestém kroku vytvořili naše ssh klíče? Na tyto klíče budeme v našem Homestead.yaml odkazovat - po jeho editaci bude úprava v souboru vypadat takto:

authorize: c:/Users/uzivatelske_jmeno/.ssh/id_rsa.pub

keys:
 — c:/Users/uzivatelske_jmeno/.ssh/id_rsa

Nezapomeňte používat malé písmena pro název disku (c namísto C) a lomítka dopředu (/) namísto lomítek dozadu (). Tento standard budeme dodržovat v celém souboru Homestead.yaml.

folders:
 — map: ~/Code
 to: /home/vagrant/Code

Zde mapujeme adresář, který se bude používat na našem PC a ve Vagrantu. Představte si obyčejnou složku ve Windows, ve které když cokoliv změníte, změna ihned promítne i do Vagrantu - a naopak.

- map: ~/Code  značí adresář, který je umístěn v našem PC

to: /home/vagrant/Code  značí kde budeme mít přístup ke stejnému adresáři ve Vagrantu. Stále vám to není jasné? Tak si tyto řádky upravíme a po jejich změně by vše mělo být jasné:

folders:
 — map: c:/www
 to: /home/vagrant/Code

Adresáře c:/www a /home/vagrant/Code odkazují na stejný adresář. Pokud cokoliv změníte v /home/vagrant/Code, pak se změna promítne i do adresáře c:/www a naopak. V mým případě je c:/www můj adresář s projekty. Můžete použít jakýkoliv název adresáře namísto /home/vagrant/Code, například /home/vagrant/moje_projekty.

sites:
 — map: homestead.app
 to: /home/vagrant/Code/Laravel/public

Nespleťte si tuto část s předchozí, tyto řádky nemají s předchozí částí folders nic společného. Tato konfigurace říká, že pokud v našem prohlížeči zadáme adresu homestead.app , pak Vagrant poskytne zdroje z adresáře /home/vagrant/Code/Laravel/public . Samozřejmě jsme ještě nevytvořili složku s názvem Laravel  v našem adresáři /home/vagrant/Code ve Vagrantu nebo v adresáři c:/www v našem PC, ale vytvoříme ji o něco později, v desátém kroku. V budoucnu můžete vytvořit více projektů, pak konfigurace může vypadat takto:

sites:
 — map: homestead.app
 to: /home/vagrant/Code/Laravel/public
 — map: site2.bla
 to: /home/vagrant/Code/site2/public
 — map: site3.yeap
 to: /home/vagrant/Code/site3/public

Ještě jedna poznámka, prefix pro /Laravel/public, což je /home/vagrant/Code, musí být úplně stejný jako to: /home/vagrant/Code z minulé sekce. V sekci folders pokud jste použili /home/vagrant/libovolny_nazev pro mapování vašeho projektu v PC, pak v této sekci musíte použít /home/vagrant/libovolny_nazev jako prefix pro /Laravel/public, takže celá cesta bude vypadat /home/vagrant/libovolny_nazev/Laravel/public.

databases:
 — homestead

Tyto řádky vytvoří ve Vagrantu databázi s názvem homestead.

Po editaci Homestead.yaml tak bude soubor vypadat takto:

— -
ip: "192.168.10.10"
memory: 1024
cpus: 1
provider: virtualbox

authorize: c:/Users/Jerry/.ssh/id_rsa.pub

keys:
 — c:/Users/Jerry/.ssh/id_rsa

folders:
 — map: c:/www
 to: /home/vagrant/Code

sites:
 — map: homestead.app
 to: /home/vagrant/Code/Laravel/public

databases:
 — homestead

# blackfire:
# — id: foo
# token: bar
# client-id: foo
# client-token: bar

# ports:
# — send: 50000
# to: 5000
# — send: 7777
# to: 777
# protocol: udp

Krok 8

Aktuálně vám Windows na adrese `homestead.app` v prohlížeči nic nezobrazí. Adresu musíme prvně přidat do souboru `hosts`, takže pokud bychom zadali adresu `homestead.app`, bude odkaz přesměrován na IP adresu, kterou jsme si definovali v souboru `Homestead.yaml` - my jsme IP adresu definovali jako 192.168.10.10. Otevřete si tedy soubor `C:\Windows\System32\drivers\etc\hosts` s administrátorskými právy a přidejte na konec následující řádek: ```php 192.168.10.10 homestead.app ```

mezi IP adresou a odkazem musí být mezera tabulátorem. Pokud by chtěli přidat další odkazy, pak je jen přidejte na konec souboru:

192.168.10.10 homestead.app
192.168.10.10 site2.bla
192.168.10.10 site3.yeap

Nyní je homestead.app  přístupný v našem prohlížeči, ale ještě ho nezkoušejte, nic se vám nezobrazí, protože projekt ještě neexistuje.

Krok 9

Nyní můžeme spustit Homestead ve Vagrantu pomocí příkazu `vagrant up`. Ale abychom ho nastartovali, musíme tento příkaz vykonat vždy z adresáře `C:\User\uzivatelske_jmeno\Homestead`. Můžeme ale udělat něco pro to, abychom ho spustili odkudkoliv pomocí git bash. V adresáři `C:\User\uzivatelske_jmeno` vytvořte nový soubor s názvem `.bash_profile` a vložte do něj následující kód: ```php # Zkratky pro jednodussi navigaci & pristup alias ..="cd .." alias vm="ssh vagrant@127.0.0.1 -p 2222"

Homestead zkratky

function homestead() { ( cd ~/Homestead vagrant $* ) }


Nyní s použitím git bash můžete spustit Vagrant odkudkoliv pomocí příkazu `homestead up`. Soubor `.bash_profile` se načítá při spuštění git bash, takže po jeho vytvoření je potřeba restartovat (vypnout/zapnout) konzoli. Poprvé vykonání příkazu `homestead up` chvíli trvá.

Příkazy pro spuštění a zastavení Vagrantu jsou tedy:
```php
homestead up
homestead halt

Krok 10

Nyní vytvoříme náš první projekt s názvem `Laravel` . Dosud jsme měli pouze složku `/home/vagrant/Code` a aktuálně žádný adresář s názvem `Laravel` v `/home/vagrant/Code` neexistuje. Můžete si to zkontrolovat i ve vaší složce s projekty v PC - v mém případě složka s projekty je `C:/www` . Takže si tento adresář vytvoříme.

Spusťte Homestead pomocí příkazu homestead up. Nyní stále v konzoli vykonejte příkaz:

homestead ssh

To vás přihlásí do Vagrantu. Napište ls  a zmáčkněte enter. Zjistíte, že existuje pouze jediná složka Code. Napište cd Code a opět zmáčkněte enter. Nyní se nacházíte v adresáři Code. Opět vykonejte příkaz ls a uvidíte, že je aktuálně zcela prázdná.

Právě teď je čas vytvořit náš první Laravel projekt. Vykonejte následující příkaz:

composer create-project --prefer-dist laravel/laravel Laravel

Vykonání příkazu chvíli potrvá a vytvoří novou složku Laravel s celým frameworkem uvnitř. Po dokončení příkazu opět napište ls  a zmáčkněte enter a najednou uvidíte i složku Laravel . Otevřete si i váš projektový adresář v PC (pro mě C:/www ) a zjistíte, že i zde existuje složka s názvem Laravel . Teď vidíte, že adresář /home/vagrant/Code  a váš projektový adresář v PC jsou vlastně úplně stejné adresáře.

Krok 11

Vše je již připraveno. Ujistěte se, že Homestead běží, a v prohlížeči zadejte adresu `homestead.app` . Měli byste vidět uvítací stránku Laravelu, gratuluji :-)

Zdroj: medium.com