Come installare un server web con Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1a parte: presentazione]

Non molto tempo fa ne abbiamo parlato adesso DesdeLinux (tutti i suoi servizi) stanno funzionando Server GNUTransfer.com. Il blog è migliorato molto in termini di velocità, fluidità, anche quando si passa dall'avere (dopo l'unione di UsemosLinux) più di 30.000 visite ogni giorno (quasi 200 utenti connessi contemporaneamente). Come ottenere buone prestazioni del server anche con questo volume di traffico?

Attualmente Justice (VPS dove si trovano il blog e qualche altro servizio) ha 3GB di RAM, tuttavia vengono consumati meno di 500MB, questo è possibile con la corretta scelta del software da utilizzare e una adeguata configurazione degli stessi. Ad esempio, Apache è senza dubbio un grande al mondo, il numero uno quando si parla di hosting, ma proprio per questo Apache non è sempre l'opzione migliore. Quando il traffico è elevato e l'hardware del server non è molto grande (Es: 1 o 8 GB di RAM) Apache potrebbe consumare troppa RAM, rendendo il server in certi momenti troppo tempo per rispondere, o peggio, che il nostro sito è offline per risorse insufficienti. Questo è il motivo per cui molti di noi scelgono Nginx su Apache.

nginx:

Ti abbiamo già parlato di Nginx in precedenza nell'articolo Nginx: un'interessante alternativa ad Apache, lì ti abbiamo detto che si tratta di un server web come Apache, LightHttpd o Cherokee, ma rispetto ad Apache si distingue per le sue prestazioni e il basso consumo di hardware, proprio per questo che molti siti di grandi dimensioni come Facebook, MyOpera.com, DropBox o anche WordPress .com usa Nginx invece di Apache. Nel mondo di Linux DesdeLinux Non è l'unico che usa Nginx, per quanto ne so, lo usano anche emsLinux e MuyLinux :)

La mia esperienza personale con Nginx risale a diversi anni fa, quando per necessità ho iniziato a cercare alternative leggere ad Apache. A quel tempo Nginx stava per la versione 0.6 e la sua compatibilità con i siti ad alta richiesta realizzati in PHP non era delle più ottimali, tuttavia oggi dalla versione 0.9 in poi (v1.2.1 disponibile su Debian Stable, v1.4.2 disponibile su ArchLinux) è migliorato molto, al punto che con una corretta configurazione e unione di Nginx + PHP tutto funzionerà a meraviglia.

In questa serie di tutorial Userò Nginx versione 1.2.1-2.2, disponibile nei repository Debian Stable (Wheezy).

PHP5:

PHP, quel linguaggio di programmazione con cui lavorano oggi molti siti (e CMS), è a mio avviso la pecora nera della famiglia. In altre parole, nella mia esperienza personale, siti di grandi dimensioni, con un grande volume di visite, con molte opzioni, funzioni, ecc., Se un tale sito è realizzato in PHP consumerà più risorse di un sito simile realizzato, ad esempio, in RoR. La mia esperienza è stata che gente, PHP è un enorme drago di risorse, PHP + Apache è sufficiente per inghiottire centinaia e centinaia di MB di RAM senza un reale bisogno.

Il motivo per non usare RoR, Django o qualcos'altro è semplicemente questo DesdeLinux (il blog, il nostro fiore all'occhiello) funziona con WordPress, un CMS sviluppato con PHP che ci offre così tante comodità, che semplicemente non pensiamo di cambiarlo a breve o medio termine, sinceramente WordPress, anche quando non è perfetto, ci serve per ciò di cui abbiamo bisogno e forse di più.

Per quanto riguarda PHP, in questi tutorial userò il Versione PHP 5.4.4-14 disponibile su Debian Wheezy (stabile)

Spawn_FastCGI:

