Slik installerer du en webserver med Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1. del: Presentasjon]

For ikke lenge siden nevnte vi at nå kjører DesdeLinux (alle tjenestene) GNUTransfer.com-servere. Bloggen har forbedret seg mye når det gjelder hastighet, flyt, selv når vi går fra å ha (etter UsemosLinux fusjon) mer enn 30.000 200 besøk hver dag (nesten XNUMX brukere er tilkoblet samtidig). Hvordan oppnå god serverytelse selv med dette trafikkvolumet?

For øyeblikket har Justice (VPS der bloggen og noen andre tjenester er) 3 GB RAM, men mindre enn 500 MB blir brukt, dette er mulig med riktig valg av programvare å bruke og en tilstrekkelig konfigurasjon av dem. For eksempel er Apache utvilsomt en stor i verden, nr. 1 når det gjelder hosting, men nettopp av den grunn er ikke Apache alltid det beste alternativet. Når trafikken er høy og servermaskinvaren ikke er veldig stor (Eks: 8 eller 16 GB RAM), kan Apache godt forbruke for mye RAM, noe som gjør at serveren til bestemte tider tar for lang tid å svare, eller verre, at nettstedet vårt er frakoblet for utilstrekkelige ressurser. Det er derfor mange av oss velger Nginx fremfor Apache.

Nginx:

Vi har allerede fortalt deg om Nginx tidligere i artikkelen Nginx: Et interessant alternativ til ApacheHer forteller vi deg at det er en webserver som Apache, LightHttpd eller Cherokee, men at den i forhold til Apache skiller seg ut for sin ytelse og lave maskinvareforbruk, nettopp av den grunn mange store nettsteder som Facebook, MyOpera.com, DropBox eller selv WordPress .com bruker Nginx i stedet for Apache. I en verden av Linux Siden Linux ikke er den eneste som bruker Nginx, så vidt jeg vet bruker emsLinux og MuyLinux det også 🙂

Min personlige erfaring med Nginx stammer fra flere år, da jeg av nødvendighet begynte å lete etter lette alternativer til Apache. På den tiden gikk Nginx for versjon 0.6, og dens kompatibilitet med nettsteder med høy etterspørsel laget i PHP var ikke den mest optimale, men i dag fra versjon 0.9 og utover (v1.2.1 tilgjengelig på Debian Stable, v1.4.2 tilgjengelig på ArchLinux) har forbedret seg mye, til det punktet at med en riktig konfigurasjon og forening av Nginx + PHP vil alt fungere som en sjarm.

I denne opplæringsserien Jeg vil bruke Nginx versjon 1.2.1-2.2, tilgjengelig i Debian Stable repos (Wheezy).

PHP5:

PHP, det programmeringsspråket som mange av nettstedene (og CMS) jobber med i dag, er etter mitt syn familiens svarte sauer. Med andre ord, etter min personlige erfaring, store nettsteder, med et stort antall besøk, med mange alternativer, funksjoner, etc., hvis et slikt nettsted er laget i PHP, vil det forbruke mer ressurser enn et lignende nettsted laget, for eksempel, i RoR. Min erfaring har vært at folk, PHP er en stor ressursdrage, PHP + Apache er nok til å svelge hundrevis og hundrevis av MB RAM uten et reelt behov.

Årsaken til ikke å bruke RoR, Django eller noen andre er ganske enkelt at DesdeLinux (bloggen, vårt flaggskip) fungerer med WordPress, et CMS utviklet med PHP som tilbyr oss så mange, mange bekvemmeligheter, at vi rett og slett ikke tenker å endre det i på kort eller mellomlang sikt, ærlig talt, WordPress, selv når det ikke er perfekt, tjener oss for det vi trenger og kanskje mer.

Når det gjelder PHP, vil jeg bruke disse PHP-versjon 5.4.4-14 tilgjengelig på Debian Wheezy (Stabil)

Spawn_FastCGI:

