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