Comment: Installer WordPress Manuallement

Dans ce guide complet, je vais vous montrer comment installer WordPress manuellement et pourquoi c'est une bonne idée. Nous allons installer et sécuriser notre serveur Linux, installer la dernière version de MySQL et de PHP ainsi qu'installer et configurer Nginx. Vous apprendrez à sécuriser votre serveur avec un pare-feu et à crypter la communication entre les utilisateurs et le site Web avec un certificat TLS. Enfin, Cloudflare sera utilisé pour mettre en cache notre contenu dans le monde entier.

author: Besjan Sejrani

Besjan Sejrani


Qu'est-ce que WordPress

WordPress est un système de gestion de contenu, également appelé CMS, qui est principalement utilisé pour le blogging, le commerce électronique et la présentation de sites web. C'est un logiciel libre, vous pouvez l'utiliser à n'importe quel prix pour un usage personnel ou commercial. De nos jours, en 2022, WordPress représente environ 40% de l'ensemble du web. Comme il s'agit d'un projet d'une telle ampleur projet, vous pouvez facilement trouver de l'aide via la documentation ou les tutoriels sur le web.


Pourquoi il vaut mieux installer WordPress manuellement

L'installation manuelle de WordPress par rapport à d'autres solutions d'hébergement WordPress n'est pas nécessairement un meilleur choix. Cependant, cela vous apprendra de précieuses informations sur le web, que vous pourrez utiliser plus tard pour d'autres sites web. Vous ne serez jamais dépendant ou enfermé par certaines solutions d'hébergement WordPress, vous vous aurez un contrôle total.


Conditions préalables

Pour ce guide, vous n'avez pas besoin d'avoir des connaissances en informatique, vous allez apprendre les bases. Cependant, il est recommandé d'avoir une forte volonté d'apprendre de nouveaux sujets et de pratiquer à côté.

Si vous souhaitez héberger votre site Web, vous devez disposer d'un fournisseur d'hébergement, comme Vultr ou Digital Ocean, et un nom de domaine. Vous devrez payer $5-10 / par mois pour l'hébergement et 10 $ par an pour un domaine.


Fournisseur d'hébergement

Pour ce guide complet, Vultr sera utilisé pour l'hébergement. Le nom de domaine selfticode.com a été acheté et sera géré via le panneau de configuration DNS d'Infomaniak.

Vous pouvez utiliser la solution d'hébergement et de DNS de votre choix, à condition de pouvoir gérer votre serveur via SSH. Attention, souvent l'hébergement mutualisé ne permet pas la gestion SSH de la gestion.

Image: Créer une instance sur Vultr

Image: Choisissez votre serveur Vultr, sa localisation, son système d'exploitation et sa taille.

Image: Choisissez votre serveur Vultr, sa localisation, son système d'exploitation et sa taille.

Dans ce guide, Ubuntu a été choisi comme système d'exploitation principal, mais vous pouvez choisir n'importe quel système d'exploitation de type Unix que vous voulez, par conséquent, les commandes du gestionnaire de paquets peuvent être différentes.


Configuration SSH

Secure Shell, également connu sous le nom de SSH, est un protocole réseau qui permet de se connecter à un serveur en toute sécurité. L'algorithme de cryptage génère une clé privée, qui doit rester privée, et une clé publique, que vous pouvez partager avec le serveur.

Générer une clé SSH

Les utilisateurs de Windows doivent installer Git Bash avant d'exécuter la commande ssh-keygen.ssh-keygen. Les utilisateurs Mac et Linux peuvent utiliser le terminal. Saisissez la commande et fournissez une adresse électronique valide.

Par défaut, la commande ssh-keygen va créer deux fichiers, un fichier appelé id_ed25519 et un autre fichier nommé id_ed25519.pub. Si vous voulez changer le nom des fichiers et leur emplacement, vous pouvez le faire en éditant le fichier. Cependant, il est fortement recommandé de créer les fichiers sous le dossier caché .ssh.

# Crée une clé privée et une clé publique
ssh-keygen -t ed25519 -C "[email protected]"
# Copier le contenu de id_ed25519.pub
cat ~/.ssh/id_ed25519.pub

