IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Aquest article fa referència Laravel Homestead. Vegeu abans Laravel

NOTA: Recomanem l'ús de NFS per a les carpetes compartides fet que augmenta molt el rendiment de la màquina! A les noves versions de Homestead això es pot activar simplement tenint activat el servidor de NFS nfs-kernel-server i posant type: nfs a les carpetes compartides homestead al fitxer homestead.yaml

Laravel Homestead

Abans de res cal que tingueu instal·lat Virtual Box i Vagrant (si pot ser versions actualitzades). Baixeu els paquets Debian de les respectives webs de Virtual Box i Vagrant i i executeu:

$ sudo dpkg -i vagrant_1.7.2_x86_64.deb
$ sudo dpkg -i virtualbox-4.3_4.3.24-98716~Ubuntu~raring_amd64.deb

També cal tenir claus SSH RSA creades:

$ ssh-keygen -t rsa

NOTA: El codi és un exemple. Tingueu en compte que heu d'adaptar les comandes als noms dels fitxers que pertoquin. Si ja teniu instal·lat VirtualBox o Vagrant no cal que feu aquests passos però si els teniu antics us recomana actualitzeu desinstal·lat els paquets existents amb apt-get remove i executant els dpgk -iindicats

.

El primer pas un cop instal·lat Vagrant és instal·lar la màquina virtual amb:

$ vagrant box add laravel/homestead

Escolliu la opció 1 per a VirtualBox (com podeu veure també està disponible per a VMWARE).

IMPORTANT: Es baixa d'Internet i per tant depenent de la velocitat de la vostra connexió pot tardar una bona estona

Ara cal instal·lar homestead utilitzant Composer:

$ composer global require "laravel/homestead=~2.0"

Per poder tenir la comanda homestead disponible cal tenir al path la carpeta bin de composer. Per exemple tenint el fitxer ~/.bashrc amb la línia:

$ cat ~/.bashrc | grep composer/vendor
export PATH=${PATH}:~/.composer/vendor/bin

Executeu:

$ homestead init

Això crea un fitxer bàsic de configuració de Homestead a:

~/.homestead/Homestead.yaml 

I el podeu editar amb:

$ homestead edit

NOTA: Instal·leu el servidor de NFS a la vostra màquina si voleu utilitzar aquest tipus de carpeta compartida. També per augmentar el rendiment tingueu en compte la possibilitat d'augmentar els valors de memory i cpus

El fitxer de configuració ha de quedar quelcom similar a:

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

authorize: ~/.ssh/id_dsa.pub

keys:
    - ~/.ssh/id_dsa

folders:
    - map: ~/github
      to: /home/vagrant/github
      type: nfs

sites:
    - map: laravelapp.dev
      to: /home/vagrant/github/laravelapp/public

databases:
    - homestead

variables:
    - key: APP_ENV
      value: local

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

La màquina per defecte tindrà la adreça IP:

192.168.10.10

Tingueu en compte que VirtualBox us crearà una interfície virtual amb la IP 192.168.10.1:

vboxnet1  Link encap:Ethernet  direcciónHW 0a:00:27:00:00:01  
         Direc. inet:192.168.10.1  Difus.:192.168.10.255  Másc:255.255.255.0
         Dirección inet6: fe80::800:27ff:fe00:1/64 Alcance:Enlace
         ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
         Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
         Paquetes TX:113 errores:0 perdidos:0 overruns:0 carrier:0
         colisiones:0 long.colaTX:1000 
         Bytes RX:0 (0.0 B)  TX bytes:17351 (17.3 KB)

Fixeu-vos que cal tenir una clau SSH a ~/.ssh. La podeu crear amb:

$ ssh-keygen -t dsa

Després cal indicar una carpeta on guardem els nostres projectes Laravel. En el meu cas he escollit:

~/github

L'apartat de la configuració anomenat folders:

   - map: ~/github
     to: /home/vagrant/Code

Indica amb map un mapping entre la màquina física i la virtual. El que fa Vagrant és fer que la carpeta ~/github estigui disponible dins de la màquina virtual a la carpeta que per defecte és on ho té preparat.

L'apartat sites:

sites:
   - map: laravelapp.dev
     to: /home/vagrant/githublaravelapp/public

