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

Installer WordPress sur Debian

Par Pierre-Yves Landuré Dernière modification 23/01/2019 15:07

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 :

    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