Il est recommandé d'ajouter votre clé SSH publique à Vultr, ceci rendra la connexion au serveur beaucoup plus facile et plus sécruisé.

Pour afficher le contenu de la clé publique SSH, on utilise la commande cat, puis un simple copier-coller fait l'affaire. Assurez-vous de copier le fichier se terminant par .pub.

Image: Ajoutez votre clé SSH publique à Vultr

# Connection SSH
ssh [email protected]_address

Créer et sécuriser un nouveau compte super utilisateur

Par défaut, le compte root est le compte super utilisateur et cela pose un problème puisque tout le monde sait qu'un compte root existe.

Les meilleures pratiques consistent à créer un nouvel utilisateur et à l'ajouter au groupe sudo qui lui donnera les droits de super utilisateur, de désactiver la connexion SSH pour le compte root, et enfin de désactiver l'authentification par mot de passe.

# Crée un nouvel utilisateur et demande un nouveau mot de passe
adduser username
# Ajouter un utilisateur au groupe sudo pour obtenir les droits de super utilisateur
sudo usermod -aG sudo username
# Vérifiez que l'utilisateur a été ajouté au groupe sudo.
groups username
# Passer au compte utilisateur
su - username
# Quitter le nouveau compte super utilisateur
exit
# Quitter le serveur
exit
# Envoyer la clé publique par SSH sur le nouveau compte super utilisateur
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]_address
# Connexion SSH avec le nouveau compte super utilisateur
ssh [email protected]_address

La commande ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]_address La commande enverra la clé publique SSH sur le nouveau compte super utilisateur. C'est le même processus que celui de Vultr lorsque nous lui passons la clé publique SSH.

# Modifier le fichier de configuration du serveur SSH
sudo nano /etc/ssh/sshd_config
# Modifiez les propriétés suivantes
# Si un # précède la propriété, la ligne est commentée.
PermitRootLogin: no
PubkeyAuthentication: yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication: no
# Redémarrer le serveur SSH
sudo systemctl restart sshd

Vous pouvez maintenant essayer de vous connecter via SSH au compte root, cela ne fonctionnera pas. Il fonctionnera uniquement avec le nouveau super utilisateur créé.


Installation PHP

WordPress utilise PHP comme principal langage de programmation sur le serveur. Pour l'installer l'installer, nous devons d'abord mettre à jour tous les paquets sur notre serveur, puis installer PHP et quelques extensions qui ajouteront des capacités supplémentaires à PHP.

# Ajouter un dépôt de paquets, Ondrej PPA maintient un dépôt qui inclut plusieurs versions de PHP
sudo add-apt-repository ppa:ondrej/php
# Mise à jour des packets
sudo apt update
# Mise à niveau des paquets
sudo apt upgrade

La commande sudo signifie super user do, elle vous permettra d'exécuter certaines commandes en mode privilège. d'exécuter certaines commandes en mode privilège.

# Installer PHP et ses extensions
sudo apt install php8.0-fpm php8.0-common php8.0-mysql \
php8.0-xml php8.0-xmlrpc php8.0-curl php8.0-gd \
php8.0-imagick php8.0-cli php8.0-dev php8.0-imap \
php8.0-mbstring php8.0-opcache php8.0-redis \
php8.0-soap php8.0-zip -y

Les extensions suivantes améliorent les capacités de PHP à prendre en charge la base de données MySQL le format XML, le traitement des images, le support du courrier électronique, la compression zip et la base de données Redis. support de la base de données Redis.

# Vérifiez votre version de PHP
php --version
# PHP 8.0.14 (cli) (built: Dec 20 2021 21:22:57) ( NTS )
# Copyright (c) The PHP Group
# Zend Engine v4.0.14, Copyright (c) Zend Technologies
# with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies

After the installation has been completed, verify the PHP version.


Installation MySQL

MySQL est une base de données relationnelle SQL qui est utilisée pour stocker des données. WordPress utilise MySQL pour son fonctionnement interne, notamment dans le cas des thèmes et des plugins.

Vous pouvez également utiliser MariaDB, qui est un clone de MySQL. A propos, il a été cloné de peur qu'Oracle, lorsqu'il a acquis le projet, ne le transforme en un produit payant.

