Vous êtes ici : Accueil / Debian GNU/Linux / Applications Web / Gestion de contenu / Installer Joomla sur Debian

Installer Joomla sur Debian

Par Pierre-Yves Landuré Dernière modification 03/03/2014 13:44

Joomla est un CMS PHP très répandu. Il est réputé pour sa simplicité d'administration. Ce guide facilite son installation sur Debian.

Ce guide est testé sur:

  • Debian 7.0 Wheezy

Ce guide est testé avec ces versions de Joomla:

  • 3.2.2

Pré-requis

Ce guide nécessite :

Paramètres

Renseignez le nom de domaine où sera disponible l'application:

DOMAIN="www.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, recommandé):

SSL_KEY_NAME="${DOMAIN}"

Paramètres de l'application

Renseignez le titre du site:

JOOMLA_TITLE="${DOMAIN}"

Renseignez le From pour l'envoi d'emails par le site:

JOOMLA_FROM="${DOMAIN}"

Renseignez l'adresse email d'envoi d'emails par le site:

JOOMLA_EMAIL="no-reply@domain.com"

Renseignez l'identifiant de l'utilisateur de l'administrateur:

JOOMLA_ADMIN="admin"

Installation

Déterminez le chemin d'installation:

INSTALL_PATH="/var/lib/joomla/${DOMAIN}"

Déterminez le chemin des journaux:

LOG_PATH="/var/log/joomla/${DOMAIN}"

Déterminez le chemin du cache:

CACHE_PATH="/var/cache/joomla/${DOMAIN}"

Assurez-vous que le dossier parent existe:

command mkdir -p "${INSTALL_PATH}" "${LOG_PATH}" "${CACHE_PATH}/tmp"
command chown -R www-data:www-data "${LOG_PATH}" "${CACHE_PATH}"

Déterminez le protocole utilisé par l'application:

PROTO='http'
if [ -n "${SSL_KEY_NAME}" -a -e "/etc/ssl/private/${SSL_KEY_NAME}.key" ]; then
PROTO='https'
fi

Préparation de l'environnement

Installez les logiciels nécessaires:

command apt-get install apg unzip php5-mysql php5-gd php5-json

Adaptez la configuration PHP aux besoins de l'outil:

command php-tools --for="joomla" --set "magic_quotes_gpc" "0"
command php-tools --for="joomla" --fix "register_globals" "1"

Rechargez la configuration de PHP:

test -e '/etc/init.d/php5-fpm' && command service 'php5-fpm' 'restart'
test -e '/etc/init.d/apache2' && command service 'apache2' 'force-reload'

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="joomla" --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}"

Notez les informations de connexion fournies.

Déterminez un préfixe de table aléatoire:

TABLE_PREFIX="$(command apg -q -a 0 -n 1 -M NCL)_"

Mise en place de Joomla

Téléchargez la dernière version de Joomla:

command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
--quiet --no-check-certificate --output-document='/tmp/sf-downloader'
SOURCE="$(command bash '/tmp/sf-downloader' --zip \
--output-directory="${INSTALL_PATH}" \
--generic='http://www.joomla.org/download.html' \
    'joomla' 'Joomla_VERSION-Stable-Full_Package.zip')"

Ajustez l'emplacement du cache:

command cp "${INSTALL_PATH}/cache/index.html" "${INSTALL_PATH}/cache" 
command rm -r "${INSTALL_PATH}/cache" && command ln -s "${CACHE_PATH}" "${INSTALL_PATH}/cache"

Créez le fichier configuration.php:

command cp "${INSTALL_PATH}/installation/configuration.php-dist" "${INSTALL_PATH}/configuration.php"

Mettez en place les options de configuration:

command sed -i \
-e "s/\(\$dbtype =\).*\$/\1 'mysqli';/" \
 -e "s/\(\$host =\).*\$/\1 '${MYSQL_HOST}';/" \
  -e "s/\(\$user =\).*\$/\1 '${MYSQL_USER}';/" \
-e "s/\(\$password =\).*\$/\1 '${MYSQL_PASSWORD}';/" \
 -e "s/\(\$db =\).*\$/\1 '${MYSQL_DB}';/" \
