In alcuni tipi di distribuzioni, in particolare quando le applicazioni dinamiche avanzate si basano su un database di grandi dimensioni, la separazione del server di database dal server delle applicazioni può consentire all'applicazione di scalare e ospitare una base di utenti molto più ampia. La designazione di un server separato da utilizzare esclusivamente da MySQL consentirà al server Web dell'applicazione di servire i contenuti in modo più efficiente, mentre il server di database sarà in grado di rispondere più rapidamente.
Di conseguenza, questi server di database possono supportare in modo più efficace le distribuzioni con carichi di traffico elevati. Questo può aiutarti a ottenere prestazioni più elevate per una vasta gamma di applicazioni, dai pacchetti popolari come WordPress e Drupal alle applicazioni personalizzate scritte in Ruby on Rails e Django.
Prerequisiti
In questa guida utilizzeremo due Linode. Nota che questo è diverso dalla semplice distribuzione di un secondo profilo di configurazione sul tuo account Linode esistente, poiché entrambi i server dovranno essere in esecuzione contemporaneamente. Partiamo dal presupposto che tu abbia seguito la guida alla configurazione e alla protezione di un'istanza di calcolo per entrambi i linode.
- Per il Linode che esegue il server web, d'ora in poi il server delle applicazioni, dovresti già avere installato Apache (o il tuo server web preferito). Per una nuova installazione, segui la guida LAMP per la tua distribuzione. La guida LAMP include MySQL, che non è necessario installare.
- Il MySQL Linode dedicato dovrebbe avere MySQL installato. Segui la guida all'installazione del server di database MySQL per la tua distribuzione. Tieni presente che non devi installare Apache sul server MySQL dedicato.
Inoltre, vorrai configurare gli alias per l'indirizzo IP privato di ogni Linode. Puoi seguire la guida alla configurazione dell'IP statico Linux per assistenza con questo. È importante notare che entrambi i Linode dovrebbero trovarsi nello stesso data center per il funzionamento della rete privata. Ciò consente ai server di comunicare senza che il traffico venga conteggiato rispetto alla quota di larghezza di banda mensile. È necessario riavviare entrambi i Linode dopo aver configurato gli indirizzi IP privati.
Modifica /etc/hosts
Ti consigliamo di creare nomi host per ogni macchina in modo da poterne tenere traccia in seguito. Ciò consente anche di risparmiare lavoro, se ti trovi in una situazione in cui è necessario modificare l'indirizzo IP del server. Modifica il /etc/hosts
file per includere il privato Indirizzi IP di ogni Linode. Usa il seguente estratto da un esempio /etc/hosts
file come esempio:
- File:/ ecc/host
1
> 127.0.0.1 localhost 192.168.192.168 mysql.example.com mysql 192.168.192.169 app.example.com app
Ricordati di sostituire 192.168.192.168
e 192.168.192.169
con gli indirizzi IP privati effettivi.
Sebbene questo passaggio sia facoltativo, la configurazione di hosts
le voci consentiranno di evitare configurazioni di applicazioni di codifica hardware su indirizzi IP specifici. Sarai in grado di migrare rapidamente la tua applicazione e i server di database su server alternativi se dovessi cambiare i tuoi indirizzi IP.
Configurazione del server MySQL
Il passaggio successivo consiste nel modificare /etc/mysql/my.cnf
file sul tuo server MySQL per ascoltare sul tuo indirizzo IP privato. Usando il tuo editor preferito, apri il /etc/mysql/my.cnf
file e inserire il nome host del database MySQL. Per questo esempio, il nome host del database MySQL è mysql
. Individua l'bind-address
riga:
- File:/ etc/mysql/my.cnf
1
bind-address = mysql
In alternativa è possibile utilizzare l'indirizzo IP privato. Salva il file ed esegui il comando seguente per riavviare il demone MySQL:
/etc/init.d/mysql restart
Concessione dell'accesso al database
Sul server del database dedicato, dovrai creare un nome utente e una password del database con diritti di accesso. Ciò è possibile tramite il prompt di MySQL. Emetti il seguente comando:
mysql -u root -p
Ciò fornirà una riga di comando MySQL. Emetti i seguenti comandi, sostituendo app
con il nome host del Linode che esegue il server delle applicazioni e una password complessa al posto di "PASSWORD":
CREATE DATABASE webapplications;
GRANT ALL ON webapplications.* TO [email protected]'app' IDENTIFIED BY 'PASSWORD';
A questo punto la tua applicazione può accedere con successo al database remoto e sei pronto per iniziare a utilizzare il server del database.
Utilizzo del server database
Da questo momento in poi, tutto è configurato e il tuo database server è pronto per accettare una connessione dal tuo web server. Ora dovresti essere in grado di indirizzare la tua applicazione al server MySQL senza incidenti. È importante ricordare che quando si configurano applicazioni Web per funzionare con un server MySQL remoto è necessario creare un utente con diritti sul sistema remoto (come mostrato sopra).
L'utilizzo di MySQL su un server di database separato è molto simile all'esecuzione di un server di database locale. In genere, le applicazioni richiedono di specificare "nome host database" e convenzionalmente i server di database in esecuzione sulla macchina locale hanno un nome host di localhost
. Quando separi il database e i server delle applicazioni, dovrai specificare il nome host, come impostato sopra, nell'applicazione.
Ad esempio, le impostazioni del database inWordPress sono contenute in wp-config.php
file e il nome host è specificato nel seguente formato:
- File:wp -config.php
1 2
/** MySQL hostname */ define('DB_HOST', 'mysql');
Si noti che il metodo per impostare il nome host varia da un'applicazione all'altra. Inoltre, puoi sostituire l'indirizzo IP specifico del server del database, invece di utilizzare il nome host come configurato in /etc/hosts
sopra.
Considera anche la possibilità di fare riferimento al sito Web externalMySQL per query specifiche su MySQL e assistenza correlata.
Ulteriori informazioni
Si consiglia di consultare le seguenti risorse per ulteriori informazioni su questo argomento. Sebbene questi siano forniti nella speranza che possano essere utili, tieni presente che non possiamo garantire l'accuratezza o la tempestività dei materiali ospitati esternamente.
- Guide alle applicazioni Web
- Strutture di applicazioni Web
- Sistemi di gestione delle banche dati