Contexte : mettre en ligne un portfolio ou un site vitrine avec WordPress, sur un serveur Ubuntu avec Nginx, MariaDB et PHP-FPM · Testé sur : Ubuntu Server, PHP 7.4-FPM, WordPress (dernière version disponible en 2023) · Dernière vérification : contenu de 2023 non revérifié
Installer WordPress sur un serveur Ubuntu (pile Nginx, MariaDB, PHP-FPM), puis poser les bases d'un portfolio : thème, pages et menu.
sudo.<DOMAINE>, qui pointe vers le serveur (ou, pour un essai en local, l'adresse IP du serveur).sudo apt update
sudo apt upgrade -y
sudo apt-get install -y nginx mariadb-server php-fpm php-mysql php-gd php-curl
WordPress recommande aussi quelques extensions PHP courantes ; sans elles, l'outil Santé du site le signale :
sudo apt-get install -y php-mbstring php-xml php-zip php-intl
La version d'origine de cette page installait
mysql-serverà cette étape, puismariadb-serverpour la base de données : ces deux paquets sont incompatibles. N'en installez qu'un seul ; ce tutoriel utilise MariaDB.
Lancez le script de sécurisation de MariaDB :
sudo mysql_secure_installation
Connectez-vous à MariaDB en tant que root :
sudo mysql -u root
Créez la base wordpressdb et l'utilisateur wordpressuser, avec un mot de passe robuste conservé dans un gestionnaire de mots de passe (voir Utiliser Bitwarden) :
CREATE DATABASE wordpressdb;
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY '<MOT_DE_PASSE_DB>';
GRANT ALL PRIVILEGES ON wordpressdb.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Créez le dossier du site, téléchargez la dernière version de WordPress et copiez-la à sa place :
sudo mkdir -p /var/www/wordpress
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
sudo cp -a /tmp/wordpress/. /var/www/wordpress
ls /var/www/wordpress/
Confiez les fichiers au serveur web, pour que WordPress puisse enregistrer les médias et installer thèmes et extensions :
sudo chown -R www-data:www-data /var/www/wordpress
Créez le fichier de configuration à partir de l'exemple fourni, puis ouvrez-le :
sudo mv /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php
sudo nano /var/www/wordpress/wp-config.php
Renseignez les informations de la base :
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpressdb' );
/** MySQL database username */
define( 'DB_USER', 'wordpressuser' );
/** MySQL database password */
define( 'DB_PASSWORD', '<MOT_DE_PASSE_DB>' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );
Dans le même fichier, remplacez le bloc des clés de sécurité (lignes put your unique phrase here) par des clés uniques, générées par le service officiel de WordPress :
curl -s https://api.wordpress.org/secret-key/1.1/salt/
Enregistrez et fermez le fichier.
Repérez le socket PHP-FPM installé (le nom dépend de la version de PHP) :
ls /run/php/
Créez le fichier de configuration du site :
sudo nano /etc/nginx/sites-available/wordpress
Contenu, en adaptant server_name et le socket de fastcgi_pass :
server {
listen 80;
listen [::]:80;
root /var/www/wordpress;
index index.php index.html index.htm;
server_name <DOMAINE>;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
}
Activez le site en créant un lien symbolique, testez la configuration puis rechargez Nginx :
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Ouvrez http://<DOMAINE>/ : l'assistant de WordPress s'affiche. Choisissez la langue, puis renseignez :
admin ;Validez, puis connectez-vous au tableau de bord (http://<DOMAINE>/wp-admin).
Depuis le tableau de bord :
try_files de Nginx les prend en charge).sudo nginx -t ne signale aucune erreur.http://<DOMAINE>/ affiche le site et http://<DOMAINE>/wp-admin la page de connexion.fastcgi_pass ne correspond pas à la version de PHP-FPM installée (ls /run/php/), ou PHP-FPM est arrêté.server_name, ou désactivez le site par défaut en supprimant le lien /etc/nginx/sites-enabled/default, puis rechargez Nginx.DB_NAME, DB_USER, DB_PASSWORD et DB_HOST dans wp-config.php.sudo chown -R www-data:www-data /var/www/wordpress.sudo apt install certbot python3-certbot-nginx), puis lancez sudo certbot --nginx -d <DOMAINE> pour obtenir et installer un certificat Let's Encrypt.