GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare più WordPress con Nginx su Ubuntu 18.04

Immagina, se hai un solo server ma 2 o più siti WordPress, pensi di aver bisogno di più server per eseguire ogni sito wordpress su di esso. Va bene, ma che ne dici se non hai molti costi per mantenere molti server.

Questo articolo ti mostrerà come eseguire più siti Web WordPress su un server host, utilizzando Nginx + Mariadb + php-fpm su Ubuntu 18.04 LTS.

Prerequisiti

1) Nginx per server web

2) Mariadb per database MySQL

3) php-fpm per php FastCGI Process Manager

Il comando seguente aggiornerà il tuo sistema e aggiungerà un nuovo repository per i pacchetti php

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

Installa Nginx, Mariadb e php-fpm

Installeremo il server Web Nginx, il server MySQL Mariadb e php7-fpm, nonché l'estensione php7 necessaria per eseguire il sito 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

Configura server Mariadb

Per aggiornare l'installazione del server di database, abbiamo bisogno di config per la password di root di MySQL e altre opzioni

Questo comando viene eseguito in modalità procedura guidata, rispondi alla domanda e applicalo con "Invio"

# 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!

Controlla il servizio Mariadb e abilita il servizio all'avvio

Per assicurarti che mariadb-server sia in esecuzione e conferma tutte le impostazioni eseguite nei passaggi precedenti.

Se non ci sono errori, Mariadb-server è pronto per servire il servizio di database

# 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

Sostituisci "password" con la password che hai inserito nel passaggio precedente

# 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)]>

Guarda bene, ora abilita il servizio MySQL all'avvio

# systemctl enable mariadb

Configura php-fpm

Nginx non supporta l'esecuzione di php come mod_php in Apache.

Quindi abbiamo bisogno di installare (l'abbiamo fatto) e configurare il demone php-fpm che supporti l'esecuzione del codice sorgente php

Modifica il file /etc/php/7.0/fpm/php.ini con alcuni parametri come di seguito

# 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

Controlla il file di configurazione del pool php-fpm /etc/php/7.0/fpm/pool.d/www.conf

Assicurati che questa configurazione abbia, lascia altre opzioni predefinite se non sei affatto bravo:

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

Ora riavvia il demone php-fpm e controlla lo stato, quindi abilita il servizio all'avvio

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

Crea più siti wordpress

Esempio, abbiamo 3 siti wordpress, nome:

- sito1.esempio.com
- sito2.esempio.com
- site3.example.com

Crea database

Creeremo db per site1, site2, site3 e concederemo db user per quei database

site1.example.com eseguirà il nome del database 'site1' con l'utente del database '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;"

Eseguire la stessa azione per site1, site2 database, sostituire 'site1' con site2, site3. Sostituisci la password utente db se vuoi

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;"

Crea un file di configurazione nginx per ogni sito

Ogni volta che vuoi aggiungere un nuovo sito, aggiungi semplicemente un nuovo blocco server per quel sito

# 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

Esegui la stessa azione per site2 e sito3

Quindi avremo 3 nuovi file di configurazione in /etc/nginx/sites-available/. Puoi controllare per verificare la baia di configurazione cat comando

#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;
}
}

Crea radice del documento per ogni sito

NOTA :Il percorso radice del documento deve essere lo stesso nella configurazione di Nginx (parametro 'root' nel blocco server{}) e il proprietario è www-data

Se vuoi cambiare la directory principale del documento, cambia semplicemente l'opzione 'root' in nginx config e crea lo stesso percorso.

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

Abilita nginx config per ogni sito e verifica la configurazione

Perché per impostazione predefinita Nginx legge solo la configurazione in /etc/nginx/sites-enabled/

Quindi, se vuoi Nginx, leggi la configurazione in /etc/nginx/sites-available/

Crea semplicemente un collegamento simbolico, come questo:

# 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

Quindi verifica Nginx config eseguendo questo comando:

# 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

Guarda una buona configurazione, ricarica il demone Nginx

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

o

# systemctl reload nginx

Scarica il sorgente wordpress e inseriscilo in /var/www/site*

NOTA:se esisteva un sorgente wordpress, posizionalo semplicemente nel percorso radice del documento seguendo la configurazione di 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*

Iniziale per una nuova installazione di wordpress

Accedi a ogni sito in cui desideri avviare WordPress utilizzando il browser. Dopo aver scelto la lingua, fai clic su "Continua pulsante '

Quindi inserisci il nome del database, l'utente del database, la password del database per eseguire la configurazione per ciascun sito, come di seguito

Quindi invia la tua configurazione e "esegui installazione" facendo clic su "Esegui installazione pulsante '.

Leggi anche:

  • Come installare la riga di comando di WordPress utilizzando WP-CLI
  • Come installare LEMP su Ubuntu 18.04

Ora, con Nginx, Mysql e php-fpm, puoi eseguire molti siti WordPress in un server. Non solo WordPress, ma puoi anche eseguire gli stessi passaggi per altri sorgenti cms.

Nel prossimo articolo, spiegheremo e guideremo come ottimizzare nginx, la configurazione php-fpm per il server web che esegue Nginx e php-fpm


Ubuntu
  1. Come installare WordPress con Nginx su Ubuntu 18.04

  2. Come installare WordPress usando Nginx su Ubuntu 18.04

  3. Come installare Nextcloud con Nginx su Ubuntu 18.04 LTS

  4. Come installare MediaWiki con Nginx su Ubuntu 16.04

  5. Come installare SuiteCRM con Nginx su Ubuntu 16.04

Come installare Nginx con ModSecurity su Ubuntu 15.04

Come installare WordPress 5.x con Nginx su Ubuntu 18.04 / Ubuntu 16.04

Come installare WordPress con Nginx su Ubuntu

Come installare Nextcloud 13 su Ubuntu 16.04 con Nginx

Come installare WordPress con Nginx in Ubuntu 20.04

Installa WordPress con Nginx su Ubuntu 18.04