GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer plusieurs WordPress avec Nginx sur Ubuntu 18.04

Imaginez, si vous n'avez qu'un seul serveur mais 2 sites WordPress ou plus, vous pensez avoir besoin de plus de serveurs pour exécuter chaque site wordpress dessus. C'est bien, mais que diriez-vous si vous n'avez pas beaucoup de coûts pour maintenir de nombreux serveurs.

Cet article vous montrera comment exécuter plusieurs sites Web WordPress sur un serveur hôte, en utilisant Nginx + Mariadb + php-fpm sur Ubuntu 18.04 LTS.

Prérequis

1) Nginx pour le serveur Web

2) Mariadb pour la base de données mysql

3) php-fpm pour le gestionnaire de processus php FastCGI

La commande ci-dessous mettra à jour votre système et ajoutera un nouveau référentiel pour les packages php

# apt-get update
# apt-get install software-properties-common 
# add-apt-repository ppa:ondrej/php

Installer Nginx, Mariadb et php-fpm

Nous allons installer le serveur Web Nginx, le serveur mysql Mariadb et php7-fpm ainsi que l'extension php7 nécessaire au fonctionnement du site WordPress

# apt-get install nginx mariadb-server mariadb-client \ 
php7.0-fpm php7.0-common php7.0-mbstring php7.0-xmlrpc \
php7.0-soap php7.0-gd php7.0-xml php7.0-intl php7.0-mysql \
php7.0-cli php7.0-mcrypt php7.0-ldap php7.0-zip php7.0-curl -y

Configurer le serveur Mariadb

Pour actualiser l'installation du serveur de base de données, nous avons besoin de la configuration du mot de passe root mysql et d'autres options

Cette commande s'exécute en mode assistant, répondez simplement à la question et appliquez-la par 'Entrée'

# mysql_secure_installation

...

Enter current password for root (enter for none): #< Enter
...

Change the root password? [Y/n] y #< type 'y' then Enter
New password: #< Type mysql root password
Re-enter new password: #< Retype mysql root password
Password updated successfully!
Reloading privilege tables..
... Success!

...

Remove anonymous users? [Y/n] y #< type 'y' then Enter
... Success!

...

Disallow root login remotely? [Y/n] y #< type 'y' then Enter
... Success!

...

Remove test database and access to it? [Y/n] y #< type 'y' then Enter
...

Reload privilege tables now? [Y/n] y #< type 'y' then Enter
...

Thanks for using MariaDB!

Vérifiez le service Mariadb et activez le service au démarrage

Pour vous assurer que mariadb-server est en cours d'exécution et confirmez toutes les configurations que vous avez effectuées aux étapes précédentes.

S'il n'y a pas d'erreur, Mariadb-server est prêt à servir le service de base de données

# systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-07-16 03:11:48 UTC; 4h 19min ago
Main PID: 10781 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 27 (limit: 2322)
CGroup: /system.slice/mariadb.service
└─10781 /usr/sbin/mysqld

Remplacez 'password' par votre mot de passe que vous avez saisi à l'étape précédente

# mysql -uroot -p'password'

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 49
Server version: 10.1.29-MariaDB-6 Ubuntu 18.04

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Regardez bien, activez maintenant le service mysql au démarrage

# systemctl enable mariadb

Configurer php-fpm

Nginx ne prend pas en charge l'exécution de php comme mod_php dans Apache.

Nous avons donc besoin d'installer (nous l'avons fait) et de configurer le démon php-fpm qui prend en charge l'exécution du code source php

Editez le fichier /etc/php/7.0/fpm/php.ini avec quelques paramètres comme ci-dessous

# vim /etc/php/7.0/fpm/php.ini

upload_max_filesize = 100M
max_execution_time = 360
cgi.fix_pathinfo = 0
date.timezone = Asia/Ho_Chi_Minh

Vérifiez le fichier de configuration du pool php-fpm /etc/php/7.0/fpm/pool.d/www.conf

Assurez-vous d'avoir cette configuration, laissez les autres options par défaut si vous n'êtes pas bon du tout :

user = www-data
group = www-data
listen = /run/php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data

Maintenant, redémarrez simplement le démon php-fpm et vérifiez l'état, puis activez le service au démarrage

# systemctl restart php7.0-fpm
# systemctl status php7.0-fpm
# systemctl enable php7.0-fpm

Créer plusieurs sites wordpress

Exemple, nous avons 3 sites wordpress, nom :

- site1.exemple.com
- site2.exemple.com
- site3.example.com

Créer une base de données

Nous allons créer une base de données pour site1, site2, site3 et accorder un utilisateur de base de données pour ces bases de données

site1.example.com exécutera le nom de la base de données 'site1' avec l'utilisateur de la base de données 'site1'@'localhost'

mysql -u root -p'password' -e "CREATE DATABASE site1;"
mysql -u root -p'password' -e "GRANT ALL PRIVILEGES ON site1.* TO 'site1'@'localhost' IDENTIFIED BY 'site1password';"
mysql -u root -p'password' -e "FLUSH PRIVILEGES;"

Faites la même action pour la base de données site1, site2, remplacez 'site1' par site2, site3. Remplacez le mot de passe de l'utilisateur de la base de données si vous le souhaitez

