Installer WordPress sur Debian
WordPress est considéré comme l'un des meilleurs CMS orienté Blog. Ce guide détaille une méthode d'installation scriptée à l'aide de l'outil d'administration en ligne de commande wp-cli.
Ce guide est testé sur:
- Debian 7.0 Wheezy
- Debian 8.0 Jessie
- Debian 9.0 Stretch
- Ubuntu 16.04 Xenial Xerus
Ce guide est testé avec ces versions de Wordpress:
- 4.5.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).
- wp-cli, l'outil d'administration de Wordpress en ligne de commande, comme décrit par Installer wp-cli sur Debian.
Paramètres
Renseignez le nom de domaine où sera disponible l'application:
domain="domain.com"
Renseignez le nom d'hôte du serveur MySQL:
mysqlHost="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 ou via Let's Encrypt) (optionnel, recommandé):
sslKeyName="auto"
Paramètres de l'application
Renseignez la langue d'installation de l'application:
wpLang="fr_FR"
Renseignez le titre du site:
wpTitle="${domain}"
Renseignez le nom d'utilisateur de l'administrateur:
wpAdmin="admin"
Renseignez l'adresse email de l'administrateur:
wpEmail="contact@${domain}"
Installation
Détectez le proxy de commande (command ou sudo):
cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'
Détectez le nom des paquets PHP disponibles:
phpVersion='5'
if [ -n "$(command apt-cache pkgnames php-cli)" ]; then
phpVersion=''
fi
Déterminez le chemin d'installation:
installPath="/var/lib/wordpress/${domain}"
Assurez-vous que le dossier parent existe:
${cmdProxy} mkdir -p "${installPath}"
${cmdProxy} chown -R www-data:www-data "${installPath}"
Déterminez le protocole utilisé par l'application:
proto='http'
if [[ -n "${sslKeyName}" && ( -e "/etc/ssl/private/${sslKeyName}.key" || sslKeyName = 'auto' ) ]]; then
proto='https'
fi
Préparation de l'environnement
Installez les logiciels nécessaires:
${cmdProxy} apt-get install php${phpVersion}-mysql php${phpVersion}-gd apg unzip
Adaptez la configuration PHP aux besoins de l'outil:
${cmdProxy} php-tools --for='wordpress' --set 'suhosin.memory_limit' '512M'
${cmdProxy} php-tools --for='wordpress' --set 'suhosin.request.max_value_length' '2048'
${cmdProxy} php-tools --for='wordpress' --set 'suhosin.get.max_value_length' '2048'
${cmdProxy} php-tools --for='wordpress' --set 'upload_max_filesize' '10M'
Rechargez la configuration de PHP:
${cmdProxy} php-tools --reload
Création de la base de données
Créez la base de données:
mysqlParams="$(command mysql-tools --server="${mysqlHost}" --with-ssh \
--auto-hosts --db-prefix="wordpress" --create "${domain}")"
Récupérez les paramètres de la nouvelle base de données:
mysqlDb="$(echo "${mysqlParams}" | command grep -e "^MYSQL_DB" \ | cut --delimiter="=" --fields="2-")" mysqlUser="$(echo "${mysqlParams}" | command grep -e "^MYSQL_USER" \ | cut --delimiter="=" --fields="2-")" mysqlPassword="$(echo "${mysqlParams}" | command grep -e "^MYSQL_PASSWORD" \ | cut --delimiter="=" --fields="2-")" echo "${mysqlParams}"
Notez les informations de connexion fournies.
Déterminez un préfixe de table aléatoire:
tablePrefix="$(command apg -q -a 0 -n 1 -M NCL)_"
Mise en place de Wordpress
Déterminez un mot de passe aléatoire pour l'utilisateur d'administration:
wpPassword="$(command apg -q -a 0 -n 1 -M NCL)"
Téléchargez la dernière version de Wordpress:
sudo -u 'www-data' wp core download --path="${installPath}" --locale="${wpLang}"
Créez le fichier wp-config.php:
sudo -u 'www-data' wp --path="${installPath}" core config --dbname="${mysqlDb}" --dbuser="${mysqlUser}" \
--dbpass="${mysqlPassword}" --dbhost="${mysqlHost}" \
--dbprefix="${tablePrefix}" --locale="${wpLang}"
Téléchargez les snippets de configuration complémentaires:
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/wp-config-snippets.php' \
--quiet --no-check-certificate --output-document='/tmp/wp-config-snippets.php'
Ajoutez les snippets de configuration à la configuration Wordpress (support d'un reverse proxy HTTPS):
${cmdProxy} sed -i \
-e '/\$table_prefix/r /tmp/wp-config-snippets.php' \
"${installPath}/wp-config.php"
Supprimez le fichier téléchargé:
command rm '/tmp/wp-config-snippets.php'
Créez les tables de la base de données:
sudo -u 'www-data' wp --path="${installPath}" core install --url="${proto}://${domain}/" --title="${wpTitle}" \
--admin_user="${wpAdmin}" --admin_password="${wpPassword}" --admin_email="${wpEmail}"
Mise en place de l'hôte virtuel
Créez la configuration du serveur HTTP pour le domaine:
if [[ -n "${sslKeyName}" && ( -e "/etc/ssl/private/${sslKeyName}.key" || "${sslKeyName}" = 'auto' ) ]]; then
${cmdProxy} a2tools --overrides='All' --ssl="${sslKeyName}" "${domain}" "${installPath}"
else
${cmdProxy} a2tools --overrides='All' "${domain}" "${installPath}"
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}/
Username: ${wpAdmin}
Password: ${wpPassword}"
Configuration
Activez la compression gzip des pages, pour réduite l'utilisation de bande passante:
sudo -u www-data wp --path="${installPath}" option update "gzipcompression" "1"
Réglez la zone horaire sur l'heure française:
sudo -u www-data wp --path="${installPath}" option update "gmt_offset" "1"
Réécriture d'URL
Configurez les belles URL (aka. "Pretty Permalinks"), afin d'améliorer le référencement naturel:
sudo -u www-data wp --path="${installPath}" option update "permalink_structure" \
"/%year%/%monthnum%/%postname%/"
Mettez à jour le fichier htaccess:
sudo -u www-data wp --path="${installPath}" rewrite flush --hard
Remarque: Cette option est modifiable dans l'administration de Wordpress, "Réglages" -> "Permaliens". Plus d'informations sur la réécriture d'URL avec WordPress son disponibles sur l'article Using Permalinks (en).
Ajout d'extensions
Si vous le souhaitez, vous pouvez ajouter une sélection d'extensions à votre WordPress.
Ajoutez des extensions d'optimisation de Wordpress (cache des pages générées et minification des css et js):
while read -r plugin; do
[[ -n "${plugin}" ]] \
&& sudo -u'www-data' wp --path="${installPath}" plugin install "${plugin}"
done <<< "cache-enabler
autoptimize
async-javascript
ewww-image-optimizer
far-future-expiry-header
wp-optimize"
Ajoutez des extensions d'amélioration du référencement (SEO):
while read -r plugin; do
[[ -n "${plugin}" ]] \
&& sudo -u'www-data' wp --path="${installPath}" plugin install "${plugin}"
done <<< "wordpress-seo
advanced-excerpt
redirection
broken-link-checker
media-file-renamer
pb-seo-friendly-images
wp-sitemap-page"
Ajoutez l'outil de création de formulaires Contact Form 7 et quelques extensions:
while read -r plugin; do
[[ -n "${plugin}" ]] \
&& sudo -u'www-data' wp --path="${installPath}" plugin install "${plugin}"
done <<< "contact-form-7
flamingo
contact-form-7-shortcode-enabler
cf7-post-fields"
Ajoutez le constructeur de page Elementor et ses extensions:
while read -r plugin; do
[[ -n "${plugin}" ]] \
&& sudo -u'www-data' wp --path="${installPath}" plugin install "${plugin}"
done <<< "elementor
addons-for-elementor
essential-addons-for-elementor-lite
fd-elementor-button-plus
premium-addons-for-elementor
press-elements
elementor-templater
elementor-addon-widgets
void-elementor-post-grid-addon-for-elementor-page-builder
anywhere-elementor
addon-elements-for-elementor-page-builder
navmenu-addon-for-elementor
header-footer-elementor
full-site-builder-for-elementor"
Remarque: cette liste ne comprend pas widgetkit-for-elementor car j'ai constaté des erreurs javascripts lors de l'utilisation de cette extensions avec autoptimize.
Installez un ensemble d'extensions en vrac (non recommandé):
while read -r plugin; do
[[ -n "${plugin}" ]] \
&& sudo -u'www-data' wp --path="${installPath}" plugin install "${plugin}"
done <<< "advanced-excerpt
all-in-one-seo-pack
antispam-bee
better-wp-security
breadcrumb-navxt
broken-link-checker
comment-notifier
contact-form-7
custom-css-js
duplicate-post
eu-cookie-law
featured-image-generator
google-analytics-for-wordpress
google-sitemap-generator
jetpack
nextgen-gallery
post-thumbnail-editor
redirection
regenerate-thumbnails
simple-301-redirects
simple-image-sizes
siteorigin-panels
so-widgets-bundle
types
w3-total-cache
wordpress-video-plugin
wp-optimize
wp-pagenavi
wp-piwik
wp-polls
wp-security-scan
wp-sitemap-page
sexybookmarks
rocket-lazy-load
threat-scan-plugin"
Ajout de thèmes
Si vous le souhaitez, vous pouvez ajouter une sélection de thèmes à votre WordPress :
while read -r plugin; do
[[ -n "${plugin}" ]] \
&& sudo -u'www-data' wp --path="${installPath}" theme install "${plugin}"
done <<< "sydney
zerif-lite
activello
evolve
customizr
optimizer
lavish"
Mise à jour automatisées
Mettez en place la mise à jour automatique des thèmes, plugins, traductions et du cœur de Wordpress:
echo "# Automatic updates for Wordpress at ${domain}
# every day à 1 o'clock.
# Wordpress core
0 1 * * * www-data test -x '/usr/local/bin/wp' -a -d '${installPath}' && /usr/local/bin/wp --quiet --path='${installPath}' core update
# Translations
10 1 * * * www-data test -x '/usr/local/bin/wp' -a -d '${installPath}' && /usr/local/bin/wp --quiet --path='${installPath}' core language update
# Themes
20 1 * * * www-data test -x '/usr/local/bin/wp' -a -d '${installPath}' && /usr/local/bin/wp --quiet --path='${installPath}' theme update --all
# Plugins
30 1 * * * www-data test -x '/usr/local/bin/wp' -a -d '${installPath}' && /usr/local/bin/wp --quiet --path='${installPath}' plugin update --all
" \
| ${cmdProxy} tee "/etc/cron.d/wordpress-${domain//\./-}"
Rechargez la configuration de cron:
${cmdProxy} service cron reload
Sauvegardes
Sauvegardez l'installation avec Backup Manager (voir Installer et configurer Backup Manager sur Debian):
${cmdProxy} backup-manager-tools add "${installPath}"
N'oubliez pas de sauvegarder la base de données (voir Installer et configurer MySQL sur Debian).
Remerciements
- Merci aux développeurs de WordPress (en).
- Merci aux développeurs de wp-cli (en).
- Merci à eBay Partner Network (fr) pour l'article 10 modules d'extension WordPress indispensables pour les spécialistes du marketing en ligne (fr).
- Merci à titou.net (fr) pour l'article 16 extensions WordPress (fr).
- Merci aux auteurs de Administration Over SSL (en) dans le Codex Wordpress (en).