Mi è sempre piaciuta l’ idea di possedere un sito internet, anche da ragazzino ho provato ad averne un paio; neli ultimi anni ho avuto modo di fare esperienza con dei server web sia professionali che domestici. Ora che mi si è riproposta l’ occasione, ho pensato di vedere cosa servisse per tirare su un server web domestico: eccovi quindi proposta la mia nuova esperienza.

Premessa: un server domestico a mio avviso è un’ ottima soluzione: mi piace l’ idea di non dipendere da altri per il servizio di hosting, ovviamente, almeno al mio livello, non mi aspetto un uptime del 99.9% o un impianto da TIER 4 in casa… ciò nonostante è bello vedere come anche un hardware non molto performate possa servire allo scopo (e fornire una soluzione anche economicamente vantaggiosa, se state all’ occhio). Quindi! Per tutti quelli di voi che hanno un vecchio computer a disposizione, o ne hanno uno sempre acceso, o non sanno come impiegare un vecchio router con OpenWRT, oppure ancora…desiderosi di dare un senso al Raspberri Pi comprato ed ora non utilizzato, eccovi servita l’ occasione: un sito internet servito da casa!

Nota a margine: nessuno più di me ama essere contraddetto su certe cose, siamo su forscience! Spazio ai sistemi speciali e over engineered. Se questo è il tuo caso, ti prego… scrivici!

Importante: Anche se nessuno vi vieta di utilizzare queste poche note per crearvi un server web per il vostro business, fatevi un favore e studiatene prima meglio delle implementazioni per la sicurezza ed il reale uptime necessario… il downtime un sito internet non è mai una cosa bella, ma trovare giù uno sito aziendale è proprio brutto ;)

LAMP o LEMP, questo è il dilemma

Se state leggendo questo articolo, molto probabilmente, sapete già di cosa sto parlando. Premetto quindi che io ho sempre utilizzato Apache e sono sempre stato soddisfatissimo. Però sapete com’è : #SquadraCheVinceNonSiCambia e #GuidoMiHaConsigliatoApache, quindi perchè non provare lo stack LEMP questa volta! Via di nginx.

A parte gli scherzi, ero veramente curioso di provare LEMP, e per vari motivi: innanzitutto c’è molto rumor a riguardo, e qua ho la possibilità di farmi una opinione personale a riguardo, non basandomi più solamente su esperienze altrui. Inoltre, nel caso dei router che accennavo prima, nginx potrebbe essere la vostra “unica scelta”: volevo quindi capirne le modernità e provare con mano le sue funzioni. Non per ultimo, io ho sempre usato Apache per servire contenuti web, e questa volta son voluto uscire dalla mia comfort zone: dicono tutti sia un bell’ esercizio, eccomi pronto quindi!

Scelta del sistema operativo e setup del sistema

Avendo a disposizione per la causa un computer inutilizzato, ho potuto scegliermi il sistema operativo: all’ inizio mi ero focalizzato su Fedora server, ma a conti fatti sono molto più pratico e preparato con Ubuntu server, quindi la mia scelta è stata Ubuntu 15.10 x64 (Server)… Lo so, non è LTS, so cosa stai pensando, ma non ero soddisfatto della loro piano per le release future.

Da prima ho effettuato una installazione normale, aggiungendo solo il ruolo OpenSSH Server per necessità di collegamento da terminale remoto.

ProTip: A meno che non vi sia veramente necessaria, non serve settare la password di root, facendolo se ne abilita l’ utenza, rendendo a mio avviso, solo più fragile il sistema.

Per l’installazione e la configurazione base dello stack LEMP vi lascio il link ad una ottima guida di SK, la trovate qua. Mi raccomando, queste sono le configurazioni base di ogni sistema e stack LEMP, non basta avere una password “forte” per sentirsi al sicuro: spendete parte del vostro tempo ad interessarvi su come migliorare prestazioni e sicurezza: ad esempio, come scritto nell’ articolo, un metodo veloce di aumentare al sicurezza del vostro server è eseguire il comando mysql_secure_installation dopo ogni installazione di MySQL, non dimenticatevene!

TimeSavingTip: Se dopo aver installato phpMyAdmin non riuscite ad accedervi, create un link simbolico tra la posizione di installazione e la posizione servita da nginx, ad esempio ln -s /usr/share/phpmyadmin/ /var/www/html/.

Configurazione per domini multipli

La struttura deelle cartelle e dei file

Leggendo l’ articolo, ho ritenuto che la struttura di file e cartelle proposta fosse valida, quindi ho deciso di applicarla anche nella mia soluzione : Partendo quindi dalla posizione /var/www/html:

  • Ogni sito avrà quindi una sua struttura base con nome_sito/public_html/ all’ interno della quale andranno i file del sito internet.
  • Ogni sottodominio avrà la sua cartella separata chiamata nome_sottodominio.nome_sito ed a seguire la struttura base appena indicata (questo per evitare che il sottodominio sia raggiungibile come una cartella: nome_sito/sottodominio).

I file di configurazione

Il file di configurazione di nginx è /etc/nginx/nginx.conf, in questo file si possono settare dei valori importanti, come lo user ed il numero di core disponibili a nginx.

Sotto /etc/nginx/ esistono due cartelle importanti chiamate sites-available e sites-enable. Esiste un file di configurazione base chiamato default, utile per crearne una copia ed utilizzarlo come base per le configurazioni personalizzate. Quanto viene quindi consigliato da tutti è crearne una copia e lavorare su di essa:
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/nome_sito.

Il concetto è che sotto sites-available si crea un file di configurazione per ogni dominio, in questo file si specificano cose come il nome da risolvere e posizione dei dati (/var/www/html/nome_sito/public_html). Per rendere disponibile il sito bisogna attivarlo: serve quindi creare un link simbolico da quel file di configurazione a sites-enable
ln -s /etc/nginx/sites-available/nome_sito /etc/nginx/sites-enabled/

Conclusione

In realtà non posso dare una vera conlcusione a questo articolo: non ho a disposizione dei veri test di performance su Apache e su nginx, ed inoltre, come ho anche premesso, per quello che mi serve fino ad ora, non c’è stato un vero motivo razionale per scegliere LEMP e non LAMP. Quanto vi posso dire è che il sistema si sta comportando benissimo, sono molto soddisfatto dei risultati ottenuti fino ad ora. Tirando le somme fino ad ora l’ installazione del ssitema operativo con relativa configurazione, la ricerca di parametri e la configurazione hanno rubato più o meno 4 ore: direi un tempo onesto per un novizio di LEMP. Appena ci saranno nuove esperienze a riguardo, o mi capiterà di avere dei valori degni di nota, tornerò a scrivere di questo argomento.

Per ora è tutto, a presto !

Stefano