mysql -u root -p'password' -e "CREATE DATABASE site2;"
mysql -u root -p'password' -e "GRANT ALL PRIVILEGES ON site2.* TO 'site2'@'localhost' IDENTIFIED BY 'site2password';"
mysql -u root -p'password' -e "FLUSH PRIVILEGES;"
mysql -u root -p'password' -e "CREATE DATABASE site3;"
mysql -u root -p'password' -e "GRANT ALL PRIVILEGES ON site3.* TO 'site3'@'localhost' IDENTIFIED BY 'site3password';"
mysql -u root -p'password' -e "FLUSH PRIVILEGES;"

Créer un fichier de configuration nginx pour chaque site

Chaque fois que vous souhaitez ajouter un nouveau site, ajoutez simplement un nouveau bloc de serveur pour ce site

# cat > /etc/nginx/sites-available/site1.conf <<EOF
server {
listen 80;
root /var/www/site1;
index index.php index.html index.htm;
server_name site1.example.com www.site1.example.com;

client_max_body_size 100M;

location / {
try_files \$uri \$uri/ /index.php?\$args; 
}

location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
}
}
EOF

Faites la même action pour site2 et site3

Ensuite, nous aurons 3 nouveaux fichiers de configuration dans /etc/nginx/sites-available/. Vous pouvez cocher pour vérifier la baie de configuration cat commande

#cat  /etc/nginx/sites-available/site2.conf
server {
listen 80;
root /var/www/site2;
index index.php index.html index.htm;
server_name site2.linoxide.com www.site2.linoxide.com;

client_max_body_size 100M;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

Créer une racine de document pour chaque site

REMARQUE  :Le chemin racine du document doit être le même dans la configuration Nginx (paramètre 'root' dans le bloc server{}) et dont le propriétaire est www-data

Si vous souhaitez modifier le répertoire racine du document, modifiez simplement l'option 'root' dans la configuration nginx et créez le même chemin.

# mkdir -p /var/www/site{1,2,3}
# chown -R www-data:www-data /var/www/site*

Activer la configuration nginx pour chaque site et vérifier la configuration

Parce que par défaut, Nginx ne lit que la configuration dans /etc/nginx/sites-enabled/

Donc, si vous voulez que Nginx lise la configuration dans /etc/nginx/sites-available/

Créez simplement un lien symbolique, comme ceci :

# ln -s /etc/nginx/sites-enabled/site1.conf /etc/nginx/sites-available/site1.conf
# ln -s /etc/nginx/sites-enabled/site2.conf /etc/nginx/sites-available/site2.conf
# ln -s /etc/nginx/sites-enabled/site3.conf /etc/nginx/sites-available/site3.conf

Vérifiez ensuite la configuration de Nginx en exécutant cette commande :

# nginx -t -c /etc/nginx/nginx.conf
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Regardez la bonne configuration, rechargez le démon Nginx

# nginx -s reload -c /etc/nginx/nginx.conf

ou

# systemctl reload nginx

Téléchargez la source wordpress et placez-la sur /var/www/site*

REMARQUE :Si vous avez déjà créé une source wordpress, placez-la simplement dans le chemin racine du document en suivant la configuration nginx.

# cd /tmp
# wget http://wordpress.org/latest.tar.gz
# tar -xzvf latest.tar.gz
# cp -r wordpress/* /var/www/site1/
# cp -r wordpress/* /var/www/site2/
# cp -r wordpress/* /var/www/site3/
# chown -R www-data:www-data /var/www/site*

Initial pour une nouvelle installation de wordpress

Accédez à chaque site que vous souhaitez initialiser WordPress en utilisant le navigateur. Après avoir choisi votre langue, cliquez sur 'Continuer ' bouton

Remplissez ensuite le nom de la base de données, l'utilisateur de la base de données, le mot de passe de la base de données pour exécuter la configuration pour chaque site, comme ci-dessous

Ensuite, soumettez votre configuration et 'lancez l'installation' en cliquant sur 'Exécuter l'installation ' bouton.

Lire aussi :

  • Comment installer la ligne de commande WordPress à l'aide de WP-CLI
  • Comment installer LEMP sur Ubuntu 18.04

Désormais, avec Nginx, Mysql et php-fpm, vous pouvez exécuter plusieurs sites WordPress sur un seul serveur. Non seulement WordPress, mais vous pouvez également effectuer les mêmes étapes pour d'autres sources cms.

Dans l'article suivant, nous expliquerons et guiderons comment optimiser la configuration de nginx, php-fpm pour le serveur Web exécutant Nginx et php-fpm


Ubuntu
  1. Comment installer WordPress avec Nginx sur Ubuntu 18.04

  2. Comment installer WordPress avec Nginx sur Ubuntu 18.04

  3. Comment installer Nextcloud avec Nginx sur Ubuntu 18.04 LTS

  4. Comment installer MediaWiki avec Nginx sur Ubuntu 16.04

  5. Comment installer SuiteCRM avec Nginx sur Ubuntu 16.04

Comment installer Nginx avec ModSecurity sur Ubuntu 15.04

Comment installer WordPress 5.x avec Nginx sur Ubuntu 18.04 / Ubuntu 16.04

Comment installer WordPress avec Nginx sur Ubuntu

Comment installer Nextcloud 13 sur Ubuntu 16.04 avec Nginx

Comment installer WordPress avec Nginx dans Ubuntu 20.04

Installer WordPress avec Nginx sur Ubuntu 18.04