Installer la plateforme de favoris collaboratifs Semantic Scuttle sur Debian
Semantic Scuttle est une alternative à Scuttle intégrant des fonctions sémantiques. C'est la plate-forme que j'ai préféré parmi toutes celles que j'ai testé. Ce guide vous aide à l'installer sur Debian.
Ce guide est testé sur:
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
Ce guide est testé avec ces versions de Semantic Scuttle:
- 0.98.4
Prérequis
Ce guide nécessite :
- un serveur HTTP Apache 2 disposant du script a2tools, comme décrit par Installer et configurer Apache 2 sur Debian.
- un serveur MySQL, comme décrit par Installer et configurer MySQL sur Debian.
- un serveur HTTP avec support du PHP, comme décrit par Installer PHP-FPM sur Debian.
- l'outil mysql-tools d'administration simplifiée de MySQL sur l'hôte local (et l'hôte du serveur MySQL, si différent).
Paramètres
Renseignez le nom de domaine où sera disponible l'application:
DOMAIN="liens.domaine-exemple.fr"
Renseignez l'adresse mél du compte d'administration:
ADMIN_EMAIL="webmestre@domaine-exemple.fr"
Renseignez le nom d'hôte du serveur MySQL:
MYSQL_HOST="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) (optionnel, recommandé):
SSL_KEY_NAME="${DOMAIN}"
Installation
Déterminez le chemin d'installation:
INSTALL_PATH="/opt/semantic-scuttle/${DOMAIN}"
Détectez le protocole utilisé:
PROTOCOL="http"
command test -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" && PROTOCOL="https"
Déterminez le chemin du cache:
CACHE_PATH="/var/cache/semantic-scuttle/${DOMAIN}"
Assurez-vous que les dossiers existent:
command mkdir --parent "${INSTALL_PATH}"
command mkdir --parent "${CACHE_PATH}"
Préparation de l'environnement
Installez les logiciels nécessaires:
command apt-get install php5-mysql mysql-client unzip apg
Rechargez la configuration de PHP:
test -x /etc/init.d/php5-fpm && /etc/init.d/php5-fpm force-reload
test -x /etc/init.d/apache2 && /etc/init.d/apache2 force-reload
test -x /etc/init.d/lighttpd && /etc/init.d/lighttpd force-reload
test -x /etc/init.d/nginx && /etc/init.d/nginx force-reload
Mise en place de l'application
Téléchargez les sources de la dernière version à l'aide du script sf-downloader:
command mkdir --parent '/opt/bin'
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/opt/bin/sf-downloader'
command chmod +x '/opt/bin/sf-downloader'
/opt/bin/sf-downloader --zip --strip-components=1 --output-directory="${INSTALL_PATH}" \
"semanticscuttle" "SemanticScuttle-VERSION.zip"
Création de la base de données
Créez la base de données avec mysql-tools:
MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="semantic-scuttle" --create "${DOMAIN}")"
Récupérez les paramètres de la nouvelle base de données:
MYSQL_DB="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_DB" \ | cut --delimiter="=" --fields="2-")" MYSQL_USER="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_USER" \ | cut --delimiter="=" --fields="2-")" MYSQL_PASSWORD="$(echo "${MYSQL_PARAMS}" | command grep -e "^MYSQL_PASSWORD" \ | cut --delimiter="=" --fields="2-")" echo "${MYSQL_PARAMS}"
Générez un préfixe de tables aléatoire afin d'augmenter la sécurité contre les attaques par injection SQL:
TABLE_PREFIX="$(command apg -q -a 0 -n 1 -M NCL)"
Initialisez le contenu de la base de données:
command cat "${INSTALL_PATH}/data/tables.sql" \
| command sed -e "s/sc_/${TABLE_PREFIX}_/g" \
| command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \ --host="${MYSQL_HOST}" "${MYSQL_DB}"
Mise en conformité avec la LSB
Configurez le dossier cache en accord avec la LSB:
command chown -R www-data:www-data "${CACHE_PATH}"
Configuration
Créez le fichier de configuration de l'application:
echo "<?php \$dbtype = 'mysqli'; \$dbuser = '${MYSQL_USER}'; \$dbpass = '${MYSQL_PASSWORD}'; \$dbname = '${MYSQL_DB}'; \$dbhost = '${MYSQL_HOST}'; \$tableprefix = '${TABLE_PREFIX}_'; \$cleanurls = true; \$locale = 'fr_FR'; \$shortdate = 'd/m/Y'; \$use_cache = true; \$dir_cache = '/var/cache/semantic-scuttle/${DOMAIN}'; \$root = '${PROTOCOL}://${DOMAIN}/'; \$admin_users = array('admin'); \$adminemail = '${ADMIN_EMAIL}'; \$antispamQuestion = '29 + 13 ?'; \$antispamAnswer = '42'; " > "${INSTALL_PATH}/data/config.php"
Activez le module expires d'Apache 2:
command a2enmod expires
Créez la configuration du serveur HTTP pour le domaine:
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
command a2tools --ssl="${SSL_KEY_NAME}" --overrides="All" --without-multiviews "${DOMAIN}" "${INSTALL_PATH}/www"
command a2tools --template="redirect" "${DOMAIN}" "https://${DOMAIN}/"
else
command a2tools --overrides="All" --without-multiviews "${DOMAIN}" "${INSTALL_PATH}/www"
fi
L'application devrait maintenant être disponible sur le nom de domaine choisi.
Important : Créez le compte d'administration en enregistrant un utilisateur ayant pour identifiant "admin".
Configuration avancée
Désactiver le formulaire d'inscription
Si vous ne souhaitez pas que les internautes puissent créer un compte sur votre application, utilisez la commande suivante (après avoir créé le compte "admin"):
command echo '$enableRegistration = false; ' >> "${INSTALL_PATH}/data/config.php"
Modifier le titre et la description
Renseignez le titre que vous souhaitez utiliser:
TITLE="Mes liens"
Renseignez la description, affichée en page d'accueil:
DESC="Liens en vrac"
Appliquez ces réglages:
echo "\$sitename = \"${TITLE}\"; \$welcomeMessage = \"${DESC}\";" >> "${INSTALL_PATH}/data/config.php"
Intrégration dans Mozilla Firefox
En plus du système de bookmarklets permettant d'ajouter des liens à votre Scuttle avec n'importe quel navigateur, il existe une extension Firefox améliorant l'intégration de Scuttle à Firefox:
Extension Scuttle pour Firefox
Sauvegarde
Sauvegardez l'installation avec Backup Manager (voir Installer et configurer Backup Manager sur Debian):
command backup-manager-tools add "${INSTALL_PATH}"
N'oubliez pas de sauvegarder la base de données (voir Installer et configurer MySQL sur Debian).
Mise à jour de l'outil
Renseignez le domaine de l'application:
DOMAIN="liens.domaine-exemple.fr"
Déterminez le chemin d'installation:
INSTALL_PATH="/opt/semantic-scuttle/${DOMAIN}"
Téléchargez les sources de la dernière version à l'aide du script sf-downloader:
command mkdir --parent '/opt/bin'
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/opt/bin/sf-downloader'
command chmod +x '/opt/bin/sf-downloader'
SOURCE="$(/opt/bin/sf-downloader --zip semanticscuttle SemanticScuttle-VERSION.zip)"
Créez une copie de sauvegarde:
if [ -e "${INSTALL_PATH}.old" ]; then
command rm -r "${INSTALL_PATH}.old"
fi
command mv "${INSTALL_PATH}" "${INSTALL_PATH}.old"
Mettez en place la nouvelle version:
command mv "${SOURCE}" "${INSTALL_PATH}"
command cp -a "${INSTALL_PATH}.old/data/config.php" "${INSTALL_PATH}/data/config.php"
L'installation est maintenant à jour. Vérifiez que tout fonctionne correctement.
Supprimez la sauvergarde:
command rm -r "${INSTALL_PATH}.old"
Remerciements
- Merci aux développeurs de Semantic Scuttle.