Defineix els noms dels dominis de les nostres aplicacions i la carpeta dins la màquina virtual on estarà disponible. Podeu indicar més d'un mapa per treballar amb múltiples aplicacions. Un pas extra que heu de fer es configurar el fitxer hosts per tal de mapejar els noms de domini a adreces IP:

$ sudo joe /etc/hosts
# LARAVEL
192.168.10.10 laravelapp.dev

Un cop tot preparat ja podeu executar la màquina virtual homestead:

$ homestead up

Ja podeu provar la web a la URL:

http://laravelapp.dev

Si executeu:

$ homestead

Veureu la típica comanda PHP creada amb Symfony Console i les opcions i comandes disponibles. Alguns exemples:

$ homestead ssh

Per connectar-se directament a la màquina virtual utilitzant els claus SSH.

Aturar/suspendre la màquina:

$ homestead halt
$ homestead supend  -> homestead resume

Per actualitzar la imatge:

$ homestead update

Recursos:

Upgrade/Actualització

Cal tenir en compte que podem voler actualitzar la comanda homestead o la màquina virtual o totes dues coses. Per actualitzar la comanda recordeu que la hem instal·lat com un paquet global de composer i per tant:

$ composer global update

Pot ser una forma d'actualitzar la comanda homestead però compte consulteu abans a Packagist quine versió és la més actual de la comanda a Packagist:

https://packagist.org/packages/laravel/homestead

I consulteu dos coses, quina versió teniu:

$ homestead --version
Laravel Homestead version 2.1.8

I quines versions heu dit a composer que ha d'instal·lar/actualitzar:

$ cat ~/.composer/composer.json 
{
   "require": {
       "laravel/homestead": "~2.0",
       "laravel/installer": "^1.2",
       "phpunit/phpunit": "~4.0",
       "kherge/box": "^2.6"
   },
   "require-dev": {
       "apigen/apigen": "^4.1"
   }
}

Per exemple al fitxer que he posat podeu observar que he demanat les versions 2 o superiors però sense passar a la tres i ja hi ha disponible una tercera versió. Canvieu el fitxer composer.json a:

$ cat ~/.composer/composer.json 
{
   "require": {
       "laravel/homestead": "~3.0",
       "laravel/installer": "^1.2",
       "phpunit/phpunit": "~4.0",
       "kherge/box": "^2.6"
   },
   "require-dev": {
       "apigen/apigen": "^4.1"
   }
}

i executeu:

$ composer global update
Changed current directory to /home/sergi/.composer
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Removing laravel/homestead (v2.1.8)
  - Installing laravel/homestead (v3.0.1)
   Downloading: 100%         

Writing lock file
Generating autoload files

Comproveu la comanda s'ha actualitzar correctament:

$ homestead --version
Laravel Homestead version 3.0.1

Ara actualitzem la màquina virtual. Us recomano però que abans actualitzeu Virtual Box a la última versió i el mateix pel que fa aVagrant. Podeu veure les màquines virtuals de vagrant amb:

$ vagrant box list
laravel/homestead (virtualbox, 0.2.7)
laravel/homestead (virtualbox, 0.3.0)
laravel/homestead (virtualbox, 0.3.3)

Per exemple en aquest cas puc veure que em falta la última versió de la màquina homestead instal·leu-la amb:

$ vagrant box add laravel/homestead

Tardarà una estona en descarregar-la. L'últim pas però no el menys important és configurar un Alias a bashrc per tal de poder accedir a la comanda homestead des de tot arreu. La línia que heu d'afegir a .bashrc és:

alias homestead='function __homestead() { (cd ~/.composer/vendor/laravel/homestead && vagrant $*); unset -f __homestead; }; __homestead'

Credencials per defecte

  • Usuari: homestead
  • Paraula de pas: secret
  • Base de dades per defecte: homestead

Comandes

homestead up

La comanda:

$ homestead up

Arranca la màquina i si és el primer cop que és arrancada també l'aprovisiona seguint les indicacions del fitxer de configuració homestead.yaml

homestead ssh

La comanda:

$ homestead ssh

es connecta via SSH a la màquina virtual. Si heu definit correctament i existeixen les claus SSH la connexió serà directa a la màquina.

homestead halt/suspend

La comanda:

$ homestead halt

Atura la màquina virtual. Amb l'opció suspend la podeu aturar temporalment