Dette kan sies å være det som forener Nginx med PHP, det vil si, selv om de har PHP5-pakken installert hvis de ikke har Spawn_FastCGI installert og utført når de åpner et nettsted i PHP, vil nettleseren laste ned filen, den vil ikke vise dem noe som .php er programmert fordi serveren ikke vet hvordan man skal behandle .php-filer, og det er derfor det er viktig å installere og konfigurere Spawn_FastCGI.

Hvis vi brukte Apache, ville det være noe så enkelt som å installere libapache2-mod-php5-pakken, men siden vi bruker Nginx, må vi installere spawn-fcgi-pakken i stedet. I opplæringen vil jeg også forklare hvordan du lager et innledende skript for det i /etc/init.d/ slik at du kan kontrollere det mer komfortabelt.

MySQL:

Dette kan være det store spørsmålstegnet eller kanskje for noen det uoverensstemmende notatet. Mange jeg kjenner vil stille meg spørsmålet: hvorfor bruke MySQL og ikke MariaDB?

Problemet er rett og slett at jeg ikke har nok tid til å vie meg til å gjøre en migrasjon for øyeblikket fra MySQL til MariaDB, en migrasjon som i teorien skal være gjennomsiktig for alle, 100% kompatibel alt, men det er ... som jeg sa, i teorien. Da jeg begynte å flytte FromLinux-tjenester fra en VPS til en annen, måtte jeg la Apache ligge igjen og bruke Nginx, dette antydet forskjellige konfigurasjonsfiler, forskjellige måter å erklære VHosts, installasjon og konfigurasjon fra bunnen av på serveren og dens tjenester, jeg kunne ikke på det tidspunktet legge til en annen oppgave på listen, i tillegg til å være ærlig, endret jeg Apache til Nginx fordi Apache ikke tilfredsstilte mine behov, men MySQL tilfredsstiller så langt mine behov 100%, jeg ser ikke grunner til å det øyeblikket Jeg økte arbeidsmengden ved å endre noe som allerede fungerte bra for meg teknisk.

En gang forklart hvorfor jeg ikke installerte MariaDB, forklar også at ettersom de aller fleste nettsteder trenger en database for driften, siden det er der mye informasjon (eller nesten alt) av det vil bli lagret. Det er noen som liker Postgre eller noen andre, i denne veiledningen vil jeg forklare hvordan installer MySQL og konfigurer separate brukere for hvert nettsted.

La MySQL-versjonen som jeg vil bruke er v5.5.31

APC-er:

APC er en optimizer for PHP (forklart veldig enkelt). Det tillater oss en gang riktig konfigurert at PHP-behandlingen fungerer bedre, at svarene fra serveren er raskere.

Det er alternativer som memcache, men jeg har alltid brukt APC og har hatt veldig gunstige resultater. Jeg anbefaler å lese denne artikkelen på engelsk: Sammenligning av APC og Memcache som lokal innholdsbuffer

Jeg skal bruke versjonen av php-apc v3.1.13-1 også tilgjengelig i Debian Stable repos.

Oppsummering:

Denne måten å installere en konfigurering av en webserver på er ikke den mest optimale eller mye mindre, for eksempel vil mange anbefale Varnish, som fra det jeg har lest gjør sanne mirakler fordi alt eller nesten alt er hurtigbufret, men i vårt tilfelle gjør vi ikke trenger at 100% av nettstedet alltid er hurtigbufret fordi vi ikke vil eller trenger å gå til det ytterste. Imidlertid presiserer jeg, som jeg sa ovenfor: "så vidt jeg har lest", har jeg personlig ikke brukt lakk før i dag, så jeg kan ikke gi deg en 100% objektiv mening.

Dette vil være en serie opplæringsprogrammer der jeg vil vise deg hvordan du installerer en webserver som den som for øyeblikket er vert for FromLinux (blogg, forum, lim inn, etc). Bloggen har 30.000 200 besøk hver dag, nesten 500 brukere får tilgang til den samtidig, og til og med slik at RAM ikke overstiger 3 MB, kan dette være for stort forbruk, men ... hei, vi har 500 GB RAM, mindre enn XNUMX MB (som inkluderer FTP, SSH, etc) er det veldig bra, ikke sant? 🙂

