Installer l'outil de mise en ligne de fichiers FileZ sur Debian
FileZ est une application PHP qui permet de mettre en ligne des fichiers sur des URLs uniques pour une durée déterminée. Il ne permet pas de mettre à disposition un fichier indéfiniment.
Ce guide est testé sur:
- Debian 6.0 Squeeze
Ce guide est testé avec ces versions de FileZ:
- 2.1
Prérequis
Ce guide nécessite :
- 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.
- le cache d'OpCode PHP APC, comme décrit par Installer l'extention PHP APC 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).
Ce guide nécessite l'un des outils ci-dessous, suivant le serveur HTTP choisi:
- a2tools disponible dans Installer et configurer Apache 2 sur Debian.
- lighty-tools disponible dans Installer et configurer Lighttpd sur Debian.
Paramètres
Renseignez le nom de domaine où sera disponible l'application:
DOMAIN="fichiers.domaine-exemple.fr"
Renseignez l'adresse mél de l'administrateur, notifiée lors de l'inscription de nouveaux utilisateurs:
ADMIN_EMAIL="root@domaine-exemple.fr"
Renseignez l'adresse mél d'expédition des messages:
FROM_EMAIL="filez@domaine-exemple.fr"
Renseignez le nom d'expédition des messages:
FROM_NAME="${DOMAIN}"
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.
Installation
Déterminez le chemin d'installation:
INSTALL_PATH="/opt/filez/${DOMAIN}"
Assurez-vous que le dossier parent existe:
PARENT_PATH="$(command dirname "${INSTALL_PATH}")"
if [ ! -e "${PARENT_PATH}" ]; then
command mkdir --parent "${PARENT_PATH}"
fi
Préparation de l'environnement
Installez les logiciels nécessaires:
command apt-get install php5-mysql php5-curl php5-ldap git
Adaptez la configuration PHP aux besoins de l'outil:
command php-tools --for="filez" --set "upload_max_filesize" "750M"
command php-tools --for="filez" --set "post_max_size" "750M"
command php-tools --for="filez" --set "max_execution_time" "1200"
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
Installez la dernière version de l'application:
command git clone "git://github.com/FileZ/FileZ.git" "${INSTALL_PATH}"
Création de la base de données
Créez la base de données:
MYSQL_PARAMS="$(command mysql-tools --server="${MYSQL_HOST}" --with-ssh \
--auto-hosts --db-prefix="filez" --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}"
Initialisez le contenu de la base de données:
command mysql --user="${MYSQL_USER}" --password="${MYSQL_PASSWORD}" \ --host="${MYSQL_HOST}" "${MYSQL_DB}" \ < "${INSTALL_PATH}/config/db/schema.sql"
Conformité avec la LSB
Ajustez l'application pour obtenir une meilleure conformité avec la LSB:
command mkdir --parent "/var//lib/filez/${DOMAIN}/uploads"
command chown -R www-data:www-data "/var/lib/filez/${DOMAIN}/uploads"
command mkdir --parent "/var/log/filez/${DOMAIN}"
command chown -R www-data:www-data "/var/log/filez/${DOMAIN}"
Configuration
Créez le fichier de configuration:
echo "[app]
log_dir = \"/var/log/filez/${DOMAIN}\"
upload_dir = \"/var/lib/filez/${DOMAIN}/uploads\"
default_locale = \"fr\"
progress_monitor = \"Fz_UploadMonitor_Apc\"
sharing_destinations[] = \"email\"
admin_email = \"${ADMIN_EMAIL}\"
[db]
dsn = \"mysql:host=${MYSQL_HOST};dbname=${MYSQL_DB}\"
user = \"${MYSQL_USER}\"
password = \"${MYSQL_PASSWORD}\"
[email]
from_name = \"${FROM_NAME}\"
from_email = \"${FROM_EMAIL}\"
host = \"localhost\"
name = \"filez\"" \
> "${INSTALL_PATH}/config/filez.ini"
Si possible, forcez le HTTPS:
command sed -i -e '/[app]/a\
https = "always"' "${INSTALL_PATH}/config/filez.ini"
Les différentes options de configuration sont documentées dans les fichiers config/filez.default.ini et config/filez.ini.example.
Configuration de l'hôte virtuel
Créez la configuration du serveur HTTP pour le domaine:
if [ -x "/usr/bin/a2tools" ]; then command a2tools --overrides="All" "${DOMAIN}" "${INSTALL_PATH}" fi if [ -x "/usr/bin/lighty-tools" ]; then command lighty-tools add-vhost "${DOMAIN}" "${INSTALL_PATH}" fi
L'application est maintenant disponible sur le domaine choisi. Connectez-vous avec:
- Identifiant : admin
- Mot de passe : filez
N'oubliez pas de changer le mot de passe par défaut.
Suppression automatique des fichiers expirés
Mettez en place le script de suppression automatique des fichiers expirés:
command cp "${INSTALL_PATH}/scripts/cron.sh" "/etc/cron.hourly/filez-${DOMAIN}"
command chmod +x "/etc/cron.hourly/filez-${DOMAIN}"
command sed -i \
-e "s|^LOG_DIR=.*\$|LOG_DIR=/var/log/filez/${DOMAIN}|" \
-e "s|^URL=.*\$|URL=http://${DOMAIN}|" \
"/etc/cron.hourly/filez-${DOMAIN}"
Mise à jour automatique
Mettez en place un script de mise à jour automatique quotidienne du code de l'outil:
echo "#"'!'"/bin/bash
# Update ${PROTOCOL}://${DOMAIN}/ source code from Git.
test -x '/usr/bin/git' -a -d '${INSTALL_PATH}' && {
pushd '${INSTALL_PATH}' > '/dev/null'
/usr/bin/git pull --quiet > '/dev/null'
popd > '/dev/null'
}" \
> "/etc/cron.daily/${DOMAIN}-update"
command chmod +x "/etc/cron.daily/${DOMAIN}-update"
Sauvegardes
Sauvegardez l'installation avec Backup Manager (voir Installer et configurer Backup Manager sur Debian):
command backup-manager-tools add "${INSTALL_PATH}"
command backup-manager-tools add "/var/lib/filez/${DOMAIN}"
N'oubliez pas de sauvegarder la base de données (voir Installer et configurer MySQL sur Debian).
Remerciements
- Merci aux contributeur de FileZ sur GitHub.
- Merci à l'université d'Avignon pour avoir développé FileZ.