Accés a la base de dades

Tal i com podeu veure al fitxer .env o .env.sample de Laravel:

$ cat .env 
...
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
...

L'usuari per defecte és homestead la base de dades és diu igual i la paraula de pas és secret.

IMPORTANT: En desenvolupament no passa res per deixar aquestes creadencials per defecte però en explotació evidentment las heu de canviar!

Per accedir a la base de dades:

$ homestead ssh
$ mysql -uhomestead -psecret

o com a root:

$ sudo mysql -psecret

IMPORTANT: per alguna raó mysql -p i mysql -uhomestead -p no funciona!


Aplicant canvis en la configuració

Editeu la configuració amb:

$ homestead edit

Per aplicar els canvis a la màquina virtual (inclòs sense apagar-la) cal fer un reaprovisionament. Primer trobem l'identificador de la màquina amb:

$ vagrant global-status
id       name    provider   state    directory                                      
------------------------------------------------------------------------------------
5e3258a  default virtualbox poweroff /home/sergi/Homestead                          
b916503  default virtualbox running  /home/sergi/.composer/vendor/laravel/homestead 

The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date. To interact with any of the machines, you can go to
that directory and run Vagrant, or you can use the ID directly
with Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"

Ara prodem reaprovisionar amb:

$ vagrant provision b916503

on b916503 en el meu cas és el id de la màquina.

Afegir una base de dades

Podeu editar la configuració de homestead:

$ homestead edit

Afegiu una nova base de dades a la secció databases:

databases:
     - homestead
     - new database

Obteniu el id de la VM:

$ vagrant global-status
 id       name    provider   state    directory                                      
 ...
b916503  default virtualbox running  /home/sergi/.composer/vendor/laravel/homestead 
... 

Ara prodem reaprovisionar amb:

$ vagrant provision b916503

on b916503 en el meu cas és el id de la màquina. Ja teniu la base de dades nova.

Afegir un nou site

Dos opcions:

1) modifiqueu la configuració de homestead

Podeu editar la configuració de homestead:

$ homestead edit

Afegiu un nou site a la secció sites:

 sites:
    - map: laravel.app
      to: /home/vagrant/Code/laravel_base_app/public
    - map: laravelnotificationsapp.app
      to: /home/vagrant/Code/laravelnotificationsapp/public

Obteniu el id de la VM:

$ vagrant global-status
 id       name    provider   state    directory                                      
 ...
b916503  default virtualbox running  /home/sergi/.composer/vendor/laravel/homestead 
... 

Ara prodem reaprovisionar amb:

$ vagrant provision b916503

on b916503 en el meu cas és el id de la màquina. Ja teniu la base de dades nova.

Configurar Mysql Workbench

Executeu Mysql Workbench:

$ mysql-workbench

Les dades són:

  • TCP (defecte)
  • Adreça IP: 127.0.0.1
  • Port: 33060 (MySQL) or 54320 (Postgres)
  • Username: homestead
  • password: secret

Vegeu Mysql Workbench i Laravel Homestead

Recursos:

Instal·lar PHPMyAdmin

$ homestead ssh
$ sudo apt-get install phpmyadmin

no seleccioneu cap opció només continueu amb enter quan us pregunti pel servidor web.

$ sudo ln -s /usr/share/phpmyadmin/ /home/vagrant/Code/phpmyadmin
$ cd ~/Code && serve phpmyadmin.app /home/vagrant/Code/phpmyadmin

Si us dona un error al reiniciar nginx podeu consultar el fitxer de log:

$ sudo tail -f /var/log/nginx/error.log
2015/03/18 11:54:16 [emerg] 3671#0: invalid number of arguments in "listen" directive in /etc/nginx/sites-enabled/phpmyadmin.app:2

Editeu el fitxer:

$ sudo editor /etc/nginx/sites-enabled/phpmyadmin.app

I afegiu 80 a la directiva Listen! Ara apliqueu el canvi a nginx:

$ sudo service nginx reload

Editeu fitxer /etc/hosts:

192.168.10.10  phpmyadmin.app

Utlitzeu la URL per accedir:

http.//phpmyadmin.app

Recursos:

Xdebug

Laravel Homestead 4.0 amb PHP 7

Xdebug is not installed I've followed (with some changes) the steps at:

http://xdebug.org/wizard.php