# Mise à jour des packets
sudo apt update
# Installer MySQL
sudo apt install mysql-server

After updating your packages, install MySQL.

# Configurer MySQL
sudo mysql_secure_installation

Il est recommandé d'ajouter un mot de passe à l'utilisateur root de MySQL, de préférence, un mot de passe fort. Ensuite, supprimez les utilisateurs anonymes, interdisez la connexion de l'utilisateur root à distance et enfin de supprimer la base de données de test.

# Connexion à MySQL en tant que super utilisateur
sudo mysql
# Créer une base de données WordPress
CREATE DATABASE wordpress;
# Créer un utilisateur MySQL
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
# Accorder des permissions à l'utilisateur
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'username'@'localhost' WITH GRANT OPTION;
# Libère la mémoire que le serveur a mise en cache.
FLUSH PRIVILEGES;
# Quitter le shell MySQL
EXIT;

Après la création de la base de données wordpress et la création d'un utilisateur identifié par un mot de passe, les autorisations de cet utilisateur sont renforcées afin qu'il puisse effectuer des opérations de base de la base de données. Enfin, la mémoire de la base de données est réinitialisée pour des raisons de sécurité avant de quitter la base. sécurité avant de quitter la base de données.


Télécharger WordPress

Le code source de WordPress peut être téléchargé sur le site wordpress.org via la commande wget.

# Allez dans le répertoire de l'utilisateur root
cd ~
# Installer les fichiers tar de WordPress
# wget télécharge WordPress via le dépôt wordpress.org
wget http://wordpress.org/latest.tar.gz
# Extraire des fichiers
# Cela créera un dossier nommé wordpress contenant tous les fichiers de WordPress par extraction.
tar -xzvf latest.tar.gz

Après que WordPress ait été téléchargé depuis le dépôt de wordpress.org, le contenu doit encore être extrait dans un dossier nommé wordpress.

# Allez dans le répertoire wordpress
cd wordpress
# Copier le fichier wp-config-sample.php
cp wp-config-sample.php wp-config.php
# Modification de wp-config.php avec l'éditeur nano
nano wp-config.php

Nano est un éditeur de texte pour Linux, vous pouvez l'utiliser pour modifier vos fichiers. Pour les débutants, il est recommandé de commencer par utiliser nano avant d'utiliser d'autres éditeurs de texte tels que Vim ou Emacs.

#/** Le nom de la base de données pour WordPress */
define( 'DB_NAME', 'database_name_here' );
#/** Nom d'utilisateur de la base de données MySQL */
define( 'DB_USER', 'username_here' );
#/** Mot de passe de la base de données MySQL */
define( 'DB_PASSWORD', 'password_here' );
# Allez à l'URL suivante : https://api.wordpress.org/secret-key/1.1/salt/
# Copiez et collez le contenu suivant
define('AUTH_KEY', 'YOUR AUTH_KEY');
define('SECURE_AUTH_KEY', 'YOUR SECURE_AUTH_KEY');
define('LOGGED_IN_KEY', 'YOUR LOGGED_IN_KEY');
define('NONCE_KEY', 'YOUR NONCE_KEY');
define('AUTH_SALT', 'YOUR AUTH_SALT');
define('SECURE_AUTH_SALT', 'YOUR SECURE_AUTH_SALT');
define('LOGGED_IN_SALT', 'YOUR LOGGED_IN_SALT');
define('NONCE_SALT', 'YOUR NONCE_SALT');

Après avoir ouvert le fichier wp-config.php avec votre éditeur de texte, vous devez devez modifier les variables database_name_here, username_here et password_here.

Pour des raisons de sécurité, vous devez également modifier les variables de sécurité. Via l'URL URL suivante, https://api.wordpress.org/secret-key/1.1/salt/, WordPress génère automatiquement des valeurs aléatoires pour les variables de sécurité. Il suffit de copier le contenu et de le coller dans le fichier.


Installation et configuration de Nginx

