Hoe een webserver te installeren met Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1e deel: presentatie]

Nog niet zo lang geleden noemden we dat nu DesdeLinux (al zijn diensten) werken in GNUTransfer.com-servers. De blog is veel verbeterd in termen van snelheid, vloeibaarheid, zelfs als we gaan van (nadat UsemosLinux is samengevoegd) meer dan 30.000 bezoeken per dag (bijna 200 gebruikers tegelijkertijd verbonden). Hoe bereik je goede prestaties op de server, zelfs met deze hoeveelheid verkeer?

Momenteel heeft Justice (VPS waar de blog en een andere service zijn) 3GB RAM, maar er wordt minder dan 500MB verbruikt, dit is mogelijk met de juiste keuze van de te gebruiken software en een adequate configuratie ervan. Apache is bijvoorbeeld ongetwijfeld een grote ter wereld, de nummer 1 als het gaat om hosting, maar juist daarom is Apache niet altijd de beste optie. Wanneer het verkeer hoog is en de serverhardware niet echt groot is (bijv. 8 of 16GB RAM) kan Apache teveel RAM verbruiken waardoor het op bepaalde momenten te lang duurt voordat de server reageert, of erger nog, dat onze site offline is. Onvoldoende middelen. Dit is waarom velen van ons Nginx verkiezen boven Apache.

Nginx:

We hebben je eerder in het artikel al over Nginx verteld Nginx: een interessant alternatief voor Apache, daar vertelden we je dat het een webserver is zoals Apache, LightHttpd of Cherokee, maar vergeleken met Apache valt het op door zijn prestaties en lage hardwareverbruik, precies waarom veel grote sites zoals Facebook, MyOpera.com, DropBox of zelfs WordPress .com gebruikt Nginx in plaats van Apache. In de wereld van Linux DesdeLinux Het is niet de enige die Nginx gebruikt, voor zover ik weet gebruiken emsLinux en MuyLinux het ook :)

Mijn persoonlijke ervaring met Nginx dateert van een aantal jaren, toen ik uit noodzaak op zoek ging naar lichtgewicht alternatieven voor Apache. Op dat moment ging Nginx voor versie 0.6 en de compatibiliteit met veelgevraagde sites gemaakt in PHP was niet de meest optimale, maar vandaag vanaf versie 0.9 (v1.2.1 beschikbaar op Debian Stable, v1.4.2 beschikbaar op ArchLinux) is veel verbeterd, tot het punt dat met een juiste configuratie en koppeling van Nginx + PHP alles als een zonnetje zal werken.

In deze tutorialserie Ik zal Nginx-versie 1.2.1-2.2 gebruiken, beschikbaar in de Debian Stable-opslagplaatsen (Wheezy).

PHP5:

PHP, die programmeertaal waar veel van de sites (en CMS) tegenwoordig mee werken, is naar mijn mening het zwarte schaap van de familie. Met andere woorden, in mijn persoonlijke ervaring, grote sites, met een groot aantal bezoeken, met veel opties, functies, enz., Als een dergelijke site in PHP wordt gemaakt, zal het meer bronnen verbruiken dan een vergelijkbare site, bijvoorbeeld in RoR. Mijn ervaring is dat mensen, PHP een enorme resource-draak is, PHP + Apache is genoeg om honderden en honderden MB RAM te slikken zonder echt nodig te hebben.

De reden om RoR, Django of iets anders niet te gebruiken is simpelweg dat DesdeLinux (de blog, ons vlaggenschip) werkt met WordPress, een CMS ontwikkeld met PHP dat ons zoveel comfort biedt, dat we simpelweg niet van plan zijn om het op korte of middellange termijn te veranderen, eerlijk gezegd, WordPress, zelfs als het niet perfect is, dient ons voor wat we nodig hebben en misschien nog wel meer.

Wat betreft PHP, in deze tutorials zal ik de PHP-versie 5.4.4-14 beschikbaar op Debian Wheezy (stabiel)

Spawn_FastCGI:

Dit kan gezegd worden dat Nginx verenigt met PHP, dat wil zeggen, zelfs als ze het PHP5-pakket hebben geïnstalleerd als ze Spawn_FastCGI niet hebben geïnstalleerd en uitgevoerd wanneer ze een site in PHP openen, zal de browser het bestand downloaden, het zal niet worden weergegeven ze alles dat de .php is geprogrammeerd omdat de server niet weet hoe .php-bestanden moeten worden verwerkt, daarom is het essentieel om Spawn_FastCGI te installeren en te configureren.