Questo si può dire che è ciò che unisce Nginx con PHP, cioè, anche se hanno il pacchetto PHP5 installato se non hanno Spawn_FastCGI installato ed eseguito quando aprono un sito in PHP il browser scaricherà il file, non mostrerà loro nulla che il .php è stato programmato perché il server non sa come processare i file .php, ecco perché è fondamentale installare e configurare Spawn_FastCGI.

Se usassimo Apache sarebbe qualcosa di semplice come installare il pacchetto libapache2-mod-php5 ma dato che usiamo Nginx dovremo invece installare il pacchetto spawn-fcgi. Inoltre, nel tutorial spiegherò come creare uno script iniziale per esso in /etc/init.d/ in modo da poterlo controllare più comodamente.

MySQL:

Questo potrebbe essere il grande punto interrogativo o forse, per alcuni, la nota discordante. Molti che conosco mi faranno la domanda: perché usare MySQL e non MariaDB?

Il problema è semplicemente che in questo momento non ho abbastanza tempo da dedicare a fare una migrazione da MySQL a MariaDB, una migrazione che in teoria dovrebbe essere trasparente per tutti, compatibile al 100% con tutto, ma che è... come Ho detto, in teoria. All'epoca ho iniziato a spostare i servizi DesdeLinux da un VPS all'altro ho dovuto lasciare Apache e utilizzare Nginx, questo comportava diversi file di configurazione, diversi modi di dichiarare VHost, installazione e configurazione da zero del server e dei suoi servizi, in quel momento non potevo aggiungere un altro compito al list, inoltre, a dire il vero, ho cambiato Apache per Nginx perché Apache non soddisfaceva le mie esigenze, tuttavia, MySQL finora soddisfa le mie esigenze al 100%, non vedo motivo per cui dovrei aumentare il mio carico di lavoro modificando qualcosa che stava già funzionando tecnicamente bene per me.

Una volta spiegato perché non ho installato MariaDB, spiego anche che poiché la stragrande maggioranza dei siti web necessita di un database per il loro funzionamento, perché è lì che verranno memorizzate molte informazioni (o quasi tutte). Ci sono alcuni a cui piace Postgre o qualcun altro, in questa serie di tutorial spiegherò come installa MySQL e configura utenti separati per ogni sito.

La La versione di MySQL che userò è la v5.5.31

PCA:

APC è un ottimizzatore per PHP (spiegato molto semplicemente). Ci consente, una volta configurato correttamente, che l'elaborazione PHP funzioni meglio, che le risposte dal server siano più veloci.

Ci sono alternative come memcache tuttavia, ho sempre usato APC e ho avuto risultati molto favorevoli. Consiglio di leggere questo articolo in inglese: Confronto di APC e Memcache come cache dei contenuti locali

Userò nel tutorial la versione di php-apc v3.1.13-1 disponibile anche nei repository Debian Stable.

In sintesi:

Questo modo di installare la configurazione di un web server non è il più ottimale, tutt'altro, ad esempio molti consiglieranno Varnish, che da quanto ho letto fa dei veri miracoli perché tutto o quasi è memorizzato nella cache, ma, nel nostro caso, non ne abbiamo bisogno Il 100% del sito è sempre memorizzato nella cache perché non vogliamo o non dobbiamo andare a quell'estremo. Chiarisco però, come ho detto sopra: "per quanto ho letto", personalmente non ho utilizzato Varnish fino ad oggi, quindi non posso darvi un giudizio oggettivo al 100%.

Questa sarà una serie di tutorial in cui ti mostrerò come installare un server web come quello ospitato in questo momento. DesdeLinux (blog, forum, incolla, ecc.). Il blog conta 30.000 visite al giorno, quasi 200 utenti che accedono contemporaneamente, eppure la RAM consumata non supera i 500 MB, per alcuni potrebbe essere un consumo eccessivo ma… ehi, abbiamo 3 GB di RAM, meno di 500 MB (che includono il servizio FTP , SSH, ecc.) è davvero buono, vero? 🙂