Nginx est un serveur web qui se trouve juste devant un serveur, il est capable d'être utilisé comme un reverse proxy ou d'équilibrage de charge, ce qui signifie qu'il redirige le trafic, en fonction de l'URL que l'utilisateur a saisi, vers un seul serveur ou vers plusieurs serveurs.

Nginx reverse proxy diagram

Image: Flux de requêtes et de réponses

Par rapport à d'autres serveurs web tels qu'Apache, Nginx traite les demandes de manière beaucoup plus efficace, ce qui lui permet de traiter davantage de demandes.

# Mise à jour des packets
sudo apt update
# Installer Nginx
sudo apt install nginx -y
# Modifier le fichier de configuration de nginx
sudo nano /etc/nginx/sites-available/default

Après avoir mis à jour vos paquets, installez Nginx et mettez à jour le fichier de configuration par défaut sous /etc/nginx/sites-available/default avec le contenu suivant. Modifiez votre server_name avec votre nom de domaine. , utilisez l'éditeur nano pour modifier le fichier.

server {
listen 80;
server_name selfticode.com;
root /var/www/html/wordpress;
index index.php;
# Pour des raisons de sécurité, le server_tokens est désactivé.
# Le navigateur ne sera pas en mesure de savoir quel système d'exploitation est le serveur.
server_tokens off;
location / {
# L'URI demandé est d'abord testé, puis le dossier, et enfin le fichier index.php avec n'importe quelle chaîne de requête.
try_files $uri $uri/ /index.php?$args;
}
location ~* /wp-sitemap.*\.xml {
# L'URI demandé est d'abord testé, puis le dossier, et enfin le fichier index.php avec n'importe quelle chaîne de requête.
try_files $uri $uri/ /index.php$is_args$args;
}
client_max_body_size 100M;
# Passe les scripts php au serveur FastCGI spécifié dans la déclaration amont.
location ~ \.php(/|$) {
include fastcgi.conf;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
try_files $uri $uri/ /app.php$is_args$args;
fastcgi_intercept_errors on;
}
# GZIP est un algorithme de compression, il réduit la charge utile des fichiers.
gzip on;
# Plus le niveau de gzip_comp_level est élevé, plus la compression des fichiers est efficace.
# L'inconvénient, c'est que le CPU est très sollicité.
gzip_comp_level 4;
gzip_min_length 1000;
gzip_proxied any;
# Types de fichiers autorisés pour la compression Gzip
gzip_types
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml;
# Fichiers, médias
# Un large choix de formats de fichiers a été sélectionné pour chaque cas d'utilisation
location ~* \.(?:css?|js?|jpe?g|png|gif|ico|webp|tiff?|mp3|m4a|aac|ogg|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
expires 90d;
access_log off;
}
# Fichiers Statiques
location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
add_header Access-Control-Allow-Origin "*";
expires 90d;
access_log off;
}
}
# Vérifier le fichier de configuration de Nginx
sudo nginx -t
# Redémarrer Nginx
sudo systemctl restart nginx

Vérifiez que le fichier de configuration de nginx est correct, et seulement ensuite redémarrez nginx.

# Déplace le dossier wordpress vers un nouvel emplacement
sudo mv ~/wordpress /var/www/html/wordpress
# Change le propriétaire du dossier et de son contenu de manière récursive.
sudo chown -R www-data:www-data /var/www/html/wordpress/
# Modifie les permissions du dossier et de son contenu de manière récursive.
sudo chmod -R 755 /var/www/html/wordpress/

Par défaut, nginx fonctionne avec l'utilisateur www-data, pour cette raison, nous devons changer le propriétaire du dossier wordpress et changer les permissions du dossier.

La commande chown -R change le propriétaire de manière récursive, ce qui signifie que que le dossier et tout le contenu qu'il contient changera de propriétaire pour devenir www-data.

La commande chmod -R modifie les permissions du dossier. les permissions sont organisées au format utilisateur:groupe:autre. Chacun d'entre eux obtient certaines permissions. Le nombre d'autorisations de lecture est de 4, celui d'écriture de 2 et celui d'exécution de 1. Combiné, l'utilisateur peut lire, écrire et exécuter. Le groupe peut lire et exécuter et enfin les autres peuvent aussi lire et exécuter.

