apt update && apt full-upgrade
apt install curl wget gnupg lsb-release
apt install apache2
systemctl enable apache2
systemctl start apache2
apt install php php-cli php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip php-bcmath
systemctl restart apache2
apt install mariadb-server mariadb-client
systemctl enable mariadb
systemctl start mariadb
Securisation par script :
mariadb-secure-installation (ou mysql_secure_installation)
Manuellement :
mariadb
– Définir le mot de passe root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MotDePasseFortIci';– Supprimer les utilisateurs anonymes
DELETE FROM mysql.user WHERE User='';– Supprimer la DB de test
DROP DATABASE IF EXISTS test;– Recharger les privilèges
FLUSH PRIVILEGES;EXIT;
mysql -u root -p
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'un_mot_de_passe_fort';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
cd
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
mv wordpress /var/www/html/
Configurer les permissions :
chown -R www-data:www-data /var/www/html/wordpress
chmod -R 755 /var/www/html/wordpress
cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php
Éditer wp-config.php pour mettre les infos de DB (point 5) :
vi /var/www/html/wordpress/wp-config.php
define('DB_NAME, 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'un_mot_de_passe_fort');
define('DB_HOST', 'localhost');
vi /etc/apache2/sites-available/wordpress.conf
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/wordpress
ServerName example.com<Directory /var/www/html/wordpress/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch ".php$">
SetHandler "proxy:unix:/run/php/php8.x-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log
CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined
</VirtualHost>
a2ensite wordpress.conf
a2enmod rewrite
a2dissite 000-default.conf
systemctl restart apache2
vi /var/www/html/wordpress/wp-config.php
Juste avant la ligne « /* That’s all, stop editing! Happy publishing. */ » :
// Force HTTPS si reverse proxy
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = ‘on’;
}// Corrige l’hôte si nécessaire
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
https://monsite.mondomaine.fr/wp-login
Renseigner les bonnes infos dans General → Settings
Mettre “https” dans les deux champs WordPress Address (URL) et Site Address (URL) : https://monsite.domaine.fr
Télécharger le pack de langue : https://wpfr.net/wporg-localization-api/
mkdir -p /var/www/html/wordpress/wp-content/languages
chown -R www-data:www-data /var/www/html/wordpress/wp-content/languages
Puis choisir la langue dans Settings → General
apache2ctl -M | grep php
php_module (shared) → indique que mod_php est actif.
systemctl status php8.x-fpm
Active: active (running) → Prêt à être utilisé
apache2ctl -M | grep proxy_fcgi
Si vide → Apache ne passe pas les requêtes PHP à FPM
Désactiver mod_php
a2dismod php8.x
Activer les modules nécessaires pour FPM
a2enmod proxy_fcgi setenvif
a2enconf php8.x-fpm
Relancer Apache et vérifier :
apache2ctl -M | grep proxy_fcgi
→ proxy_fcgi_module
Juste avant la ligne « /* That’s all, stop editing! Happy publishing. */ » :
ajouter "define( 'WP_MEMORY_LIMIT', '256M');"
Générer les salt ici https://api.wordpress.org/secret-key/1.1/salt/ et les remplacer dans le fichier original
vi /etc/php/8.4/fpm/php.ini
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300