Tutta la 'magia' non è solo fatta da Nginx + Spawn_FastCGI + APC, il nostro sistema di cache del blog è davvero ben configurato e le regole per Nginx sono precise, questo rende il blog anche quando riceve un grande traffico di processo molto meno PHP di quanto al solito, poiché ha già molte cose memorizzate nella cache. Se hai un sito molto richiesto e hai problemi di risorse, ti consiglio senza dubbio di studiare per vedere quale sistema di cache funzionerà meglio per te, quale si adatta meglio alle tue esigenze.

Spero che trovi interessanti questi tutorial, in ognuno di essi cercherò di spiegare tutto in modo completo, dettagliato e il più semplice possibile.

saluti


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Bruno cascio suddetto

    Molto bravo e chiaro! Mi congratulo con te!

    1.    KZKG ^ Gaara suddetto

      Grazie

  2.   Christopher castro suddetto

    Ottimo tutorial.

    Ciò che mi riempie di dubbi è come hanno configurato il server di posta elettronica.

    1.    KZKG ^ Gaara suddetto

      Il MailServer è qualcosa a parte, cioè non ha nulla a che fare con il server web come sai 🙂

      Tuttavia, molto tempo fa ho deciso di non complicarmi con il MailServer, ho scelto di utilizzare iRedMail (supporto per MySQL, LDAP e Postgre) e con le giuste impostazioni e dettagli che aggiungo nei file di configurazione, tutto funziona bene.

  3.   marcisce87 suddetto

    L'articolo mi piace, aspetto la serie di articoli

    1.    KZKG ^ Gaara suddetto

      Grazie, spero di portare il prossimo lunedì o martedì, si occuperà dell'installazione e della configurazione di Nginx.

  4.   aca suddetto

    Molto bene, la configurazione giusta, è difficile trovarla, il compromesso tra i fattori a volte è quasi irrisolvibile, sono passato anche a nginx tempo fa e poi a mariadb (di recente, credo un anno fa).

    // come ho già detto, sarebbe bello se si aumentasse la possibilità di chroot e si usasse proxy_cache_path, anch'esso utile. Anche il confronto del socket (nei casi in cui è possibile) con la porta. e definire bene il numero di bambini / ariete.

    saluti

    1.    KZKG ^ Gaara suddetto

      Grazie per il tuo commento 🙂
      Sì certo, sarebbe molto bello ingabbiare Nginx per tenerlo separato in quanto tale dal resto del sistema, non avevo considerato questa possibilità in questi tutorial, vedrò cosa posso fare. A proposito di proxy_cache_path, non l'ho mai usato, ne leggerò un po 'per vedere come va.

      Per quanto riguarda il numero di thread (min e max), nella configurazione di Nginx è ovviamente definito, nel post di Nginx parlerò molto del file .conf 😉

      Grazie ancora per il tuo commento.

  5.   msx suddetto

    Questo tipo di HowTo è ciò che rende il web davvero potente per gli informatici poiché ci fa risparmiare tonnellate di ore di ricerca e test fino a quando non decidiamo finalmente l'opzione appropriata, grazie mille!

    Una domanda, funziona su Debian? Quale versione del sistema operativo e dei pacchetti?

    Saluti!

    1.    KZKG ^ Gaara suddetto

      Grazie.
      Anzi, di siti che riportano, che ripetono e ripetono le notizie ce ne sono già troppi ... quello che serve sono siti che mettano tutorial, ecco quello che serve al web!

      Sì, Debian Wheezy (attuale Stable), le versioni dei pacchetti sono proprio lì nel post 😉

  6.   eliotime3000 suddetto

    Ottimo commento. Vediamo se faccio una sorta di Errata con ZPanel X e, incidentalmente, eseguo l'installazione manualmente in Debian Wheezy.

  7.   Federico Antonio Valdes Toujague suddetto

    Vai avanti KZKG ^ Gaara !!!, that The Best Criterion of Truth is Practice, and you have experience about what you write. Un sito web professionale e funzionante. Major League Baseball, amico.

    1.    eliotime3000 suddetto

      È vero. Inoltre, quando ho iniziato a giocare con i server web che ho installato in Windows, la verità è che Apache aumenta in termini di consumo di risorse se usi WordPress (in Drupal consumava metà delle risorse).

  8.   carrozza suddetto

    Penso che per la parte Nginx questo tutorial tornerà utile. Ora voglio installare un server con Nginx, php, Varnish e MariaDB. Ma ovviamente devi iniziare, e la pigrizia può fare molto quando si tratta di combattere con i server e al momento sono contento della tipica lampada e memcache che ho xDD.

    Saluti.

  9.   auroszx suddetto

    Fantastico, solo uno di questi tornerebbe utile 🙂 Un altro non vede l'ora.

  10.   Ivan Gabriel Sosa suddetto

    Ti seguiamo. Attualmente stiamo iniziando nel mondo dei server web. Ne abbiamo acquistati due da Hostinger e un amico ci ha aiutato a configurarlo da zero (PHP, MySQL, Apache). È l'unica combinazione utilizzata in Linux, una piattaforma su cui utilizzo da gennaio.
    Ma ero molto interessato a questo argomento. Saluti!

  11.   Jose Manuel suddetto

    Non ho mai installato un web server ma se voglio farlo, una domanda, il livello necessario per capire i tutorial e fare l'installazione sarà alto o con conoscenze di base potrei provarlo? Grazie in anticipo.

    1.    eliotime3000 suddetto

      La verità è che non richiede molta conoscenza per essere in grado di gestire un server di database. Uno che ha già provato quell'esperienza te lo dice.

  12.   Mauritius suddetto

    Ciao, quello che farai con questa serie di post è molto buono.

    Recentemente ho installato Nginx + Php Fastcgi + Mariadb. Nginx.

    Tutto questo l'ho fatto in Archlinux, perché quella distribuzione è l'unica dal mio punto di vista, che non porta tante chicche come le altre. L'ho messo in un ambiente in gabbia e mi ha dato un sacco di disagi per averlo funzionato perfettamente.

    Ora funziona perfettamente. Anche se mi interessa conoscere le tue opinioni, su quella dei figli e dei processi paterni, più consigli mi dai, meglio è.

    Tutto questo è solo per fare pratica.
    L'apparecchiatura ha 4 GB di RAM DDR2 e un processore Core 2duo da 2.4 Ghz.

    Saluti e attendo con ansia i prossimi post di questa serie.

  13.   muscolo suddetto

    200 utenti connessi contemporaneamente?
    Solo in determinati momenti della giornata, giusto? Perché altrimenti supererebbe quelle 30.000 visite giornaliere.

    1.    KZKG ^ Gaara suddetto

      Sì, certo, non ci sono sempre 200 persone online, in questo momento sono quasi 40 perché è ancora presto, in poche ore supereranno i 100.

  14.   cacciatore suddetto

    Solo per divertimento sono passato da lighty a nginx sulla mia workstation (Symfony2 in questo momento), ho preso la configurazione da qui [1], molto semplice.

    , http://ihaveabackup.net/2012/11/17/nginx-configuration-for-symfony2

  15.   Apr4xas suddetto

    Aspettando la continuazione di questo 😀

    1.    KZKG ^ Gaara suddetto

      Questa settimana devo pubblicarlo, grazie per averci letto 🙂

      1.    Salute suddetto

        e? manca molto?

  16.   DEAN STEWART suddetto

    Buon post ...

  17.   NOEL IVAN suddetto

    BUONASERA.
    A CAUSA DELLE SPECIFICHE DI UN PROGETTO SCOLASTICO, MI CONSENTONO DI INSTALLARE NGINX IN OPENBSD 5.4 IN ORACLE MV VIRTUALBOX PER POTER USARE PHP, MYSQL, TRA GLI ALTRI, NADAMAS CHE NON SONO STATI IN GRADO DI TROVARE INFORMAZIONI SU QUANTO SOPRA DETTO, CREDENDO CHE SIA PROBLEMA.