Lorsque vous entrez votre adresse IP sur la barre URL, vous devriez voir l'assistant d'installation de WordPress. mais ne le lancez pas encore, nous n'avons pas fini d'installer et de sécuriser votre site web.

Firewall diagram

Image: L'installation de WordPress n'est pas encore terminée

Problème de pare-feu

Si vous n'arrivez pas à voir la page d'installation de WordPress, c'est peut-être la faute du service ufw, ufw signifiant uncomplicated firewall. Nous allons arrêter et désactiver le service ufw en faveur du pare-feu nftables, qui est plus granulaire, nous l'installerons à la fin.

# Liste de tous les services fonctionnant sur le serveur
service --status-all
# Redémarrer Nginx
sudo systemctl disable ufw
sudo systemctl stop ufw

Liaison DNS

Lorsque vous achetez un plan d'hébergement, vous obtenez votre serveur et une adresse IP publique que vous pouvez ensuite associer à un nom de domaine. Un nom de domaine aide les utilisateurs à se souvenir de votre site web via une URL lisible par l'homme. Sinon, ils devraient se souvenir des adresses IP à quatre octets, ce qui n'est ni pratique ni utile lors de la recherche d'informations.

Vous pouvez lier votre nom de domaine à votre serveur par l'intermédiaire de n'importe quel fournisseur de noms de domaine, pour autant que vous ayez un accès direct à votre panneau de contrôle DNS. Après avoir installé le serveur, vous devez modifier les paramètres de configuration DNS, il suffit d'ajouter ns1.vultr.com et ns2.vultr.com à vos paramètres de serveur DNS personnalisés, après un certain temps, cela devrait fonctionner.

Un DNS A record vous permet de lier un nom de domaine à une adresse IP. Un enregistrement DNS CNAME vous permet de créer un alias lorsque vous souhaitez rediriger votre trafic de www.selfticode.com versselfticode.com

DNS control panel

Image: Panneau de contrôle DNS d'Infomaniak

Type Hostname Value
A selfticode.com 134.122.90.217
CNAME www.selfticode.com selfticode.com

Certificat TLS

Transport Layer Security, également connu sous le nom de TLS, est un protocole de sécurité utilisé pour crypter la connexion de l'utilisateur au site web qu'il visite. Avec TLS, il est impossible de réaliser une attaque de type "man in the middle", c'est-à-dire qu'un un utilisateur malveillant se fait passer pour le navigateur web du point de vue de l'utilisateur et l'utilisateur du point de vue du navigateur, dans le but ultime de voler des identifiants personnels.

La seule chose que l'utilisateur malveillant verra, ce sont les données cryptées.

Pourquoi les certificats TLS sont-ils importants

La sécurité joue un rôle majeur dans l'Internet moderne, notamment en ce qui concerne le classement des moteurs de recherche et la confiance des utilisateurs. Si vous traitez des informations sensibles via un formulaire ou vous vendez des produits sur votre site web, les utilisateurs s'attendent à une communication sécurisée entre le navigateur et le site web.

Ces dernières années, Google a amélioré ses facteurs de classement des recherches, et l'un d'entre eux est la sécurité. Google classera votre site Web plus haut dans les resultats de recherche si votre site Web utilise un certificat TLS.

Let's Encrypt

Let's Encrypt est une autorité de certification à but non lucratif qui fournit des certificats TLS . Avant Let's Encrypt, vous deviez payer pour mettre en place un certificat TLS auprès d'une autorité de certification, de nos jours, la sécurité est plus plus que jamais encouragée à être mise en œuvre.

Certbot

Certbot est un outil d'automatisation gratuit et open source qui vous permettra de d'implémenter gratuitement un certificat TLS sur votre serveur web. Il génère automatiquement un certificat à l'aide de Let's Encrzpt et modifiera votre fichier de configuration nginx.

# Installer snapd
# Vérifier la dernière version de snapd
sudo snap install core; sudo snap refresh core
# Installer Certbot
sudo snap install --classic certbot
# Créer un lien symbolique
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# Exécuter Certbot sur le serveur web Nginx
sudo certbot --nginx

