Installation de Nginx et PluXml sur Alpinelinux
Nous détaillons ici l'installation du serveur web Nginx avec PHP7 sur la distribution Alpinelinux. On utilisera le CMS PluXml pour tester l'installation. Cela peut se faire sur un Raspberry Pi à distance via une connection SSH.
Pour travailler à distance sur un serveur Alpinelinux ou Linux, il est nécessaire d'avoir installé le paquet sudo et d'avoir créé un utilisateur appartenant au groupe spécifique wheel. En effet, la connection SSH avec un compte root est interdite par sécurité. Reportez vous à l'article sur l'installation classique de Alpinelinux si nécessaire.
Il faut d'abord installer quelques paquets supplémentaires en exécutant la commande suivante :
- sudo apk add nginx php7-fpm php7-gd php7-xml php7-session php7-curl php7-json php7-zip php7-phar nginx-vim vim lynx
Si vous souhaitez utiliser la base de données Sqlite3, ajoutez le paquet php7-sqlite3.
Nous prévoyons d'installer la dernière version de PluXml. On ajoute également le plugin kzUploader qui permet d'installer d'autres plugins via l'interface web. Téléchargeons les avec wget ou lynx :
- wget -O pluxml-56.zip http://telechargements.pluxml.org/download.php
- wget -O kzUploader.zip "http://kazimentou.fr/pluxml-plugins2/index.php?plugin=kzUploader&download"
On déplie les archives aux bons endroits :
- cd /var/www
- sudo unzip ~/pluxml-56.zip
- cd PluXml/plugins
- unzip ~/kzUploader.zip
- cd /var/www
Le groupe d'utilisateurs www-data est dédié pour faire tourner un serveur HTTP. Par contre, sous Alpinelinux, il n'existe pas d'utilisateur dédié à ce service. Ajustons les propriétaires, groupes et permissions pour les fichiers qui viennent d'être installés. On démarre le service PHP-FPM pour créer quelques répertoires :
- sudo addgroup -S www-data
- adduser -h /var/www -s /sbin/nologin -D -S -G www-data www-data
- sudo chown -R nobody:www-data /var/www/PluXml
- cd /var/www/PluXml
- sudo chmod -R g+w config.php data plugins themes
Pour que Nginx et PHP communiquent à travers un socket Unix, il faut modifier le paramétrage de PHP dans le fichier /etc/php7/php-fpm.d/www.conf avec un éditeur de texte comme vim. Remplacer les lignes suivantes :
- listen = 127.0.0.1:9000
- ;listen.group = nobody
par :
- listen = /run/php-fpm7/php-fpm.sock
- listen.group = www-data
On redémarre le serveur PHP-FPM et on vérifie que le socket Unix php-fpm.sock existe bien dans le dossier /rum/php-fpm7/ avec le groupe www-data :
- sudo service php-fpm7 restart
- ls -l /run/php-fpm7/
Nginx tourne sous le compte utilisateur nginx. il convient d'ajouter cet utilisateur au groupe www-data pour se connecter au socket unix précédent. On peut également ajouter l'utilisateur jpierre à ce groupe. On vérifie la bonne exécution de cette tâche avec l'utilitaire grep :
- sudo adduser nginx www-data
- sudo adduser jpierre www-data
- grep www-data /etc/group
Par défaut avec Alpinelinux, le serveur Nginx affiche une erreur 404 si on tente d'accéder à une page web. Il faut mainenant configurer Nginx pour utiliser PluXml en créant un fichier pluxml.conf dans le dossier /etc/nginx/conf.d/. Plutôt que de ré-inventer la roue, vous pouvez récupérer une configuration éprouvée sous Debian avec quelques ajustements mineurs en téléchargeant le fichier suivant. On supposera que PluXml sera accessible à l'adresse http://rpi3-pluxml.lan . Ajuster le fichier téléchargé si besoin.
- cd
- wget -U "Mozilla" http://kazimentou.fr/divers/PluXml/pluxml.conf
- sudo chown root:root pluxml.conf
- sudo mv pluxml.conf /etc/nginx/conf.d/
- sudo service nginx restart