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;