Hur man installerar en webbserver med Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [första delen: presentation]

För inte länge sedan nämnde vi det nu DesdeLinux (alla dess tjänster) arbetar i GNUTransfer.com-servrar. Bloggen har förbättrats mycket när det gäller hastighet, flytande, även när vi går från att ha (efter UsemosLinux sammanfogning) mer än 30.000 200 besök varje dag (nästan XNUMX användare anslutna samtidigt). Hur uppnår jag god serverprestanda även med denna trafikvolym?

Just nu har Justice (VPS där bloggen och någon annan tjänst finns) 3 GB RAM, men mindre än 500 MB förbrukas, detta är möjligt med rätt val av programvara att använda och en adekvat konfiguration av dem. Till exempel är Apache utan tvekan en stor i världen, nr 1 när det gäller värd, men just därför är Apache inte alltid det bästa alternativet. När trafiken är hög och serverhårdvaran inte är riktigt stor (Ex: 8 eller 16 GB RAM) kan Apache mycket väl konsumera för mycket RAM vilket gör att servern vid vissa tillfällen tar för lång tid att svara, eller ännu värre, att vår webbplats är offline för otillräckliga resurser. Det är därför många av oss väljer Nginx framför Apache.

Nginx:

Vi berättade redan om Nginx tidigare i artikeln Nginx: Ett intressant alternativ till Apache, där berättade vi att det är en webbserver som Apache, LightHttpd eller Cherokee, men jämfört med Apache sticker den ut för sin prestanda och låga hårdvaruförbrukning, just därför är det många stora sajter som Facebook, MyOpera.com, DropBox eller till och med WordPress .com använder Nginx istället för Apache. I Linux-världen DesdeLinux Det är inte den enda som använder Nginx, så vitt jag vet använder emsLinux och MuyLinux det också :)

Min personliga erfarenhet av Nginx går tillbaka flera år, då jag av nöd började leta efter lätta alternativ till Apache. Vid den tiden gick Nginx för version 0.6 och dess kompatibilitet med webbplatser med hög efterfrågan i PHP var inte den mest optimala, men idag från version 0.9 och framåt (v1.2.1 tillgänglig på Debian Stable, v1.4.2 tillgänglig på ArchLinux) har förbättrats mycket, så att med en korrekt konfiguration och förening av Nginx + PHP kommer allt att fungera som en charm.

I denna handledningsserie Jag kommer att använda Nginx version 1.2.1-2.2, tillgänglig i Debian Stable repos (Wheezy).

PHP5:

PHP, det programmeringsspråk som många av webbplatserna (och CMS) arbetar med idag, är enligt min åsikt familjens svarta får. Det vill säga, enligt min personliga erfarenhet, stora webbplatser, med en stor mängd besök, med många alternativ, funktioner etc., om en sådan webbplats är gjord i PHP kommer den att konsumera mer resurser än en liknande webbplats som görs, till exempel i RoR. Min erfarenhet har varit att folk, PHP är en enorm resursdrake, PHP + Apache räcker för att svälja hundratals och hundratals MB RAM utan ett verkligt behov.

Anledningen till att inte använda RoR, Django eller något annat är helt enkelt det DesdeLinux (bloggen, vårt flaggskepp) fungerar med WordPress, ett CMS utvecklat med PHP som erbjuder oss så många bekvämligheter att vi helt enkelt inte planerar att ändra det på kort eller medellång sikt, ärligt talat, WordPress, även när det inte är perfekt, tjänar oss för det vi behöver och kanske mer.

När det gäller PHP, i dessa handledning kommer jag att använda PHP version 5.4.4-14 tillgänglig på Debian Wheezy (Stable)

Spawn_FastCGI:

Detta kan sägas vara det som förenar Nginx med PHP, det vill säga även om de har PHP5-paketet installerat om de inte har Spawn_FastCGI installerat och kört när de öppnar en webbplats i PHP kommer webbläsaren att ladda ner filen, det kommer inte att visa dem något som .php har programmerats eftersom servern inte vet hur man hanterar .php-filer, varför det är viktigt att installera och konfigurera Spawn_FastCGI.