Als we Apache zouden gebruiken, zou het zoiets eenvoudigs zijn als het installeren van het libapache2-mod-php5-pakket, maar aangezien we Nginx gebruiken, zullen we in plaats daarvan het spawn-fcgi-pakket moeten installeren. In de tutorial zal ik ook uitleggen hoe je er een eerste script voor kunt maken in /etc/init.d/, zodat je het comfortabeler kunt bedienen.

MySQL:

Dit zou het grote vraagteken kunnen zijn of misschien, voor sommigen, de dissonant. Velen die ik ken, zullen me de vraag stellen: waarom MySQL gebruiken en niet MariaDB?

Het probleem is simpelweg dat ik op dit moment niet genoeg tijd heb om een ​​migratie uit te voeren van MySQL naar MariaDB, een migratie die in theorie voor iedereen transparant zou moeten zijn, 100% compatibel met alles, maar dat is... zoals Ik zei, in theorie. Ik ben destijds begonnen met het verhuizen van diensten DesdeLinux van de ene VPS naar de andere moest ik Apache achterlaten en Nginx gebruiken, dit bracht verschillende configuratiebestanden met zich mee, verschillende manieren om VHosts te declareren, installatie en configuratie vanaf het begin van de server en zijn services, op dat moment kon ik geen andere taak toevoegen aan de lijst, ook en om eerlijk te zijn, ik heb Apache voor Nginx veranderd omdat Apache niet aan mijn behoeften voldeed, maar MySQL voldoet tot nu toe 100% aan mijn behoeften, ik zie geen reden voor mij om mijn werklast te verhogen door iets te veranderen dat het al werkte technisch goed voor mij.

Eenmaal uitgelegd waarom ik MariaDB niet heb geïnstalleerd, leg dan ook uit dat, aangezien de overgrote meerderheid van websites een database nodig heeft voor hun werking, omdat daar veel informatie (of bijna alle) wordt opgeslagen. Er zijn er die Postgre leuk vinden of iemand anders, in deze reeks tutorials zal ik uitleggen hoe installeer MySQL en configureer afzonderlijke gebruikers voor elke site.

La MySQL-versie die ik ga gebruiken is v5.5.31

APC's:

APC is een optimalisatieprogramma voor PHP (heel eenvoudig uitgelegd). Het stelt ons eenmaal goed geconfigureerd in staat dat de PHP-verwerking beter werkt, dat de reacties van de server sneller zijn.

Er zijn alternatieven zoals memcache, maar ik heb altijd APC gebruikt en heb zeer gunstige resultaten gehad. Ik raad aan dit artikel in het Engels te lezen: APC en Memcache vergelijken als lokale inhoudscache

Ik zal in de tutorial de versie van php-apc v3.1.13-1 ook beschikbaar in de Debian Stable-opslagplaatsen.

Samenvattend:

Deze manier om een ​​webserverconfiguratie te installeren is niet de meest optimale, verre van, velen zullen bijvoorbeeld Varnish aanbevelen, wat, van wat ik heb gelezen, echte wonderen doet omdat alles of bijna alles in de cache is opgeslagen, maar in ons geval doen we dat niet moeten 100% van de site altijd in de cache worden opgeslagen, omdat we niet tot dat uiterste willen of moeten gaan. Ik verduidelijk echter, zoals ik hierboven zei: "voor zover ik heb gelezen", heb ik persoonlijk tot op heden geen Varnish gebruikt, dus ik kan u geen 100% objectieve mening geven.

Dit zal een reeks tutorials zijn waarin ik je laat zien hoe je een webserver installeert zoals degene die momenteel wordt gehost. DesdeLinux (blog, forum, plakken, enz.). De blog wordt elke dag 30.000 keer bezocht, bijna 200 gebruikers hebben er tegelijkertijd toegang toe, en toch is het RAM-geheugen niet groter dan 500 MB. Voor sommigen kan dit buitensporig verbruik zijn, maar... hey, we hebben 3 GB RAM, minder dan 500 MB (inclusief FTP-service, SSH, etc.) is echt goed toch? 🙂

