====== Un serveur de photos avec piwigo ====== ==== installer les préalables LAMP ==== Comme piwigo est un serveur LAMP : Linux, Apache, Mysql, PHP il faut installer tout ça. Pas de panique c'est comme pour Wordpress et il y a toute l'information qu'il faut directement accessible dans le menu principal (la framboise en haut à gauche) Internet > Raspberry Pi Ressources. Choisir "A Website" puis "Build a LAMP Web Server with WordPress HTML / Raspberry Pi" qui va nous guider pour installer sans pleur ni fatigue les préalables. Il faut ne pas avoir peur a priori de la ligne de commande, c'est trop pratique pour s'en priver. Se rappeler que pour copier il suffit de sélectionner avec le bouton gauche de la souris et pour coller il suffit de cliquer avec le bouton du milieu avec la souris à l'endroit voulu C'est une bonne idée que de se familiariser un peu avec les droits et certaines commandes qui peuvent être utiles : cp (copier) mv (déplacer) et effacer (rm) (ici par exemple https://raspbian-france.fr/decouvrir-linux-cours-introduction-debutants/) Pour ça on va faire comme pour Wordpress (https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress). Il vous faudra un terminal, c'est pas pour rien qu'il est dans la barre de menu (4ième icône après le fureteur et le gestionnaire de fichier). Ouvrez le terminal et arrangez vous pour le voir en même temps que les pages vues sur le fureteur * Un truc super avec Linux dans le terminal (aussi appelé console) : tapez quelques lettres puis tabulez, linux complétera * Un autre truc dans le terminal la flèche en haut rappelle la commande précédente et avec les flèches ont peut naviguer dans la ligne * Bien sûr il faut taper sur enter à la fin de la commande pour la lancer * **Installer Apache2** : suivre le guide tel quel, simlple et très bien fait (penser à copier avec la souris) * C'est un logiciel indispensable, c'est lui qui assure le lien entre l'ordinateur et internet. * Il reçoit les demandes du fureteur et les communique aux programmes qui doivent assurer la réponse. * Ces programmes se trouvent dans le dossier /var/www. Ils sont potégés contre les accès non autorisés. Apache joue un rôle important dans la protection contre les intrusions. On devra faire attention aux droits, c'est la base de la sécurité, c'est un peu complexe mais nécessaire. * Il écoute internet sur ce qu'on appelle le port 80. * **Installer PHP** : suivre le guide tel quel * C'est ce qui traduit les programmes écrits en code source PHP en langage machine compris par le système d'exploitation. Piwigo comme de très nombreux programmes est écrit en PHP. Il est donc indispensable de disposer de l'interpréteur PHP (et de nombreuses fonctions prédéfinies) * dans mon cas j'ai pris la précaution de conserver le fichier index.html, ça permet de pratiquer les commandes, ce qui est utile en cas de petit (ou gros problème) * aller dans le dossier de cette manière: cd /var/www/html (tapez sur enter) * vous pouvez vérifier que le fichier index.html y est en tapant ls ou bien ls -la (voyez la différence) * pour le déplacer dans document faites : sudo mv index.html /home/pi/Documents * sudo pour avoir avoir les droits administrateur nécessaires pour ce fichier dans cette zone, mv est le nom de la commande puis on indique le fichier et sa destination. Pensez à ne taper que les premières lettre ou même seulement la première * vous pouvez alors vérifier le résultat avec le gestionnaire de fichiers * On pourra ensuite conserver de la même manière le fichier index.php * **Installer Mysql** : * Piwigo stocke toute ses données (y compris les photos) dans une base de données qui en assure l'accès rapide et la sécurité. Les programmes en PHP communiquent avec la base de données. * Le système offre de nombreux services dont a besoin le programmeur * Mysql est libre et très populaire * suivre le guide tel quel pour le logiciel mysql Ici vous sautez l'installation de wordpress ==== Étape 4 : créer la base de données pour piwigo ==== * il faut maintenant créer une base de données, on va s'inspirer de la page : Set up your WordPress Database * commencer à suivre le guide * //surtout vous rappeler du mot de passe, il est très difficile de le retrouver pour des raisons de sécurité// * adapter : create database wordpress; en mettant le nom de votre base de données par exemple photo : * create database photo; * attention il faudra l'utiliser plus tard * //YOURPASSWORD est le mot de passe qu'il ne fallait pas oublier// * adapter de cette manie : grant all privileges on photo.* to 'root'@'localhost' identified by 'YOURPASSWORD'; (utiliser le nom que vous avez donné, vous en aurez aussi besoin plus tard) * majuscule ou miniuscule c'est indifférent ==== Étape 5 : Installer les autres préalables pour piwigo ==== Ça se trouve ici http://fr.piwigo.org/ , vous y trouverez le logiciel, la doc, un forum enfin tout ce qu'il vous faudra pour bien l'utiliser * c'est ici : http://piwigo.org/doc/doku.php?id=user_documentation:learn:install:before. Voici ce que j'ai fait * sudo apt install imagemagick * sudo apt install filezilla (bien que je ne sois pas sûr que ce soit indispensable, mais ça pourra servir) * sudo apt install exiftool * sudo apt install ffmpeg * sudo apt install php-xml * sudo apt install php-mbstring Remarques : Nous sommes avec debian 9 et PH7. jpegtran et pdftoppm n'étaient pas disponibles par apt install, on va s'en passer ==== Étape 6 Installer piwigo ==== * On va faire une installation manuelle : http://piwigo.org/doc/doku.php?id=user_documentation:learn:install:installation_manual * Télécharger le logiciel en cliquant sur le lien approprié, on obtient la dernière version stable * Il devrait arriver dans le dossier Téléchargement que l'on voit dans le gestionnaire de fichiers * Le dézipper depuis le gestionnaire de fichiers par un clic droit > extraire ici * Le renommer, par exemple photo * il faut maintenant le rendre accessible par apache2 : au bon endroit et avec le bon propriétaire (celui qui correspond à apache). On va donc le mettre dans /var/www/html (on connait ça car on y avait mis index.html et index.php) * sudo cp -R /home/pi/Téléchargements/photo /var/www/html/ * -R indique la récursivité pour transporter les dossiers et ce qu'ils contiennent * sudo chown -R www-data:www-data /var/www/html/photo * pour que seul apache puisse les modifier : chown change owner (propriétaire), c,est essentiel pour la sécurité (et que ça fonctionne) Et voila piwigo est installé comme serveur avec aussi accès en local si tout se passe bien, allez-y avec le fureteur à l'adresse localhost/photo (si vous tapez simplement localhost, il faudra choisir ensuite photo) Pour configurer piwigo dans la fenêtre d'accueil Hote : localhost utilisateur : root Mot de passe : //celui qu'il ne fallait pas oublier// Base de données : //photo le nom que vous aviez donné à la base de données// préfixe : p_ (//par exemple mais c'est vous qui choisissez//) Administrateur : //c'est vous qui choisissez ce que vous voulez// Piwigo fonctionne en local soit sur le Raspberry soit par connexion wifi locale avec l'adresse IP obtenue lors de l'installation de apache2 Apache 2 a été configuré pour démarrer automatiquement au boot, si toutefois vous perdez l'accès au serveur rappelez-vous il faut faire dans un terminal: sudo service apache2 restart ===== Régler des problèmes ===== * Pas moyen d'ajouter des photos * message: la bibliothèque GD est manquante * fouille dans le forum avec le message: http://fr.piwigo.org/forum/viewtopic.php?id=27412 * j'applique la solution * sudo leafpad * ouvrir le fichier /var/www/photo/admin/include/photos_add_direct_prepare.inc.php (rappel: photo est mon dossier où se trouve piwigo) * commenter les lignes concernées (barre oblique barre oblique) * enregistrer * bingo c'est corrigé ==== Transférer ma base de données existante ==== Je voulais transférer ma base de données existante sur piwigo.com avec les backups, pour cela j'ai installé phpmyadmin mais eu quelques problèmes. Finalement j'ai fait le transfert album par album depuis l'interface utilisateur de piwigo. **Installer phpmyadmin** https://pimylifeup.com/raspberry-pi-mysql-phpmyadmin/ 7a. To begin setting up Apache for use with phpMyAdmin enter the following command into the terminal: sudo leafpad /etc/apache2/apache2.conf 7b. Now at the bottom of this file enter the following line: Include /etc/phpmyadmin/apache.conf Once done save & exit by pressing CTRL +X and then y. 7c. Now restart the Apache service by entering the following command: sudo /etc/init.d/apache2 restart reste un message d'erreur, je verrais ça plus tard ==== Connecter à internet ==== === Paramétrer le modem === Référence : https://raspbian-france.fr/mettre-en-ligne-serveur-web-raspbian-dydns-port-forwarding/ : très bonnes explications * J'ai un modem D-Link DIR-850L, je me connecte avec http://192.168.0.1 et rentre le mot de passe utilisé lors de l'installation du modem * En cliquant sur home puis l'icône internet je vois l'adresse IP actuellement utilisée et que la connexion est dynamique (mon fournisseur n'offre pas d'IP fixe) * En cliquant sur l'icône connected devices je vois le raspberry pi avec son adresse IO sur le réseau local * Avec le menu Advanced > Postforwarding j'ai pu configurer que le respbery reçoive les demandes internet sur le port 80 du modem Name Local IP TCP Port UDP Port Schedule rp-piwigo 192.168.0.165 80 N/A Always Enable * et maintenant le raspberry répond depuis internet avec l'IP de mon modem https://sourceforge.net/p/ddclient/wiki/Home/ === Accès par ssh === Pour accéder par ssh, j'ai fait avec succès ce qui est dit ici https://raspbian-france.fr/controlez-raspberry-pi-ssh-ordinateur/ ... ... Sauf que en me connectant à l'utilisateur pi je me suis aperçu que je ne connaissais le mot de passe par défaut. Alors j'ai suivi encore avec succès les directives données ici https://raspbian-france.fr/changer-mot-passe-oublie-raspberry-pi/ Un peu plus tard j'ai trouvé que par défaut l'utilisateur installé est bien pi et le mot de passe tout simplement raspberry. Bon j'ai quand même appris quelque chose qui pourrait être utile un jour. === Nom de domaine === Reste à sécuriser et à installer une URL à mon nom photo.pascot.ca (puisque je possède le nom de domaine pascot.ca) === Sécuriser la connexion https === Il faut mettre en place un certificat. On va utiliser let's encrypt (libre et gratuit) * Référence : * https://blog.meinside.pe.kr/Lets-Encrypt-with-Raspberry-Pi/ * https://certbot.eff.org/ plus précisément https://certbot.eff.org/lets-encrypt/debianstretch-apache Installation de sudo apt-get install python-certbot-apache Reste à sécuriser et à installer une URL à mon nom photo.pascot.ca (puisque je possède le nom de domaine pascot.ca) ==== Ne pas oublier les copies de sécurité ====