Vous êtes ici : Accueil / Debian GNU/Linux / Applications Web / E-Mails / Installer Cyrus-Admin sur Debian

Installer Cyrus-Admin sur Debian

Par Pierre-Yves Landuré Dernière modification 08/02/2014 06:36

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 :

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:

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.