All 'magien' blir ikke bare gjort av Nginx + Spawn_FastCGI + APC, vårt bloggbufringssystem er veldig godt konfigurert og reglene for Nginx er presise, dette gjør bloggen selv når den mottar mye trafikkprosess mye mindre PHP enn hva vanlig, siden den allerede er hurtigbufret. Hvis du har et nettsted med høy etterspørsel og har ressursproblemer, anbefaler jeg på det sterkeste at du studerer for å se hvilket cache-system som fungerer best for deg, hvilket som passer best for dine behov.

Jeg håper du synes disse veiledningene er interessante, i hver av dem vil jeg prøve å forklare alt på en omfattende, detaljert og så enkel måte som mulig.

Hilsen


Innholdet i artikkelen følger våre prinsipper for redaksjonell etikk. Klikk på for å rapportere en feil her.

27 kommentarer, legg igjen dine

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Bruno cascio sa

    Veldig bra og oversiktlig! Jeg gratulerer deg!

    1.    KZKG ^ Gaara sa

      Takk

  2.   Christopher castro sa

    Veldig bra opplæring.

    Det som fyller meg med tvil, er hvordan de konfigurerte e-postserveren.

    1.    KZKG ^ Gaara sa

      MailServer er noe fra hverandre, det vil si at det ikke har noe med webserveren å gjøre som du vet 🙂

      Men for lenge siden bestemte jeg meg for ikke å komplisere meg selv med MailServer, jeg valgte å bruke iRedMail (støtte for MySQL, LDAP og Postgre) og med de riktige innstillingene og detaljene jeg legger til i konfigurasjonsfilene, fungerer alt bra.

  3.   råtner87 sa

    Jeg liker artikkelen, jeg venter på artikelserien

    1.    KZKG ^ Gaara sa

      Takk, jeg håper å ta den neste på mandag eller tirsdag, den vil håndtere Nginx installasjon og konfigurasjon.

  4.   ACA sa

    Veldig bra, riktig konfigurasjon, det er vanskelig å finne den, kompromisset mellom faktorene er noen ganger nesten uløselig, jeg gikk også til nginx for en stund siden og senere til mariadb (nylig, tror jeg for et år siden).

    // som jeg nevnte ville det være fint om du tok opp muligheten for chroot, og bruk proxy_cache_path som også er nyttig. Også sammenligningen av kontakten (i tilfeller det er mulig) mot porten. og definere godt antall barn / vær.

    Hilsen

    1.    KZKG ^ Gaara sa

      Takk for kommentaren din 🙂
      Ja selvfølgelig, det ville være veldig hyggelig å burde Nginx for å holde den atskilt som sådan fra resten av systemet, jeg hadde ikke vurdert den muligheten i disse opplæringene, jeg får se hva jeg kan gjøre. Om proxy_cache_path har jeg aldri brukt det, jeg vil lese litt om det for å se hvordan det går.

      Når det gjelder antall tråder (min og maks), i Nginx-konfigurasjonen er det åpenbart definert, i Nginx-innlegget vil jeg snakke mye om .conf-filen 😉

      Igjen, takk for kommentaren din.

  5.   MSX sa

    Denne typen HowTos er det som gjør nettet virkelig kraftig for dataforskere, da det sparer oss mange timer med forskning og testing til vi endelig bestemmer oss for riktig alternativ, takk!

    Ett spørsmål, kjører dette på Debian? Hvilken versjon av OS og pakker?

    Greetings!

    1.    KZKG ^ Gaara sa

      Takk.
      Faktisk, nettsteder som rapporterer, som gjentar og gjentar nyhetene, er allerede for mange ... det som trengs er nettsteder som legger opp veiledninger, det er det nettet trenger!

      Ja, Debian Wheezy (nåværende stabil), versjonene av pakkene er der i innlegget 😉

  6.   eliotime3000. sa

    Utmerket kommentar. La oss se om jeg gjør en slags Errata med ZPanel X, og forøvrig gjør installasjonen manuelt i Debian Wheezy.

  7.   Federico Antonio Valdes Toujague sa

    Gå videre KZKG ^ Gaara !!!, at The Best Criterion of Truth is Practice, og du har erfaring med det du skriver. Et profesjonelt og fungerende nettsted. Major League Baseball, Dude.

    1.    eliotime3000. sa

      Det er sant. Da jeg begynte å spille med webserverne som jeg installerte i Windows, er sannheten at Apache skyter opp når det gjelder ressursforbruk hvis du bruker WordPress (i Drupal forbrukte det halvparten av ressursene).

  8.   vogn sa

    Jeg tror at denne opplæringen kommer til nytte for Nginx-delen. Nå vil jeg installere en server med Nginx, php, Varnish og MariaDB. Men selvfølgelig må du begynne, og latskap kan gjøre mye når det gjelder å kjempe med servere, og foreløpig er jeg fornøyd med den typiske lampen og memcache som jeg har xDD.

    En hilsen.

  9.   auroszx sa

    Flott, bare en av disse ville komme til nytte.

  10.   Ivan Gabriel Sosa sa

    Vi følger deg. Vi starter for tiden i en verden av webservere. Vi kjøpte to fra Hostinger, og en venn hjalp oss med å konfigurere den fra bunnen av (PHP, MySQL, Apache). Det er den eneste kombinasjonen som brukes i Linux, en plattform jeg har vært på siden januar.
    Men jeg var veldig interessert i dette emnet. Jubel!

  11.   Jose Manuel sa

    Jeg har aldri installert en webserver, men hvis jeg vil gjøre det, et spørsmål, vil det nivået som er nødvendig for å forstå veiledningene og være installasjonen høyt eller med grunnleggende kunnskap, kunne jeg prøve det? Takk på forhånd.

    1.    eliotime3000. sa

      Sannheten er at det ikke krever mye kunnskap for å kunne håndtere en databaseserver. En som allerede har prøvd den erfaringen forteller deg.

  12.   Mauritius sa

    Hei, det er veldig bra hva du skal gjøre med denne innleggsserien.

    Jeg har nylig installert Nginx + Php Fastcgi + Mariadb. Nginx.

    Alt dette gjorde jeg i Archlinux, fordi den distribusjonen er den eneste fra mitt synspunkt, som ikke gir så mye godbiter som de andre. Jeg la det i et burmiljø, og det ga meg mye ulempe å få det til å fungere perfekt.

    Nå fungerer det perfekt. Selv om jeg er interessert i å vite hva du mener om barn og fares prosesser, jo flere tips du gir meg, jo bedre.

    Alt dette er bare for praksis.
    Utstyret har 4 GB DDR2-ram og en 2 GHz Core 2.4duo-prosessor.

    Hilsen og jeg ser frem til de kommende innleggene i denne serien.

  13.   muskel sa

    200 brukere tilkoblet samtidig?
    Bare på bestemte tider på dagen, ikke sant? For ellers ville det overstige de 30.000 XNUMX daglige besøkene.

    1.    KZKG ^ Gaara sa

      Ja, selvfølgelig er det ikke alltid 200 personer online, for øyeblikket er det nesten 40 fordi det fortsatt er tidlig, om noen få timer vil de overstige 100.

  14.   dhunter sa

    Bare for moro skyld byttet jeg bare fra lighty til nginx på arbeidsstasjonen min (Symfony2 akkurat nå), jeg tok konfekten herfra [1], veldig enkelt.

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

  15.   Apr4xas sa

    Venter på fortsettelsen av dette 😀

    1.    KZKG ^ Gaara sa

      Denne uken må jeg publisere den, takk for at du leser oss 🙂

      1.    helse sa

        og? mangler mye?

  16.   Dean sa

    Bra innlegg ...

  17.   NOEL IVAN sa

    GOD KVELD.
    PÅ SPESIFIKASJONER AV ET SKOLEPROSJEKT, LA DE MEG INSTALLERE NGINX I OPENBSD 5.4 I ORACLE MV VIRTUALBOX FOR Å KAN BRUKE PHP, MYSQL, ANNEN ANDRE, NADAMAS AT JEG IKKE har vært i stand til å finne informasjon om ovennevnte, ER PROBLEM FOR MEG OVER.