Instalar Homestead y ejecutarlo por primera vez

Para instalar Homestead debemos instalar primero (hay otras opciones pero yo escogeré esta) virtualbox y vagrant:

sudo apt install virtualbox
sudo apt install vagrant

* En la instalación nos pedirá un «provider», como hemos instalado virtualbox este es el que escogeremos (opción 3).

Continuamos bajando el «entorno preparado» de laravel:

vagrant box add laravel/homestead

cd ~

bash init.sh

git clone https://github.com/laravel/homestead.git Homestead

composer global require “laravel/installer”

Ahora editamos el fichero Homestead.yaml en nuestro ordenador y añadimos el nuevo sitio en el apartado «folders» y «sites». Folders para las carpetas y sites para ver donde «apunta» el dominio:


folders:
- map: ~/code
to: /home/vagrant/code
sites:
- map: proyecto.test
to: /home/vagrant/code/proyecto/public

Ahora vamos a la máquina virtual, en la documentación oficial ya no sale esta parte. Levantamos la máquina y entramos via SSH:

vagrant up
vagrant ssh

Una vez dentro, por ssh creamos los directorios y el proyecto de laravel:

mkdir ~/code
cd ~/code

laravel new proyecto
exit

Vamos al navegador y probamos el nuevo sitio: proyecto.test

Problemas frecuentes:

No se encuentra el servidor («Uf. Tenemos problemas para encontrar ese sitio.»)

Vamos a la terminal, al directorio donde está instalado Homestead, en mi caso «~/Homestead», y levantamos vagrant:

cd ~/Homestead
vagrant up

 

No input file specified.

Una de dos o editamos «Homestead.yaml» para indicarle la carpeta correcta donde está nuestra web (1), o creamos nuestro proyecto (2), o lo copiamos a la carpeta (3), etc…

1) comprobar y editar carpeta

– Para editar la carpeta correcta o ver cual es:

nano ~/Homestead/Homestead.yaml

Buscamos y editamos este apartado:

sites:
- map: proyecto.test
to: /home/vagrant/code/proyecto/public

– para ver la carpeta «física» en la máquina virtual y comprobarla:

vagrant ssh

2) crear un proyecto desde cero

vagrant ssh

Una vez dentro, por ssh creamos los directorios del fichero Homestead.yaml y el proyecto de laravel:

mkdir ~/code
cd ~/code

laravel new proyecto
exit

3) copiar el proyecto a nuestra máquina virtual:

cp /lugar/proyecto ~/code

Dónde «~/code» es la carpeta que hemos indicado en nuestro fichero «Homestead.yaml»: y «/lugar/proyecto» el lugar de nuesto proyecto a copiar.

Crear un nuevo proyecto en Laravel para PHP 5.6 (no acabado)

Lo primero que hay que hacer es instalar composer:

sudo apt install composer

También hay que instalar el instalador de laravel, en mi caso debido a los errores tuve que instalar el módulo zip:

sudo apt-get install php5.6-zip

Y el instalador de Laravel propiamente dicho:

composer global require «laravel/installer»
Luego creamos nuestro proyecto:

composer create-project laravel/laravel="5.2.*" proyecto

Como no podemos escoger en que directorio apunta nuestro dominio, no podemos apuntar al directorio «public» crearemos un fichero .htaccess con este contenido en la raiz de nuestro sitio:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L] </IfModule>

Y damos permiso de escritura a los directorios necesarios:

sudo chmod -R 775 storage

sudo chmod -R 775 bootstrap/cache

sudo chown -R nuestroUsuario:www-data storage

sudo chown -R nuestroUsuario:www-data bootstrap/cache

Convertir números a su cardinal u ordinal, php_intl

Si te has preguntado como convertir un número a su cardinal , ordinal, etc se hace a través de la extensión php_intl.

Para instalarla en Ubuntu nada más sencillo que:

sudo apt install php_intl

para habilitarla en PHP:

sudo phpenmod intl

Y reaniciamos apache, que en caso de Ubuntu seria:

sudo service apache2 restart

Una vez instalada el código para realizar por ejemplo un cardinal en Català seria:

$nf = new \NumberFormatter('ca_ES', \NumberFormatter::SPELLOUT);
$cardinal = $nf->format($total);

No en todos los casos queda perfecto, o a veces no encontrarás la traducción completa. Para ello podemos especificar un fichero con las formas correctas:

$pattern = file_get_contents('catalan.txt');
$nf = new \NumberFormatter('ca_ES', \NumberFormatter::PATTERN_RULEBASED, $pattern);
$nf->setTextAttribute(\NumberFormatter::DEFAULT_RULESET, "%spellout-cardinal-masculine");

Y ya un pequeño trozo de código para que escriba bien los decimales en la forma por ejemplo de «diez coma cincuenta» en lugar de «diez cinco cero»:

$representado = explode(".", number_format($total, 2, ".", ''));
if (count($representado)>0) {
    $cardinal = $nf->format($representado[0]) . ' coma ' . $nf->format($representado[1]);
} else {
    $cardinal = $nf->format($representado[0]);
}

Aquí tenéis el fichero con las traducciones, por si queréis crear uno nuevo:

formato personalizado php_intl

Configurar el formato de codificación de Mysql para Ubuntu

Para configurar el formato de codificación de Mysql, en este caso vamos a modificar el fichero mysql.cnf que se encuentra en /etc/mysql/mysql.cnf para cambiar el formato de codificación más conveniente para uso general, que trata mejor la representación, comparación y ordenación en diferentes idiomas a cambio de rendimiento: utf8_unicode_ci.

Para ello añadiremos el siguiente código debajo de [mysqld] o lo crearemos bajo esta misma etiqueta:

[mysqld]

collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

Y reiniciaremos el mysql:

sudo service mysql restart

Si tuviéramos que cambiar alguna tabla individualmente:

ALTER TABLE nombretabla CHARACTER SET utf8 COLLATE utf8_unicode_ci;