Alle 'magie' wordt niet alleen gedaan door Nginx + Spawn_FastCGI + APC, ons blog caching-systeem is echt goed geconfigureerd en de regels voor Nginx zijn nauwkeurig, dit maakt dat de blog, zelfs wanneer deze veel verkeer ontvangt, veel minder PHP verwerkt dan wat gebruikelijk, omdat er al veel in de cache is opgeslagen. Als je een veelgevraagde site hebt en bronproblemen hebt, raad ik je zonder twijfel aan om te bestuderen welk cachesysteem het beste voor je werkt, welk cachesysteem het beste bij je past.

Ik hoop dat je deze tutorials interessant vindt, in elk van hen zal ik proberen alles op een uitgebreide, gedetailleerde en zo eenvoudig mogelijke manier uit te leggen.

groeten


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Bruno cascio zei

    Heel goed en duidelijk! Ik feliciteer jou!

    1.    KZKG ^ Gaara zei

      Bedankt

  2.   Christoffel Castro zei

    Zeer goede tutorial.

    Wat me twijfelt, is hoe ze de e-mailserver hebben geconfigureerd.

    1.    KZKG ^ Gaara zei

      De mailserver is iets aparts, dat wil zeggen, het heeft niets te maken met de webserver zoals u weet 🙂

      Echter, lang geleden besloot ik mezelf niet ingewikkeld te maken met MailServer, ik koos ervoor om iRedMail te gebruiken (ondersteuning voor MySQL, LDAP en Postgre) en met de juiste instellingen en details die ik toevoeg in de configuratiebestanden, werkt alles prima.

  3.   rot87 zei

    Ik vind het artikel leuk, ik wacht op de reeks artikelen

    1.    KZKG ^ Gaara zei

      Bedankt, ik hoop de volgende maandag of dinsdag te brengen, deze zal de installatie en configuratie van Nginx behandelen.

  4.   aca zei

    Heel goed, de juiste configuratie, het is moeilijk om het te vinden, het compromis tussen de factoren is soms bijna onoplosbaar, ik ging ook een tijdje geleden naar nginx en later naar mariadb (recent denk ik een jaar geleden).

    // zoals ik al zei, het zou leuk zijn als je de mogelijkheid van chroot verhoogt, en het proxy_cache_path gebruikt, wat ook handig is. Ook de vergelijking van het stopcontact (in de gevallen dat het kan) met de poort. en definieer goed het aantal kinderen / ram.

    groeten

    1.    KZKG ^ Gaara zei

      Bedankt voor je reactie 🙂
      Ja natuurlijk, het zou heel leuk zijn om Nginx te kooien om het als zodanig gescheiden te houden van de rest van het systeem, ik had die mogelijkheid niet overwogen in deze tutorials, ik zal zien wat ik kan doen. Over het proxy_cache_path, ik heb het nog nooit gebruikt, ik zal er wat over lezen om te zien hoe het gaat.

      Wat betreft het aantal threads (min & max), in de Nginx-configuratie is het duidelijk gedefinieerd, in het Nginx-bericht zal ik veel praten over het .conf-bestand 😉

      Nogmaals bedankt voor je reactie.

  5.   msx zei

    Dit soort HowTo's maakt het web echt krachtig voor computerwetenschappers, omdat het ons tonnen uren aan onderzoek en testen bespaart totdat we uiteindelijk beslissen over de juiste optie, heel erg bedankt!

    Een vraag, draait dit op Debian? Welke versie van OS en pakketten?

    Groeten!

    1.    KZKG ^ Gaara zei

      Dank u.
      Inderdaad, sites die rapporteren, die het nieuws herhalen en herhalen zijn er al te veel ... wat nodig is, zijn sites die tutorials plaatsen, dat is wat het web nodig heeft!

      Ja, Debian Wheezy (huidige Stable), de versies van de pakketten staan ​​direct in de post 😉

  6.   eliotime3000 zei

    Uitstekende opmerking. Eens kijken of ik een soort Errata doe met ZPanel X, en incidenteel de installatie handmatig in Debian Wheezy doe.

  7.   Federico Antonio Valdes Toujague zei

    Ga je gang KZKG ^ Gaara !!!, dat het beste criterium van waarheid de praktijk is, en je hebt ervaring met wat je schrijft. Een professionele en werkende website. Major League Baseball, Dude.

    1.    eliotime3000 zei

      Dat is waar. Toen ik begon te spelen met de webservers die ik in Windows heb geïnstalleerd, is de waarheid dat Apache schiet in termen van resourceverbruik als je WordPress gebruikt (in Drupal verbruikt het de helft van de bronnen).

  8.   vervoer zei

    Ik denk dat deze tutorial voor het Nginx-gedeelte van pas zal komen. Nu wil ik een server installeren met Nginx, php, Varnish en MariaDB. Maar je moet natuurlijk beginnen, en luiheid kan veel doen als het gaat om vechten met servers en op dit moment ben ik blij met de typische lamp en geheugencache die ik heb xDD.

    Een groet.

  9.   auroszx zei

    Geweldig, slechts één hiervan zou van pas komen 🙂 Een ander kijkt er naar uit.

  10.   Ivan Gabriel Sosa zei

    We volgen je. We beginnen momenteel in de wereld van webservers. We kochten er twee van Hostinger, en een vriend hielp ons om het helemaal opnieuw te configureren (PHP, MySQL, Apache). Het is de enige combinatie die wordt gebruikt in Linux, een platform waarop ik sinds januari zit.
    Maar ik was erg geïnteresseerd in dit onderwerp. Proost!

  11.   Jose Manuel zei

    Ik heb nog nooit een webserver geïnstalleerd, maar als ik het wil doen, een vraag, zal het niveau dat nodig is om de tutorials te begrijpen en moet de installatie hoog zijn of kan ik het met basiskennis proberen? Bij voorbaat bedankt.

    1.    eliotime3000 zei

      De waarheid is dat er niet veel kennis voor nodig is om met een databaseserver om te gaan. Iemand die die ervaring al heeft geprobeerd, vertelt het je.

  12.   Mauricio zei

    Hallo, het is heel goed wat je gaat doen met deze reeks berichten.

    Ik heb onlangs Nginx + Php Fastcgi + Mariadb geïnstalleerd. Nginx.

    Dit alles deed ik in Archlinux, omdat die distributie vanuit mijn standpunt de enige is die niet zoveel lekkers oplevert als de andere. Ik heb het in een gekooide omgeving gestopt en het gaf me veel ongemak om het perfect te laten werken.

    Nu werkt het perfect. Hoewel ik benieuwd ben naar uw mening, over die van de kinderen en vaderprocessen, hoe meer tips u mij geeft, hoe beter.

    Dit alles is alleen om te oefenen.
    De apparatuur heeft 4GB DDR2-werkgeheugen en een 2Ghz Core 2.4duo-processor.

    Groeten en ik kijk uit naar de aankomende berichten van deze serie.

  13.   kas zei

    200 gebruikers tegelijkertijd verbonden?
    Alleen op bepaalde momenten van de dag, toch? Omdat het anders die 30.000 dagelijkse bezoeken zou overschrijden.

    1.    KZKG ^ Gaara zei

      Ja natuurlijk, er zijn niet altijd 200 mensen online, op dit moment zijn er bijna 40 omdat het nog vroeg is, binnen een paar uur zullen ze de 100 overschrijden.

  14.   djager zei

    Voor de lol ben ik net overgeschakeld van lighty naar nginx op mijn werkstation (nu Symfony2), ik nam de conf vanaf hier [1], heel simpel.

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

  15.   Apr4xas zei

    Wachten op het vervolg hiervan 😀

    1.    KZKG ^ Gaara zei

      Deze week moet ik het publiceren, bedankt voor het lezen 🙂

      1.    gezondheid zei

        en? mist er veel?

  16.   Dean zei

    Goed bericht ...

  17.   NOEL IVAN zei

    GOEDENAVOND.
    WEGENS SPECIFICATIES VAN EEN SCHOOLPROJECT, LATEN ZE ME NGINX INSTALLEREN IN OPENBSD 5.4 IN ORACLE MV VIRTUALBOX OM PHP, MYSQL, ONDER ANDEREN, NADAMAS TE KUNNEN VINDEN DAT IK GEEN INFORMATIE KAN VINDEN OVER HET BOVENGENOEMDE, GELOVEN DAT HET BOVENSTAANDE IS.