Installer la galerie photo Piwigo sur Debian
Piwigo est une gallerie photo PHP conçue pour être légère et simple d'utilisation. Ses fonctionnalités peuvent être étendues à l'aide de plugins.
Ce guide est testé sur:
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
Ce guide est testé avec ces versions de Piwigo:
- 2.5.1
Pré-requis
Ce guide nécessite :
- a2tools, l'outil d'administration simplifiée d'Apache 2.
- un serveur HTTP avec support du PHP, comme décrit par Installer PHP-FPM sur Debian.
- php-tools, l'outil de configuration simplifiée de PHP.
- un serveur MySQL, comme décrit par Installer et configurer MySQL sur Debian.
- mysql-tools, l'outil d'administration simplifiée de MySQL sur l'hôte local (et l'hôte du serveur MySQL, si différent).
- Une installation globale de Composer, comme décrit par Installer Composer sur Debian.
Paramètres
Renseignez le nom de domaine de l'application:
domain="photos.domain.com"
Renseignez le nom d'hôte du serveur MySQL:
mysqlHost="localhost"
Si le serveur MySQL n'est pas local, l'outil mysql-tools essaiera de s'y connecter avec le client MySQL, ou, en cas d'échec de connexion, via une connexion SSH.
Renseignez le nom du certificat SSL à utiliser pour chiffrer l'application avec HTTPS (créé via la procédure Créer un certificat SSL / TLS sur Debian ou via Let's Encrypt) (optionnel, recommandé):
sslKeyName="auto"
Installation
Déterminez le chemin d'installation:
installPath="/opt/piwigo/${domain}"
Déterminez le chemin des données:
dataPath="/var/lib/piwigo/${domain}"
Créez les dossiers:
command mkdir --parent "$(command dirname "${installPath}")"
command mkdir --parent "${dataPath}"
Préparation de l'environnement
Installez les logiciels nécessaires:
command apt-get install php5-mysql php5-gd php5-imagick unzip apg
Adaptez la configuration PHP aux besoins de l'outil:
command php-tools --for="piwigo" --set "upload_max_filesize" "32M"
command php-tools --for="piwigo" --set "post_max_size" "36M"
Rechargez la configuration de PHP:
${cmdProxy} php-tools --reload
Mise en place de l'application
Téléchargez la dernière version de l'application:
command wget 'http://piwigo.org/download/dlcounter.php?code=latest' \
--output-document='/tmp/piwigo.zip'
Décompressez l'archive obtenue:
command unzip -d '/tmp/piwigo' '/tmp/piwigo.zip'
Déplacez le nouveau dossier vers son emplacement final:
command mv '/tmp/piwigo/piwigo' "${installPath}"
Supprimez l'archive téléchargée:
command rm '/tmp/piwigo.zip'
command rmdir '/tmp/piwigo'
Réinitialisez les droits d'accès:
command chown -R root:root "${installPath}"
command chmod -R go-w "${installPath}"
Créez le fichier de configuration, et autorisez sa modification par le serveur HTTP:
command touch "${installPath}/local/config/database.inc.php"
command chown www-data:www-data "${installPath}/local/config/database.inc.php"
Créez un fichier .htaccess pour activer la réécriture d'URL avec Apache 2:
command echo 'AcceptPathInfo On
Options +MultiViews
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/.]+)/?(.*)$ /$1.php/$2 [QSA,L]
</IfModule>' \
> "${installPath}/.htaccess"
Ajustez la configuration de l'application en conséquence:
echo '<?php // Url Rewriting
$conf["question_mark_in_urls"] = false;
$conf["php_extension_in_urls"] = false;
$conf["category_url_style"] = "id-name";
$conf["picture_url_style"] = "id-file";
$conf["tag_url_style"] = "id-tag";
' > "${installPath}/local/config/config.inc.php"
Mise en conformité avec la LSB
Mettez en place une architecture de dossier conforme à la LSB:
${cmdProxy} mkdir --parent "${dataPath}/local"
while read writeablePath; do
completePath="${installPath}/${writeablePath}"
lsbPath="${dataPath}/${writeablePath}"
if [ -e "${completePath}" -a ! -h "${completePath}" ]; then
command mv "${completePath}" "${lsbPath}"
command ln -s "${lsbPath}" "${completePath}"
command chown -R www-data:www-data "${lsbPath}"
fi
done <<< "data
local/combined
local/watermarks
upload
plugins
themes
language"
Création de la base de données
Créez la base de données:
command mysql-tools --server="${mysqlHost}" --with-ssh \
--auto-hosts --db-prefix="piwigo" --create "${domain}"
Notez les informations de connexion fournies par la commande.
Choisissez un préfixe de nom des tables aléatoire (pour une meilleure sécurité):
echo "Préfixe des noms des tables sécurisé: $(command apg -q -a 0 -n 1 -M NCL)_"
Mise en place de l'hôte virtuel
Créez la configuration du serveur HTTP:
if [[ -n "${sslKeyName}" && ( -e "/etc/ssl/private/${sslKeyName}.key" || "${sslKeyName}" = 'auto' ) ]]; then
command a2tools --ssl="${sslKeyName}" --overrides="FileInfo Options=Multiviews" "${domain}" "${installPath}"
else
command a2tools --overrides="FileInfo Options=Multiviews" "${domain}" "${installPath}"
fi
L'outil est maintenant disponible sur le domaine spécifié en HTTP ou HTTPS si possible.
Configurez l'application à l'aide du script d'installation, disponible à l'adresse fournie par:
echo "http://${domain}/install.php"
Sécurisation
Une fois l'installation terminée, sécurisez l'application:
command chown root:root "${installPath}/local/config/database.inc.php"
command rm "${installPath}/install.php"
command rm -r "${installPath}/install"
Sauvegardes
Sauvegardez l'installation avec Backup Manager (voir Installer et configurer Backup Manager sur Debian):
command backup-manager-tools add "${installPath}"
command backup-manager-tools add "${dataPath}"
N'oubliez pas de sauvegarder la base de données (voir Installer et configurer MySQL sur Debian).
Mise à jour
Renseignez le domaine de l'installation obsolète:
domain="photos.domain.com"
Déterminez le chemin d'installation:
installPath="/opt/piwigo/${domain}"
Déterminez le chemin des données:
dataPath="/var/lib/piwigo/${domain}"
Sauvegardez l'installation obsolète:
if [ -e "${installPath}.old" ]; then
command rm -r "${installPath}.old"
fi
command cp -a "${installPath}" "${installPath}.old"
Téléchargez la dernière version de l'application:
command wget 'http://piwigo.org/download/dlcounter.php?code=latest' \
--output-document='/tmp/piwigo.zip'
Décompressez l'archive obtenue:
command unzip -d '/tmp/piwigo' '/tmp/piwigo.zip'
Déplacez le nouveau dossier vers son emplacement final:
command cp -a '/tmp/piwigo/piwigo/'* "${installPath}"
command cp -a '/tmp/piwigo/piwigo/language' "${dataPath}"
command cp -a '/tmp/piwigo/piwigo/plugins' "${dataPath}"
command cp -a '/tmp/piwigo/piwigo/themes' "${dataPath}"
Réinitialisez les droits d'accès:
command chown -R root:root "${installPath}"
command chmod -R go-w "${installPath}"
command chown -R www-data:www-data "${dataPath}"
Lancez la mise à jour en vous connectant en tant qu'administrateur à l'URL fournie par:
command echo "http://${domain}/"
Une fois la mise à jour terminée, sécurisez l'application:
command chown root:root "${installPath}/local/config/database.inc.php"
command rm "${installPath}/install.php"
command rm -r "${installPath}/install"
Vérifiez que tout fonctionne correctement.
Supprimez les sauvegardes:
if [ -e "${installPath}.old" ]; then
command rm -r "${installPath}.old"
fi
Supprimez l'archive téléchargée:
command rm '/tmp/piwigo.zip'
command rm -r '/tmp/piwigo'
Remerciements
- Merci aux développeurs de Piwigo.