Passer au contenu principal

Configuration Wordpress

Configuration pour le tutoriel :  

  • 1 Vm Debian 11
  • 1 go de RAM
  • 20 go de disque dur

Installation de apache et de php-fpm avec les extension php communément utilisé dans les applications avec php (Wordpress,OCS Inventory, Bookstack, GLPI etc...)

# Installation de Apache2 et de PHP-FPM
apt install apache2 php-fpm
# Installation des extensions PHP communément utilisé
apt install php-fpm php-common php-mbstring php-xmlrpc php-soap php-gd \
php-mysql php-xml php-intl php-mysql php-cli php-ldap php-zip php-curl php-apcu php-cas php-bz2 php-imap 

Activation de l'utilisation de PHP-FMP et de TLS

# Activation desDesactivation modules PHP-CGInon a2enmodnecessaires
proxy_fcgia2dismod a2enconfmpm_prefork
php7.4-fpm.confa2dismod php8.2
# Activation des modules HTTPSPHP-FPM
a2enmod proxy_fcgi
a2enconf php8.2-fpm.conf
a2enmod mpm_event
# Activation des modules Apache
a2enmod ssl
a2enmod http2
a2enmod rewrite
a2enmod headers
a2enmod socache_shmcb
# Relancer le service apacheApache
systemctl restart apache2

Ne pas oublier !
Les modification de la configuration de php se font dans /etc/php/7.4/apache2/php.ini
Relancer le service une fois les modifications effectués !

service php7.4-fpm restart
Création base de données pour Wordpress
# Connexion à la BDD en root
mysql -u root
# Création de la BDD wordpress
CREATE DATABASE wordpress;
GRANT ALL ON wordpress.* TO 'wordpress' IDENTIFIED BY 'wordpress';
FLUSH PRIVILEGES;
Maintenance de la Base de données
# Sauvegarde de la BDD
mysql -u root wordpress > wordpress.sql
# Restauration de la BDD
mysql -u root wordpress < wordpress.sql

Créer le fichier wordpress.conf
Emplacement : /etc/apache2/sites-availables
Nom du fichier : wordpress.conf

<VirtualHost *:80>
   # Redirection HTTPS
    RewriteEngine On
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
   # Activation HTTP/2
   Protocols h2 http/1.1
   # Indication SNI
   ServerName wordpress.fr
   ServerAlias www.wordpress.fr
   ServerAdmin webmaster@site.fr


# Réglages SSL
   SSLEngine on
   SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
   SSLCertificateKeyFile   /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>

# Bloc configuration Application
  DocumentRoot /var/www/wordpress
   <Directory /var/www/wordpress>
        Options ExecCGI FollowSymlinks
        AllowOverride AuthConfig Limit FileInfo Options Indexes
        Order allow,deny
        allow from all
   </Directory>

# Emplacements des logs
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined


# Configuration Protocoles
 SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
 SSLHonorCipherOrder     off
 SSLSessionTickets       off

 SSLUseStapling On
 SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

Télécharger les fichier d'installation de WordPress

Appliquer les droits apache sur le répertoire web

#Application des droits apache sur l'application web
chown -R www-data:www-data /var/www/wordpress/
Activation du site
# Désactivation des sites par défaut pour éviter des conflits
a2dissite 000-default.conf
# Activation du site glpi
a2ensite wordpress.conf

Le site est configuré et accessible, il ne reste plus qu'a se connecter sur le serveur et lancer la procédure d'installation ou de mise à jour.

Utilisation de WordPress sous un reverse-proxy
  • Modifier les URL de WordPress en https://blog.domaine.tld
  • Modifier le fichier wp-conf.php
  • Placer ce code juste après <?php (pas à la fin du fichier !)
/** Correctif reverse proxy HTTPS*/
/** Placer au début du fichier wp-conf.php juste apres php */

if ( ! empty( $_SERVER['HTTP_X_FORWARDED_HOST'] ) ) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
  $_SERVER['HTTPS']='on';
  $_SERVER['SERVER_PORT'] = 443;
}

if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
  $_SERVER['HTTP_HOST'] =  $_SERVER['HTTP_X_FORWARDED_HOST'];
}