Web expérience : serveur web et framework

Et ben voila, ça me reprend …

En discutant avec un ami (Tickeman, pour ne pas le citer), je me suis mis à espérer à nouveau que le développement web serait la solution pour mes envies applicatives inassouvies. Mais bon, comme de bien entendu, je suis toujours un coboliste endurci et je ne suis toujours pas doué sur les nouvelles technologies.

Heureusement, mon cher Tickleman est compatissant, et aussi passionné. Il l’est tellement qu’il veut bien me faire une démo de son framework : IT Rocks.

En à peine quelques heures, il me construit une petite application viable et fonctionnelle. Et vous allez rire, j’ai presque tout compris ce qu’il a fait ! 🙂

Maintenant que la base est faite et que c’est déposé sur mon Github, il ne me reste plus (optimisme, quand tu nous tiens …) qu’à monter un petit serveur web pour héberger tout ça.

Mise en place d’un serveur web

L’idée est de monter ce serveur web à la maison pour un usage principalement sur mon réseau personnel, et accessoirement à distance. Quelques idées pour me simplifier la vie :

  • Mon Synology a un serveur web intégré : Web Station. Il faut juste l’activer et installer les bons modules (Apache 2.4, PHP 7.3 et MariaDB 10)
  • J’ai déjà un sous-domaine de mon nom de domaine qui pointe à la maison. Plus qu’une petite redirection pour arriver jusqu’à mon Synology.

Installer PHP Myadmin

Rien de plus simple, il suffit d’installer le package à partir du gestionnaire de paquets de DSM.

Une chose reste à faire tout de même, créer un mot de passe root sur la base. C’est ce user et ce mot de passe qui permettra de se connecter à PHPMyAdmin. Il faut aller sur le package MariaDB 10 et initialiser le mot de passe root en cliquant sur le bouton adéquat.

Enfin, il faut se connecter à PHPMyAdmin et créer une base spécifique pour l’application.

Installer Git

L’idée d’avoir mis le site sur Github, c’est de pouvoir faire du déploiement automatique au fil de l’eau, mais j’y reviendrait plus tard. Mais dans un premier temps, il faut installer Git sur le Synology.

Rien de bien compliqué, le package est disponible dans le centre de paquets de DSM. Il faut tout de même penser à activer les droits de l’utilisateur qui va lancer les commandes Git.

Installer Composer pour PHP

Après un peu de farfouillage sur internet, j’ai trouvé ce mode opératoire. C’est en anglais, mais c’est très compréhensible.

Composer a besoin de trois extensions qu’il faudra activer dans le gestionnaire d’extension du panel PHP (accessible depuis Web Station) :

  • phar.so
  • openssl.so
  • zip.so

Ensuite, lancer se connecter en SSH sur le NAS et faire ce qui suis :

cd /usr/local/bin
sudo curl -s http://getcomposer.org/installer | sudo php73
sudo vi composer

Dans le script « composer, mettre :

#!/bin/bash
php73 /usr/local/bin/composer.phar $*

Sauvegarder le script (commande :wq), et continuer les commandes :

sudo chmod --reference=composer.phar composer
composer --version

La dernière commande est là pour tester l’installation.

Installer l’application sur l’hébergement

Pour récupérer l’application, un git clone dans le répertoire www devrait suffire.

Toujours connecté en SSH sur le NAS, il faut se placer dans le répertoire « web » créé par le NAS lors de l’installation du package Web Station, et lancer la commande suivante :

git clone https://github.com//

Après avoir fini, toujours dans le répertoire « web », lancer la commande suivante :

composer update

Naturellement, si tout se passait dans un monde idéal, la fin de l’installation se ferait sans encombre. Mais voila, nous ne sommes pas dans un monde idéal ! 🙂

Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
  Problem 1
    - itrocks/framework dev-master requires ext-yaml * -> the requested PHP extension yaml is missing from your system.
    - itrocks/framework dev-master requires ext-yaml * -> the requested PHP extension yaml is missing from your system.
    - Installation request for itrocks/framework dev-master -> satisfiable by itrocks/framework[dev-master].

  To enable extensions, verify that they are enabled in your .ini files:
    - /usr/local/etc/php73/cli/php.ini
    - /usr/local/etc/php73/cli/conf.d/extension.ini
    - /usr/local/etc/php73/cli/conf.d/timezone.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Ajout d’une extension dans PHP

Pour résoudre, il m’a fallu récupérer les fichiers utiles pour l’extension yaml de php. Heureusement, mon Synology tourne sur une architecture Intel 64 bit, comme un PC standard, et j’ai pu récupérer les fichiers directement auprès de mon copain Tickleman.

  • yaml.so : à placer dans le répertoire /usr/local/lib/php73/modules/
  • libyaml-0.SO.2 : à placer dans le répertoire /usr/lib/

Il faut bien faire attention à appliquer les bons groupe et propriétaire aux deux fichiers. Pour cela, utiliser chmod, chown et chgrp pour appliquer les même droits que les autres extensions du même répertoire.

Enfin, ajouter l’extension à la fin fichier /usr/local/etc/php73/cli/conf.d/extension.ini :

extension = sysvshm.so
extension = wddx.so
extension = xmlrpc.so
extension = xsl.so
extension = yaml.so

Ajout d’une extension dans Web Station

Ensuite, il faut le déclarer dans les fichiers de paramètres de Web Station pour pouvoir l’activer via l’interface de paramétrage de PHP. Pour cela, modifier le fichier /volume1/@appstore/PHP7.3/misc/extension_list.json

J’ai ajouté l’élément suivant en avant dernière position dans le fichier (dans l’ordre alphabétique, juste avant l’extension zip).

    "yaml": {
            "enable_default": true,
            "desc": "Extension Yaml"
    },

Pour finir, il ne reste plus qu’à l’activer dans Web Station, comme fait précédemment pour les premières extensions.