Installer Joomla sur Debian
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 :
- a2tools, l'outil d'administration simplifiée d'Apache 2.
- un serveur HTTP avec support du PHP, comme décrit par Installer PHP-FPM sur Debian.
- php-tools, l'outil de configuration simplifiée de PHP.
- un serveur MySQL, comme décrit par Installer et configurer MySQL sur Debian.
- mysql-tools, l'outil 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="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
- Merci aux développeurs de Joomla (en).