In my case:

$ wget http://xdebug.org/files/xdebug-2.4.0rc3.tgz
$ tar xvzf xdebug-2.4.0rc3.tgz 
$ cd xdebug-2.4.0RC3/
$ phpize
$ ./configure 
$ make
$ sudo cp modules/xdebug.so /usr/lib/php/20151012/
$ cd /etc/php/7.0/fpm/conf.d/

Creat file /etc/php/7.0/fpm/conf.d/20-xdebug.ini with following content:

; configuration for php xdebug module
; priority=20
zend_extension=/usr/lib/php/20151012/xdebug.so
xdebug.idekey = "phpstorm"
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
xdebug.max_nesting_level = 300
xdebug.scream = 0
xdebug.cli_color = 1
xdebug.show_local_vars = 1

Now restart:

$ sudo service php7.0-fpm restart

Laravel Homestead anterior a 4.0

Per a versions anteriors a 4.0 podeu seguir les instruccions de:

Passar màquina Homestead de Virtual Box a Proxmox

https://www.paolodavila.com/mediawiki/index.php/VirtualBox#Copiar_a_Proxmox

Tips & Tricks

Recover homestead command on Laravel 5.x

Afegir a ~/.bashrc:

function vm() {
   cd ~/homestead
   
   command="$1"

   if [ "$command" = "edit" ]; then
      open ~/.homestead/homestead.yaml
   else
      if [ -z "$command" ]; then 
         command="ssh"
      fi
   
      eval "vagrant ${command}"
   fi

   #switch back to directory where command was performed in
   cd -
}

Automatically map folders to domains in nginx

From:

http://www.sitepoint.com/set-automatic-virtual-hosts-nginx-apache/

Entreu a la màquina homestead

$ homestead ssh

I creeu el fitxer:

$ sudo editor /etc/nginx/sites-available/wildcard.conf

server {
    listen 80;
    server_name ~^(www\.)?(?<sname>.+?).app$;
    root /home/vagrant/Code/Laravels/$sname/public;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/$sname.app-error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }

    location ~ /\.ht {
        deny all;
    }

}

Now activate site:

$ sudo ln -s /etc/nginx/sites-available/wildcard.conf /etc/nginx/sites-enabled/wildcard.conf
$ sudo service nginx restart

See next section to configure wilcard in dns resolution using Ubuntu and dnsmasq.

Ubuntu dnsmasq wildcard *.app to 192.168.10.10 and 127.0.0.1 to *.dev

It's easy in Ubuntu because dnsmasq-base is installed by default so create file:

 $ sudo editor /etc/NetworkManager/dnsmasq.d/laravel_homestead.conf

Add the following lines:

# General sites (Apache)
address=/.dev/127.0.0.1

# Laravel Homestead (Vagrant)
address=/.app/192.168.10.10

Dnsmasq have to be killed ( see this):

$ ps aux | grep dnsmasq

Take note of dnsmasq PID and execute:

$ sudo kill -9 PID_DNSMASQ

Then restart network-manager:

$ sudo service network-manager restart

Now wilcards are activated:

$ ping whatever.app

resolves to 192.168.10.10

and

 $ ping whatever.dev

resolves to 127.0.0.1

Troubleshooting

Supervisor

Sembla que homestead no arranca supervisor al inicia. Per evitar tenir que fer:

$ sudo service restart supervisor

cada cop arranquem homestead, he afegit les següents línies a /home/sergi/.composer/vendor/laravel/homestead/scripts/homestead.rb:

     ...  
    # Run supervisor on every provision
    config.vm.provision "shell" do |s|
      s.inline = "/usr/sbin/service supervisor restart"      
    end
    ...

Després de:


# Update Composer On Every Provision
    config.vm.provision "shell" do |s|
      s.inline = "/usr/local/bin/composer self-update"
    end

Xdebug

Vegeu PHP_Debug#Homestead

Rendiment i NFS

La primera recomanació per augmentar el rendiment de Homestead és que tingueu tot actualitzat:

- Actualitzeu Virtual Box a la última versió. Baixeu el paquet de la web de Virtual Box i executeu dpkg -i - Actualitzeu Vagrant a la última versió. Baixeu el paquet de la web de VAgrant i executeu dpkg -i

També cal actualitzar homestead. Si ja teniu una màquina virtual Homestead atureu-la (millor destrui-la):

