GNU/Linux >> Linux Esercitazione >  >> Debian

Installa WordPress con database remoto su Debian

Panoramica

Nel seguente post tratteremo lo scenario in cui installeremo WordPress con database remoto su Debian. In altre parole, avremo un ambiente in cui avremo due server separati, uno che avrà solo l'installazione di WordPress (il che significa che ospiterà solo il sito Web) e l'altro avrà solo il database (agirà solo come server di database) .

Ci sono molte ragioni vantaggiose per la configurazione di questo tipo di ambiente:una è la facilità di manutenzione del sito Web e del database, l'aumento delle prestazioni (ovvero il wordpress poiché non dipende da un server, richiederà molte meno risorse).

Ma lo svantaggio è che, poiché ora abbiamo due server, la manutenzione del server aumenterà.

Questa configurazione sarà configurata su due server Debian (entrambi nella stessa rete/stessa LAN).

Lo stack sarà LEMP – server web Nginx, server PHP e MariaDB.

Configurazione del server di database

Ci concentreremo prima sul server di database:

1. Installa il server MariaDB

sudo apt install mariadb-server

Esegui mysql_secure_installation

sudo mysql_secure_installation

2. Modifica il file di configurazione del database e cambia il parametro bind-address e inserisci l'indirizzo privato del server del database:

Il file da modificare:

sudo /etc/mysql/mariadb.conf.d/50-server.cnf

Riga da modificare – bind-address =127.0.0.1

indirizzo-bind =192.168.56.252

Salva ed esci, riavvia e abilita mariadb.service.

sudo systemctl restart mariadb.service

sudo systemctl enabled mariadb.service

Per scoprire l'indirizzo IP del tuo server di database, esegui il comando – ip a.

3. Crea il database, l'utente e imposta i privilegi (le informazioni nei comandi sono usate come esempio)

sudo mysql -u root -p
CREATE DATABASE wptest;
GRANT ALL ON wptest.* TO 'wpadmin'@'192.168.56.251' IDENTIFIED BY 'StrongPassword';
FLUSH PRIVILEGES;
exit

Sul database è necessario creare un utente remoto, ovvero l'account utente che la nostra installazione di WordPress utilizzerà per connettersi al database. È necessario conoscere davanti l'indirizzo IP del server WordPress e specificarlo/associarlo all'account utente remoto.

Configurazione firewall

Se hai un firewall in esecuzione sul tuo database server, allora è necessario aprire la porta del 3306 per accettare la connessione dal web server e per accedere al database. Per sicurezza, è bene configurare le regole per accettare solo le connessioni solo dal nostro server web.

Configurazione firewall UFW

sudo ufw allow from 192.168.56.251 to any port 3306

Configurazione IPTABLES

iptables -I INPUT -p tcp -s 192.168.56.251 --dport 3306 -j ACCEPT

Configurazione del server web

1. Installa il server web Nginx con altre librerie php necessarie per eseguire WordPress e comunicare con il server del database e il client mysql/mariadb.

sudo apt install nginx php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl

sudo apt install mariadb-client

Possiamo testare la connessione al server del database se eseguiamo questo comando dal nostro server web (essenzialmente, accedendo in remoto al database):

sudo mysql -u remote-admin -h 192.168.56.252 -p

2. Installa WordPress, configuralo e configura Nginx. Qui ora configureremo solo la parte di WordPress in cui dobbiamo aggiungere l'indirizzo del nostro server di database remoto. Se hai bisogno di passaggi dettagliati su come installare WordPress e configurare Nginx, puoi trovare le istruzioni in questo post.

cd /var/www/html/wordpress/

sudo mv wp-config-sample.php wp-config.php

sudo nano wp-config.php

Nella riga del database, sostituire localhost con l'indirizzo IP del server del database. Fare riferimento all'immagine seguente come esempio:

3. Crea il file Nginx conf e rimuovi quello predefinito:

sudo nano /etc/nginx/sites-available/wordpress.conf

sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/

La Nginx conf che puoi usare, puoi trovarla nello stesso post che abbiamo menzionato in precedenza.

sudo rm /etc/nginx/sites-available/default

sudo rm /etc/nignx/sites-enabled/default

Dopo questa configurazione dovresti essere in grado di eseguire WordPress, accedere al suo database remoto e completare l'installazione di WordPress.

E ora dovresti avere un sito WordPress in esecuzione con un server Web e database separato. Puoi fermarti qui se sei soddisfatto dell'installazione. Questi erano i passaggi necessari su come installare WordPress con un database remoto e, a questo punto, tutto dovrebbe essere attivo e funzionante. Altrimenti continua nel capitolo successivo e finale come proteggere e crittografare la connessione al database e il traffico tra il Web e il server del database e per rendere l'installazione più sicura.

Proteggi e crittografa la connessione al database con un SSL (opzionale ma consigliato)

È anche una buona pratica di sicurezza e un ulteriore livello di sicurezza per proteggere e crittografare il traffico tra il Web e il server di database. Il motivo è che se non è sicuro e crittografato, e SE in qualche modo un utente malintenzionato irrompe nella tua sottorete privata (la rete LAN privata in cui si trovano i server) o nel server Web, l'attaccante può intercettare e annusare il traffico (monitorarlo e ottenere dati) che possono comportare la violazione e l'hacking del tuo sito Web e dei server.

Certificato del server di database

1. Su entrambi i server (web e database), crea una directory temporanea per archiviare i certificati (esempio ssl o certs) nella tua home directory per un esempio o in un posto facile per archiviarli – ad esempio, qui faremo la directory certs nella nostra home directory:

cd

mkdir certs

Inizieremo innanzitutto con il server del database, quindi passa alla nuova directory certs che abbiamo appena creato:

cd certs

2. Sul server del database genereremo la chiave CA, il certificato e la chiave privata. Segui le istruzioni e rispondi di conseguenza quando richiesto. È possibile utilizzare le immagini qui sotto come riferimento. Una cosa a cui prestare attenzione è il prompt Nome comune (che è piuttosto importante). Sta chiedendo il nome del server di database. Qui dovresti aggiungere l'indirizzo IP del server (come abbiamo noi) o il nome di dominio del server se hai o il nome host. Le informazioni devono corrispondere poiché creeremo i certificati del server e le chiavi client in modo che corrispondano.:

sudo openssl genrsa 4096 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 1825 -key ca-key.pem -out cacert.pem

Nel secondo comando, l'attributo -days 1825 fa riferimento alla validità del certificato creato per 5 anni (1825 giorni). Puoi impostare i giorni che desideri o di cui hai bisogno.

3. Successivamente creare la chiave privata RSA e firmare il certificato:

sudo openssl rsa -in server-key.pem -out server-key.pem

sudo openssl req -newkey rsa:4096 -days 1825 -nodes -keyout server-key.pem -out server-req.pem
sudo openssl x509 -req -in server-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

Ora possiamo spostare i certificati in una posizione permanente:

sudo mkdir /etc/mysql/ssl

sudo mv *.* /etc/mysql/ssl

cd /etc/mysql/ssl

Certificato del server Web

