Installer Cyrus-Admin sur Debian
Cyrus-Admin est une application développée par Biapy pour faciliter la gestion d'un serveur IMAP installé suivant le guide proposé par ce site.
Ce guide est testé sur:
- Debian 7.0 wheezy
Prérequis
Ce guide nécessite :
- un serveur HTTP Apache 2 avec le script a2tools disponible dans le guide Installer Apache 2 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 le module PHP APC sur Debian.
- l'outil php-tools de configuration simplifiée de PHP.
- un serveur MySQL, comme décrit par Installer et configurer MySQL 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="imap.domain.com"
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, fortement recommandé):
SSL_KEY_NAME="${DOMAIN}"
Paramètres de sécurisation
Renseignez un nom d'utilisateur utilisé pour accéder à l'outil d'administration:
USER_NAME="admin"
Installation
Déterminez le chemin d'installation:
INSTALL_PATH="/opt/cyrus-admin/${DOMAIN}"
Déterminez le chemin du cache:
CACHE_PATH="/var/cache/cyrus-admin/${DOMAIN}"
Déterminez le chemin des journaux:
LOG_PATH="/var/log/cyrus-admin/${DOMAIN}"
Assurez-vous que le dossier parent existe:
command mkdir --parent "$(command dirname "${INSTALL_PATH}")"
Préparation de l'environnement
Installez les logiciels nécessaires:
command apt-get install git apg php5-mysql php5-intl php5-cli
Adaptez la configuration PHP aux besoins de l'outil:
command php-tools --for="symfony" --set "short_open_tag" "0"
command php-tools --for="symfony" --set "magic_quotes_gpc" "0"
command php-tools --for="symfony" --set "register_globals" "0"
command php-tools --for="symfony" --set "session.auto_start" "0"
command php-tools --for="symfony" --set "xdebug.max_nesting_level" "256"
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 la dernière version de l'application:
command git clone 'https://github.com/biapy/cyrus-admin' "${INSTALL_PATH}"
Configuration du serveur HTTP
Générez un mot de passe aléatoire pour l'utilisateur d'administration:
USER_PASSWORD="$(command apg -q -a 0 -n 1 -M NCL)"
Créez le dossier destiné à contenir le fichier des mots de passe:
command mkdir --parent '/etc/apache2/passwords'
Créez le fichier de mot de passe pour le domaine:
command htpasswd -cb "/etc/apache2/passwords/${DOMAIN}.pwd" "${USER_NAME}" "${USER_PASSWORD}"
Déterminez l'option SSL:
SSL_OPTION=""
if [ -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
SSL_OPTION="--ssl=${SSL_KEY_NAME}"
fi
Créez la configuration du serveur HTTP:
command a2tools --template="custom" ${SSL_OPTION} "${DOMAIN}" "
DocumentRoot ${INSTALL_PATH}/web
<Directory ${INSTALL_PATH}/web>
# Protect default access
Order deny,allow
Allow from all
AllowOverride All
# Auth configuration
Satisfy All
# We enable password authentication
AuthType Basic
AuthName \"${DOMAIN} accounts management\"
AuthUserFile /etc/apache2/passwords/${DOMAIN}.pwd
Require valid-user
</Directory>
"
Mettez en place la redirection http vers https si nécessaire:
if [ -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
command a2tools --template="redirect" "${DOMAIN}" "https://${DOMAIN}/"
fi
L'outil est maintenant disponible sur le domaine spécifié en HTTP et HTTPS si possible.
La commande qui suit affiche les paramètres de connexion:
echo "URL: http://${DOMAIN}/
Identifiant : ${USER_NAME}
Mot de passe : ${USER_PASSWORD}"
Mise en conformité avec la LSB
Mettez en place une architecture de dossier conforme à la LSB:
command mkdir --parent "${CACHE_PATH}" "${LOG_PATH}"
command chown -R www-data:www-data "${CACHE_PATH}" "${LOG_PATH}" command ln -s "${CACHE_PATH}" "${INSTALL_PATH}/app/cache" command ln -s "${LOG_PATH}" "${INSTALL_PATH}/app/logs"
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="cyrus" --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}"
Configuration de l'application
Générez un secret aléatoire:
SECRET="$(command apg -q -a 1 -n 1 -m 32 -x 64 -M NCL)"
Créez le fichier configuration:
command cp "${INSTALL_PATH}/app/config/parameters.yml.dist" "${INSTALL_PATH}/app/config/parameters.yml"
command sed -i \
-e "s/database_host:.*/database_host: ${MYSQL_HOST}/" \
-e "s/database_name:.*/database_name: ${MYSQL_DB}/" \
-e "s/database_user:.*/database_user: ${MYSQL_USER}/" \
-e "s/database_password:.*/database_password: ${MYSQL_PASSWORD}/" \
-e "s/secret:.*/secret: ${SECRET}/" \
"${INSTALL_PATH}/app/config/parameters.yml"
Placez-vous dans le dossier des sources:
command pushd "${INSTALL_PATH}"
Téléchargez Composer:
command wget --quiet --output-document=- --no-check-certificate \
'https://getcomposer.org/installer' \
| command php
Installez les dépendances de l'application:
command php "${INSTALL_PATH}/composer.phar" install
Videz le cache:
command su www-data -c "command php '${INSTALL_PATH}/app/console' cache:clear --env=prod"
Initialisez le contenu de la base de données:
command su www-data -c "command php '${INSTALL_PATH}/app/console' doctrine:schema:create"
Finalisation
Ce guide recommande:
- L'installation de Cyrus IMAP, comme décrit par Installer le serveur IMAP Cyrus sur Debian.
Sauvegardes
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
Renseignez le domaine de l'installation obsolète:
DOMAIN="imap.domain.com"
Déterminez le chemin d'installation:
INSTALL_PATH="/opt/cyrus-admin/${DOMAIN}"
Nettoyez le chemin:
INSTALL_PATH="$(echo "${INSTALL_PATH}" | sed -e 's|/$||g')"
Placez-vous dans le dossier de l'application:
command pushd "${INSTALL_PATH}"
Mettez à jour les sources:
command git pull
Mettez à jour les bibliothèques tierces:
command php composer.phar update
Effacez le cache:
command su www-data -c "command php '${INSTALL_PATH}/app/console' cache:clear --env=prod"
Mettez à jour la base de données:
command su www-data -c "command php '${INSTALL_PATH}/app/console' doctrine:schema:update --force"
L'application est maintenant à jour.
Remerciements
- Merci à [ Nor : And ] pour leur aide dans la réalisation de ce logiciel.