Om vi ​​använde Apache skulle det vara något så enkelt som att installera paketet libapache2-mod-php5 men eftersom vi använder Nginx måste vi istället installera paketet spawn-fcgi. I handledningen kommer jag också att förklara hur man skapar ett initialt skript för det i /etc/init.d/ så att du kan styra det bekvämare.

MySQL:

Detta kan vara det stora frågetecknet eller kanske, för vissa, den motsägelsefulla anteckningen. Många jag känner kommer att ställa mig frågan: varför använda MySQL och inte MariaDB?

Problemet är helt enkelt att jag inte har tillräckligt med tid att ägna mig åt att göra en migrering just nu från MySQL till MariaDB, en migrering som i teorin borde vara transparent för alla, 100% kompatibel med allt, men det är... som Sa jag i teorin. På den tiden började jag flytta tjänster DesdeLinux från en VPS till en annan var jag tvungen att lämna Apache bakom mig och använda Nginx, detta involverade olika konfigurationsfiler, olika sätt att deklarera VHosts, installation och konfiguration från början av servern och dess tjänster, vid den tiden kunde jag inte lägga till en annan uppgift till listan, också och för att vara ärlig, jag bytte Apache mot Nginx eftersom Apache inte tillfredsställde mina behov, men MySQL uppfyller mina behov till 100% än så länge, jag ser ingen anledning för mig att öka min arbetsbelastning genom att ändra något som det redan fungerade tekniskt bra för mig.

När jag en gång förklarat varför jag inte installerade MariaDB, förklar också att eftersom de allra flesta webbplatser behöver en databas för att fungera, eftersom det är där mycket information (eller nästan hela) den kommer att lagras. Det finns några som gillar Postgre eller någon annan, i den här handledningsserien kommer jag att förklara hur installera MySQL och konfigurera separata användare för varje webbplats.

La MySQL-versionen som jag kommer att använda är v5.5.31

APC:er:

APC är en optimizer för PHP (förklaras mycket enkelt). Det tillåter oss en gång korrekt konfigurerad att PHP-bearbetningen fungerar bättre, att svaren från servern är snabbare.

Det finns alternativ som memcache men jag har alltid använt APC och har haft mycket gynnsamma resultat. Jag rekommenderar att du läser den här artikeln på engelska: Jämför APC och Memcache som cache för lokalt innehåll

Jag kommer att använda i handboken versionen av php-apc v3.1.13-1 finns även i Debian Stable repos.

Sammanfattning:

Det här sättet att installera en webbserverkonfiguration är inte det mest optimala, långt ifrån det, till exempel kommer många att rekommendera Varnish, som från vad jag har läst fungerar sanna mirakel eftersom allt eller nästan allt är cachat, men i vårt fall gör vi inte behöver att 100% av webbplatsen alltid cachas eftersom vi inte vill eller behöver gå till det yttersta. Jag klargör emellertid, som jag sa ovan: "såvitt jag har läst", har jag personligen inte använt Lack förrän idag, så jag kan inte ge dig en 100% objektiv åsikt.

Detta kommer att vara en serie tutorials där jag kommer att visa dig hur du installerar en webbserver som den som är värd för denna minut. DesdeLinux (blogg, forum, klistra in, etc). Bloggen har 30.000 200 besök varje dag, nästan 500 användare kommer åt den samtidigt, och ändå överstiger inte RAM-minnet 3 MB förbrukat, för vissa kan detta vara överdriven konsumtion men... hej, vi har 500 GB RAM, mindre än XNUMX MB (vilket inkluderar FTP-tjänst, SSH, etc.) är riktigt bra eller hur? 🙂