4. Genera il certificato client. Le richieste saranno le stesse del server di database, ma nella domanda Nome comune, inserisci i dettagli del server web in cui è installato Wodpress (come l'indirizzo IP del server web). Scrivi la RSA e firma il certificato:

sudo openssl req -newkey rsa:2048 -days 1825 -nodes -keyout client-key.pem -out client-req.pem

sudo openssl rsa -in client-key.pem -out client-key.pem

sudo openssl x509 -req -in client-req.pem -days 1825 -CA cacert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

Configurazione SSL per entrambi i server

Configurazione del server di database

1. Il passaggio successivo consiste nel configurare i nostri server per utilizzare i certificati che abbiamo creato e abilitare la connessione SSL tra il server Web e il database. Prima modifica la configurazione sulla configurazione del server MariaDB:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

E trova le seguenti righe, decommentale, aggiungi riscrivi le righe che corrispondono alle directory e ai file dei nostri certificati che abbiamo creato:

ssl-ca=/etc/mysql/ssl/cacert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

Salva il file ed esci.

2. Ora accedi a MariDB come root ed esegui le seguenti query per abilitare sul server che consentirà la connessione dal server Web solo con SSL:

sudo mysql -u root -p
GRANT ALL PRIVILEGES ON wptest.* TO 'wpadmin'@'192.168.56.251' REQUIRE SSL;
FLUSH PRIVILEGES;
exit

Riavvia il server del database:

sudo systemctl restart mariadb.service
Configurazione del server web

3. Mentre sei ancora nella directory /etc/mysql/ssl (o spostati qui), con lo strumento scp, copia i certificati client sul server web (webuser e l'indirizzo IP sostituiscono con il nome utente e l'indirizzo IP effettivi del tuo server web):

scp cacert.pem client-cert.pem client-key.pem [email protected]:~/certs

Ora passa/accedi al server web e sposta anche i certificati in un posto permanente (lo stesso del server del database):

sudo mkdir /etc/mysql/ssl

cd certs

sudo mv /certs/*.* /etc/mysql/ssl

Modifica il file di configurazione per il client MariaDB che abbiamo installato nel primo passaggio. Ha la stessa posizione del server:

sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

E trova la stessa riga SSL (dovrebbe essere nella sezione [mysql]) che abbiamo fatto per il server del database e fallo corrispondere alla posizione e ai nomi dei file dei certificati che abbiamo aggiunto nella directory /etc/mysql/ssl:

[mysql]
ssl-ca=/etc/mysql/ssl/cacert.pem
ssl-cert=/etc/mysql/ssl/client-cert.pem
ssl-key=/etc/mysql/ssl/client-key.pem

Salva il file, esci.

Puoi verificare se la connessione funziona con l'accesso remoto:

mysql -u wpadmin -h 192.168.56.252 -p

4. L'ultimo file da modificare è di nuovo wp-config.php. Abbiamo bisogno anche della riga di configurazione SSL:

sudo nano /var/www/html/wordpress/wp-config.php

e aggiungi la riga prima della riga con il nome del database:

define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );

Fare riferimento all'immagine:

Riavvia il server web Nginx e termina l'installazione di WordPress dal browser web. Dovrebbe essere attivo e funzionante.

Riepilogo

Per riassumere questo articolo, abbiamo illustrato i passaggi su come installare WordPress con un database remoto. Abbiamo anche spiegato il processo su come proteggere la connessione tra i due server (se non hai sperimentato prima i certificati autofirmati e come lavorare, puoi saltare il passaggio, come detto sopra, non è necessario, solo una raccomandazione) . Il processo di base stesso su come installare WordPress con un database remoto non è così difficile e offre un paio di vantaggi, uno dei quali è che le prestazioni e la manutenzione del server web possono ora essere piuttosto più semplici e ridurre i tempi di inattività quando è necessaria la manutenzione.


Debian
  1. Come installare un server LAMP su Debian 9 Stretch Linux

  2. Installa un server di log centralizzato con Rsyslog in Debian 9

  3. Come installare HTTP Git Server con Nginx su Debian 11

  4. Installa WordPress su Fedora 22/21 con AMP

  5. Installa WordPress su openSUSE 13.2 con LAMP

Come installare il server FTP vsftpd con TLS su Debian 10

Installa phpMyAdmin con Apache (LAMP) su Debian 10 Buster

Come installare WordPress su Debian 8

Come installare Nginx con PHP-FPM su Debian 11

Come installare WordPress su un server cloud Debian 8.2

Come installare WordPress con LAMP su Debian 10