En exécutant Certbot, il ajoutera une nouvelle section serveur dans le fichier de configuration de nginx en écoutant sur le port 443 pour les requêtes HTTPS.

Renouvellement de certificat

Par défaut, les certificats TLS de Let's Encrypt ne sont valables que pour une période de 90 jours. Vous devez donc exécuter le processus encore et encore sans l'oublier. Heureusement, nous pouvons automatiser le processus sans faire aucune action manuelle, ceci peut être fait avec l'aide des tâches cron.

Les tâches Cron sont des actions répétitives qui peuvent être exécutées par un script pendant un intervalle de temps. Ces intervalles peuvent être configurés pour se déclencher plusieurs fois pendant cette période.

# Fichier de configuration Cron
crontab -e
# Certbot essaiera d'exécuter le processus de renouvellement quotidiennement.
@daily certbot renew -n -q

Pare-feu

Un pare-feu est comme un gardien de sécurité, il contrôle le trafic qui veut entrer et sortir. Une mesure importante pour sécuriser un serveur serait de mettre en œuvre un pare-feu pour filtrer les demandes indésirables. Nftables sera utilisé comme une solution populaire de pare-feu.

# Mise à jour des packets
sudo apt update
# Instaler ntables
sudo apt install nftables -y
# Modifier le fichier de configuration de nftables
sudo nano /etc/nftables.conf

Après l'installation de nftables, le fichier de configuration doit encore être modifié et le service doit être redémarré.

#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state invalid drop comment "Drop invalid connections"
ct state established,related accept comment "Accept traffic originated from us"
icmp type echo-request drop
icmp type echo-request limit rate 10/second accept
tcp dport {80, 443} accept
tcp dport 22 accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0;
}
}
# Redémarrer nftables
sudo systemctl restart nftables

Après avoir configuré nftables correctement, redémarrez le service et ouvrez un nouveau terminal. Testez votre connectivité SSH ainsi que toutes les autres règles que vous avez autorisées dans le fichier de configuration. Dans le pire des cas, vous serez bloqué hors de votre serveur mais vous serez toujours en mesure de modifier le fichier de configuration dans l'onglet du terminal ouvert.

Firewall diagram

Image: Le pare-feu contrôle le trafic entrant et sortant.


Cache Cloudflare

Cloudflare est un CDN, également connu sous le nom de Content Delivery Network, il agit comme un proxy inverse et se place devant un serveur webb. L'avantage d'utiliser Cloudflare est qu'il dispose de serveurs dans le monde entier et qu'il peut donc mettre en cache le contenu statique de notre site Web et nous protéger contre les attaques DDOS.

La mise en cache est le processus de stockage du contenu temporaire d'une requête, de sorte que, lorsqu'une deuxième requête sollicite les mêmes ressources, un temps de réponse plus rapide puisse être fourni. C'est très utile si votre serveur principal est en Europe, mais que vous avez des utilisateurs dans le monde entier. Le CDN fait office d'intermédiaire, ce qui permet de réduira la distance que la requête devra parcourir.

Le déni de service distribué, également connu sous le nom de DDoS, est l'acte d'attaquer un serveur avec des centaines de milliers de requêtes afin qu'il ne soit pas en mesure de répondre à toutes ces demandes. Cette attaque a pour but de nuire au trafic du site web et de l'arrêter temporairement.

Image: Schéma de la mise en cache et de la protection DDoS de Cloudflare


Conclusion

J'espère que vous avez appris quelque chose dans cet article et qu'il vous a aidé à installer WordPress et à sécuriser votre serveur. Maintenant vous connaissez les avantages et inconvénients d'une installation manuelle de WordPress, si vous choisissez la méthode manuelle, vous vous aurez le contrôle total de votre site web.

WordPress Installation completed

Image: Félicitations, vous avez installé WordPress

Abonne toi à la Newsletter

Ne rate pas les dernières actualités, reçoit en avant première des mise à jour sur le développement

Bes


Pages

Home

Services

Blog

Legal

Contact

Privacy Policy

Terms & Conditions

Social

Github

Twitter

Linkedin

RSS


© 2023 Besjan Sejrani, all rights reserved.