All 'magi' görs inte bara av Nginx + Spawn_FastCGI + APC, vårt bloggcache-system är riktigt väl konfigurerat och reglerna för Nginx är exakta, det gör bloggen även när den får mycket trafikprocess mycket mindre PHP än vad vanligt, eftersom det redan har cachat mycket. Om du har en webbplats med hög efterfrågan och har resursproblem rekommenderar jag starkt att du studerar för att se vilket cachesystem som fungerar bäst för dig, vilket som passar bäst för dina behov.

Jag hoppas att du tycker att dessa tutorials är intressanta, i var och en av dem kommer jag att försöka förklara allt på ett heltäckande, detaljerat och så enkelt sätt som möjligt.

hälsningar


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Bruno cascio sade

    Mycket bra och tydligt! Jag gratulerar dig!

    1.    KZKG ^ Gaara sade

      Tack

  2.   Christopher castro sade

    Mycket bra handledning.

    Vad som fyller mig med tvivel är hur de konfigurerade e-postservern.

    1.    KZKG ^ Gaara sade

      MailServer är något ifrån varandra, det vill säga det har ingenting att göra med webbservern som du vet 🙂

      Men för länge sedan bestämde jag mig för att inte komplicera mig med MailServer, jag valde att använda iRedMail (stöd för MySQL, LDAP och Postgre) och med rätt inställningar och detaljer som jag lägger till i konfigurationsfilerna fungerar allt bra.

  3.   Rötter87 sade

    Jag gillar artikeln, jag väntar på artikelserien

    1.    KZKG ^ Gaara sade

      Tack, jag hoppas kunna ta med nästa på måndag eller tisdag, det kommer att hantera Nginx installation och konfiguration.

  4.   aca sade

    Mycket bra, rätt konfiguration, det är svårt att hitta den, kompromissen mellan faktorerna är ibland nästan olöslig, jag gick också till nginx för ett tag sedan och senare till mariadb (nyligen tror jag för ett år sedan).

    // Som jag nämnde skulle det vara bra om du tog upp möjligheten till chroot och använder proxy_cache_path som också är användbart. Även jämförelse av uttaget (i de fall det är möjligt) mot porten. och definiera väl antalet barn / ram.

    hälsningar

    1.    KZKG ^ Gaara sade

      Tack för din kommentar 🙂
      Ja naturligtvis, det skulle vara väldigt trevligt att bura Nginx för att hålla den separat som sådan från resten av systemet, jag hade inte övervägt den möjligheten i dessa självstudier, jag får se vad jag kan göra. Om proxy_cache_path har jag aldrig använt det, jag läser lite om det för att se hur det går.

      När det gäller antalet trådar (min & max), i Nginx-konfigurationen är det uppenbarligen definierat, i Nginx-inlägget kommer jag att prata mycket om .conf-filen 😉

      Återigen, tack för din kommentar.

  5.   MSX sade

    Denna typ av HowTos är det som gör webben riktigt kraftfull för datavetare eftersom det sparar oss massor av timmar med forskning och testning tills vi äntligen bestämmer oss för lämpligt alternativ, tack så mycket!

    En fråga, körs detta på Debian? Vilken version av OS och paket?

    Hälsningar!

    1.    KZKG ^ Gaara sade

      Tack.
      Faktum är att webbplatser som rapporterar, som upprepar och upprepar nyheterna redan är för många ... vad som behövs är webbplatser som lägger in handledning, det är vad nätet behöver!

      Ja, Debian Wheezy (nuvarande stabil), versionerna av paketen finns precis i inlägget 😉

  6.   eliotime3000 sade

    Utmärkt kommentar. Låt oss se om jag gör ett slags fel med ZPanel X och för övrigt gör installationen manuellt i Debian Wheezy.

  7.   Federico Antonio Valdes Toujague sade

    Fortsätt KZKG ^ Gaara !!!, att The Best Criterion of Sanning is Practice, och du har erfarenhet av vad du skriver. En professionell och fungerande webbplats. Major League Baseball, Dude.

    1.    eliotime3000 sade

      Det är sant. När jag började spela med webbservrarna som jag installerade i Windows är sanningen också att Apache skjuter upp när det gäller resursförbrukning om du använder WordPress (i Drupal förbrukade det hälften av resurserna).

  8.   transport sade

    Jag tror att den här guiden kommer att vara till nytta för Nginx-delen. Nu vill jag installera en server med Nginx, php, Varnish och MariaDB. Men naturligtvis måste du börja, och latskap kan göra mycket när det gäller att slåss med servrar och just nu är jag nöjd med den typiska lampan och memcache som jag har xDD.

    En hälsning.

  9.   auroszx sade

    Bra, bara en av dessa skulle komma till nytta 🙂 En annan ser fram emot det.

  10.   Ivan Gabriel Sosa sade

    Vi följer dig. Vi börjar för närvarande i världen av webbservrar. Vi köpte två från Hostinger och en vän hjälpte oss att konfigurera den från grunden (PHP, MySQL, Apache). Det är den enda kombinationen som används i Linux, en plattform som jag har varit på sedan januari.
    Men jag var väldigt intresserad av det här ämnet. Skål!

  11.   Jose Manuel sade

    Jag har aldrig installerat en webbserver men om jag vill göra det, en fråga, kommer den nivå som krävs för att förstå handledningarna och är installationen hög eller med grundläggande kunskaper kan jag prova det? Tack på förhand.

    1.    eliotime3000 sade

      Sanningen är att det inte kräver mycket kunskap för att kunna hantera en databasserver. Den som redan har provat den upplevelsen berättar.

  12.   Mauricio sade

    Hej, vad du ska göra med den här inläggsserien är mycket bra.

    Jag installerade nyligen Nginx + Php Fastcgi + Mariadb. Nginx.

    Allt detta gjorde jag i Archlinux, för den distributionen är den enda ur min synvinkel, som inte ger så mycket godsaker som de andra. Jag lade det i en burmiljö och det gav mig mycket besvär att få det att fungera perfekt.

    Nu fungerar det perfekt. Även om jag är intresserad av att veta dina åsikter om barnens och pappas processer, desto fler tips de ger mig, desto bättre.

    Allt detta är bara för träning.
    Utrustningen har 4 GB DDR2-ram och en 2 GHz Core 2.4duo-processor.

    Hälsningar och jag ser fram emot de kommande inläggen i denna serie.

  13.   muskel sade

    200 användare anslutna samtidigt?
    Bara vid vissa tider på dagen, eller hur? För annars skulle det överstiga de 30.000 XNUMX dagliga besöken.

    1.    KZKG ^ Gaara sade

      Ja naturligtvis, det är inte alltid 200 personer online, just nu är det nästan 40 eftersom det fortfarande är tidigt, om några timmar kommer de att överstiga 100.

  14.   djägare sade

    Bara för skojs skull bytte jag bara från lighty till nginx på min arbetsstation (Symfony2 just nu), jag tog konfekten härifrån [1], väldigt enkelt.

    [1] http://ihaveabackup.net/2012/11/17/nginx-configuration-for-symfony2

  15.   Apr4xas sade

    Väntar på fortsättningen av detta 😀

    1.    KZKG ^ Gaara sade

      Den här veckan måste jag publicera den, tack för att du läser oss 🙂

      1.    Salud sade

        och? mycket saknas?

  16.   Dean sade

    Bra inlägg ...

  17.   NOEL IVAN sade

    GOD KVÄLL.
    PÅ SPECIFIKATIONER AV ETT SKOLPROJEKT LÅTER DE INSTALLERA NGINX I OPENBSD 5.4 I ORACLE MV VIRTUALBOX FÖR ATT KAN ANVÄNDA PHP, MYSQL, MELLAN ANDRA, NADAMAS AT JAG HAR INTE KAN FÖR ATT HITTA INFORMATION FÖR DETTA SÄTT, HAR PROBLEMERAT Ovan.