-e "s/\(\$dbprefix =\).*\$/\1 '${TABLE_PREFIX}';/" \
-e "s|\(\$log_path =\).*\$|\1 '${LOG_PATH}';|" \
-e "s|\(\$tmp_path =\).*\$|\1 '${CACHE_PATH}/tmp';|" \
-e "s/\(\$secret =\).*\$/\1 '$(command apg -q -a 1 -n 1 -m 32 -x 64 -M NCL)';/" \
 -e "s/\(\$sitename =\).*\$/\1 '${JOOMLA_TITLE}';/" \
  -e "s/\(\$fromname =\).*\$/\1 '${JOOMLA_FROM}';/" \
-e "s/\(\$mailfrom =\).*\$/\1 '${JOOMLA_EMAIL}';/" \
 -e "s/\(\$MetaDesc =\).*\$/\1 '${JOOMLA_TITLE}';/" \
-e "s/\(\$MetaKeys =\).*\$/\1 '';/" \
"${INSTALL_PATH}/configuration.php"

Activez le SSL par défaut si disponible:

[[ PROTO = 'https' ]] && command sed -i \
-e "s/\(\$force_ssl =\).*\$/\1 2;/" \
"${INSTALL_PATH}/configuration.php"

Créez les tables de la base de données:

sed -e "s/#__/${TABLE_PREFIX}/" \
"${INSTALL_PATH}/installation/sql/mysql/joomla.sql" \
| command mysql --host="${MYSQL_HOST}" --user="${MYSQL_USER}" \
--password="${MYSQL_PASSWORD}" "${MYSQL_DB}"

Déterminez un mot de passe aléatoire pour l'utilisateur d'administration:

JOOMLA_PASSWORD="$(command apg -q -a 0 -n 1 -M NCL)"

Calculez le Hash du mot de passe:

PASSWORD_HASH="$(command php -r "require('${INSTALL_PATH}/libraries/phpass/PasswordHash.php');
\$passwordHash = new PasswordHash(10, true);
echo \$passwordHash->HashPassword('${JOOMLA_PASSWORD}');")"

Créez le compte d'administration:

command echo "INSERT INTO ${TABLE_PREFIX}users
   (name, username, password, params)
VALUES ('Administrator', '${JOOMLA_ADMIN}', '${PASSWORD_HASH}', '');
INSERT INTO ${TABLE_PREFIX}user_usergroup_map (user_id,group_id)
VALUES (LAST_INSERT_ID(),'8');" \
| command mysql --host="${MYSQL_HOST}" --user="${MYSQL_USER}" \
--password="${MYSQL_PASSWORD}" "${MYSQL_DB}"

Mettez en place les fichiers htaccess.txt et robots.txt:

command mv "${INSTALL_PATH}/htaccess.txt" "${INSTALL_PATH}/.htaccess"
command mv "${INSTALL_PATH}/robots.txt.dist" "${INSTALL_PATH}/robots.txt"

Autorisez la modification des fichiers via le code PHP:

chown -R www-data:www-data "${INSTALL_PATH}"

Sécurisation

Supprimez le dossier d'installation et fichiers inutiles:

while read -r forDeletion; do
[[ -n "${forDeletion}" && -e "${INSTALL_PATH}/${forDeletion}" ]] \
&& rm -r "${INSTALL_PATH}/${forDeletion}"
done <<< "installation
LICENSE.txt
CONTRIBUTING.md
README.txt
web.config.txt
logs
tmp"

Mise en place de l'hôte virtuel

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' "${DOMAIN}" "${INSTALL_PATH}"
command a2tools --template="redirect" "${DOMAIN}" "https://${DOMAIN}"
else
command a2tools --overrides='All' "${DOMAIN}" "${INSTALL_PATH}"
fi

L'installation est maintenant disponible sur le domaine.

Utilisez la commande suivante pour obtenir les informations de connexion au site:

echo "URL: ${PROTO}://${DOMAIN}/administrator/
Username: ${JOOMLA_ADMIN}
Password: ${JOOMLA_PASSWORD}"

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).

Remerciements