Deployer Laravel 5.6 sur une Raspberry Pi 3

Deployer Laravel 5.6 sur une Raspberry Pi 3

Aujourd'hui nous verrons comment déployer la dernière version de Laravel sur une Raspberry pi faisant tourner Raspbian Stretch.

« Mettons-nous en situation »

Au moment où j’écris ces quelques lignes (18 mars 2018) voilà la situation et pourquoi j’ai besoin de cette solution.

Laravel 5.6 est la dernière version du framework PHP, pour fonctionner laravel 5.6 a besoin de PHP 7.1.7 ou plus.

Raspbian Stretch est la dernière version du système d’exploitation et ne supporte dans ses paquets que php 7.0.
Pour installer 7.1 sur une raspberry il faut ajouter les dépôts de Raspbian Buster la prochaine version de l’OS pour RPI. Cet ajout de dépôts rend instable la RPI et l’empêche parfois de la redémarrer.

Il n’y a pas d’image de mariadb ou de mysql compatible avec l’architecture arm32b de la raspberry sur docker hub.

Le point sur les problèmes

Il nous faut php 7.1, la solution s’appellera docker (encore une fois).

Il nous faudra une base de donnée, la solution ne passera pas par docker, juste par mariadb installé sur l’hôte et une connexion avec le container.

Docker sur Raspbian

Le Dockerfile

J’ai donc créé une image « parfaite » (en toute modestie) pour utiliser Laravel 5.6, avec un php 7.1 et apache, voici le dockerfile pour la générer.

carbon-1

Dispo sur github ici.

Si vous utilisez ce code pour engendrer votre image sur la rasp, durant la génération de l'image vous pouvez tranquillement aller prendre un café, une douche ou commencer un marathon LOTR. Il y a bien 1 heure de génération.

Mariadb

Installer mariadb sur la raspberry, classique :

sudo su
apt install mariadb-client
apt install mariadb-server

Connecter son container à sa base de donnée locale

Il faut paramétrer mariadb pour accepter les requêtes extérieurs.
Accédez au paramètre du server mariadb via

nano /etc/mysql/mariadb.conf.d/50-server.cnf

repérez la ligne

bind-address           = 127.0.0.1

pour la commenter

#bind-address           = 127.0.0.1

ensuite toujours en sudo accédez à l’administration de mariadb pour créer un utilisateur et une base de donnée.

Adresse ip des container

Par default les container sont configuré en mode « bridge » une commande comme

docker network ls

vous renverra quelque chose comme

NETWORK ID          NAME                DRIVER
XXXXXXXXXXX        bridge              bridge              
XXXXXXXXXXX        host                host                
XXXXXXXXXXX        none                null  

en inspectant avec

docker network inspect bridge

vous aurez accès aux ip des containers et en déduire l’ip de l’hôte, c’était dans mon cas 172.17.0.1. Maintenant on ajoute ça à notre .env. Voilà !!!

Pour exécutez sur votre container un :

php artisan migrate

Après avoir bien réinstallé composer évidemment.

Conclusion

Je l’utilise pour faire mon serveur de développement pour une start-up, ce n’est pas l’idéale mais ce n’est pas chère.

Afficher les commentaires