$ homestead destroy

També aneu a virtual box assegureu-vos que no existeix la màquina homestead!

Actualitzeu la maquina Virtual Homestead (se la descarrega integra de Internet això pot tardar una bona estona):

$ homestead update

A data d'aquest escrit (--acacha (discussió) 14:36, 8 oct 2015 (CEST)) la versió és la 0.3.0

Podeu mirar les màquines amb:

$ vagrant box list
laravel/homestead (virtualbox, 0.2.7)
laravel/homestead (virtualbox, 0.3.0)

Instal·leu servidor NFS:

$ sudo apt-get install nfs-kernel-server

Assegure-vos de tenir l'última versió dels script de Homestead:

$ composer global update laravel/homestead

Podeu veure que teniu amb:

$ composer global show laravel/homestead

A data d'aquest escrit (--acacha (discussió) 14:36, 8 oct 2015 (CEST)) la versió és la 2.1.8

Ara al fitxer homestead.yaml al qual podeu accedir amb un:d

$ homestead edit

o si és el primer cop

$ homestead init
$ homestead edit

Arregureu-vos de posar la opció type:nfs al fitxer:

folders:
   - map: ~/Code
     to: /home/vagrant/Code
     type: nfs

Ara ja podeu crear la màquina de nou amb

$ homestead up

Observeu que es carrega NFS (mirant com arrenca la màquina a Virtual Box) i al log de l'arrancada. També podeu mirar a la màquina host:

$ cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
#		to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check) 
#
# VAGRANT-BEGIN: 1000 b5299afb-ff07-4441-9f34-24e5f6c82080
"/home/sergi/Code" 192.168.10.10(rw,no_subtree_check,all_squash,anonuid=1000,anongid=1000,fsid=4282222475)
# VAGRANT-END: 1000 b5299afb-ff07-4441-9f34-24e5f6c82080


Recursos:

homestead up. Error: no id_rsa.pub file

Error:

$ homestead up
/home/sergi/.composer/vendor/laravel/homestead/scripts/homestead.rb:76:in `read': No such file or directory - /home/sergi/.ssh/id_rsa.pub (Errno::ENOENT)
	from /home/sergi/.composer/vendor/laravel/homestead/scripts/homestead.rb:76:in `block in configure'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/plugins/kernel_v2/config/vm_provisioner.rb:72:in `call'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/plugins/kernel_v2/config/vm_provisioner.rb:72:in `add_config'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/plugins/kernel_v2/config/vm.rb:317:in `provision'
	from /home/sergi/.composer/vendor/laravel/homestead/scripts/homestead.rb:74:in `configure'
	from /home/sergi/.composer/vendor/laravel/homestead/Vagrantfile:18:in `block in <top (required)>'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/v2/loader.rb:37:in `call'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/v2/loader.rb:37:in `load'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:103:in `block (2 levels) in load'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:97:in `each'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:97:in `block in load'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:94:in `each'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/config/loader.rb:94:in `load'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/vagrantfile.rb:28:in `initialize'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:689:in `new'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:689:in `vagrantfile'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:441:in `host'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:207:in `block in action_runner'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/action/runner.rb:33:in `call'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/action/runner.rb:33:in `run'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:428:in `hook'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/lib/vagrant/environment.rb:671:in `unload'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/bin/vagrant:177:in `ensure in <main>'
	from /opt/vagrant/embedded/gems/gems/vagrant-1.7.4/bin/vagrant:177:in `<main>'

Solution:

 $ ssh-keygen -t rsa

Homestead timeout connection

Executeu la màquina virtual directament des de Virtual Box i aixi podeu veure quin problema hi ha al arrancar la màquina. En el meu cas estava aturada al menú de grub.

Don't remove databases when provisioning

NOTA: No longer needed in version 2.1.5 https://twitter.com/stauffermatt/status/624232790658125824

Change file ~/.composer/vendor/laravel/homestead/scripts/create-mysql.sh to:

#!/usr/bin/env bash

DB=$1;

#mysql -uhomestead -psecret -e "DROP DATABASE IF EXISTS \`$DB\`";
mysql -uhomestead -psecret -e "CREATE DATABASE IF NOT EXISTS \`$DB\` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci";

Vegeu també

Enllaços externs