Sådan installeres en webserver med Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1. del: Præsentation]

For ikke længe siden nævnte vi det nu DesdeLinux (alle dens tjenester) arbejder i GNUTransfer.com-servere. Bloggen er forbedret meget med hensyn til hastighed, fluiditet, selv når vi går fra at have (efter UsemosLinux fusionere) mere end 30.000 besøg hver dag (næsten 200 brugere er forbundet samtidigt). Hvordan opnås god ydelse på serveren selv med denne trafikmængde?

I øjeblikket har Justice (VPS, hvor bloggen og en anden tjeneste er) 3 GB RAM, men der forbruges mindre end 500 MB, dette er muligt med det rigtige valg af software at bruge og en passende konfiguration af dem. For eksempel er Apache utvivlsomt en stor i verden, nr. 1, når det kommer til hosting, men netop af den grund er Apache ikke altid den bedste mulighed. Når trafikken er høj, og serverhardwaren ikke rigtig er stor (Eks: 8 eller 16 GB RAM) Apache kan meget godt forbruge for meget RAM, hvilket gør, at serveren på bestemte tidspunkter tager for lang tid at svare, eller værre, at vores side er offline til utilstrækkelige ressourcer. Dette er grunden til, at mange af os vælger Nginx frem for Apache.

Nginx:

Vi har allerede talt om Nginx før i artiklen Nginx: Et interessant alternativ til Apache, der fortalte vi dig, at det er en webserver som Apache, LightHttpd eller Cherokee, men sammenlignet med Apache skiller den sig ud for sin ydeevne og lave hardwareforbrug, netop derfor er mange store sider som Facebook, MyOpera.com, DropBox eller endda WordPress .com bruger Nginx i stedet for Apache. I Linux-verdenen DesdeLinux Det er ikke den eneste, der bruger Nginx, så vidt jeg ved, bruger emsLinux og MuyLinux det også :)

Min personlige erfaring med Nginx stammer fra flere år, da jeg af nødvendighed begyndte at lede efter lette alternativer til Apache. På det tidspunkt gik Nginx til version 0.6, og dets kompatibilitet med websteder med høj efterspørgsel lavet i PHP var ikke den mest optimale, men i dag fra version 0.9 og fremefter (v1.2.1 tilgængelig på Debian Stable, v1.4.2 tilgængelig på ArchLinux) er forbedret meget, til det punkt, at med en korrekt konfiguration og forening af Nginx + PHP fungerer alt som en charme.

I denne tutorial-serie Jeg vil bruge Nginx version 1.2.1-2.2, tilgængelig i Debian Stable repos (Wheezy).

PHP5:

PHP, det programmeringssprog, som mange af siderne (og CMS) arbejder med i dag, er efter min mening familiens sorte får. Med andre ord, i min personlige erfaring, store websteder med et stort antal besøg, med mange muligheder, funktioner osv., Hvis et sådant sted er lavet i PHP, vil det forbruge flere ressourcer end et lignende websted lavet, for eksempel i RoR. Min erfaring har været, at folk, PHP er en enorm ressource drage, PHP + Apache er nok til at sluge hundreder og hundreder af MB RAM uden et reelt behov.

Grunden til ikke at bruge RoR, Django eller noget andet er simpelthen det DesdeLinux (bloggen, vores flagskib) arbejder med WordPress, et CMS udviklet med PHP, der tilbyder os så mange bekvemmeligheder, at vi simpelthen ikke planlægger at ændre det på kort eller mellemlang sigt, ærligt talt, WordPress, selv når det ikke er perfekt, tjener os til det, vi har brug for og måske mere.

Med hensyn til PHP, i disse tutorials vil jeg bruge PHP version 5.4.4-14 tilgængelig på Debian Wheezy (stabil)

Spawn_FastCGI:

Dette kan siges, at det er det, der forbinder Nginx med PHP, det vil sige, selvom de har PHP5-pakken installeret, hvis de ikke har Spawn_FastCGI installeret og udført, når de åbner et websted i PHP, vil browseren downloade filen, det viser dem ikke noget, som .php er programmeret, fordi serveren ikke ved, hvordan man behandler .php-filer. Derfor er det vigtigt at installere og konfigurere Spawn_FastCGI.

Hvis vi brugte Apache, ville det være noget så simpelt som at installere pakken libapache2-mod-php5, men da vi bruger Nginx, bliver vi i stedet nødt til at installere spawn-fcgi-pakken. I tutorialen forklarer jeg også, hvordan man opretter et indledende script til det i /etc/init.d/, så du kan kontrollere det mere komfortabelt.

MySQL:

Dette kan være det store spørgsmålstegn eller måske for nogle den uoverensstemmende note. Mange jeg kender vil stille mig spørgsmålet: hvorfor bruge MySQL og ikke MariaDB?

Problemet er simpelthen, at jeg ikke har nok tid til at dedikere til at lave en migrering i øjeblikket fra MySQL til MariaDB, en migrering, der i teorien burde være gennemsigtig for alle, 100% kompatibel med alt, men det er... som sagde jeg i teorien. På det tidspunkt begyndte jeg at flytte tjenester DesdeLinux fra en VPS til en anden var jeg nødt til at forlade Apache og bruge Nginx, dette involverede forskellige konfigurationsfiler, forskellige måder at deklarere VHosts på, installation og konfiguration fra bunden af ​​serveren og dens tjenester, på det tidspunkt kunne jeg ikke tilføje en anden opgave til liste, også og for at være ærlig ændrede jeg Apache til Nginx, fordi Apache ikke opfyldte mine behov, dog opfylder MySQL indtil videre mine behov 100%, jeg ser ingen grund til, at jeg skal øge min arbejdsbyrde ved at ændre noget, som det allerede virkede teknisk godt for mig.

Når jeg først har forklaret, hvorfor jeg ikke installerede MariaDB, skal du også forklare, at da langt størstedelen af ​​webstederne har brug for en database til deres drift, da det er, hvor en masse information (eller næsten alt) af det vil blive gemt. Der er nogle, der kan lide Postgre eller en anden, i denne serie af tutorials vil jeg forklare hvordan installer MySQL og konfigurer separate brugere til hvert websted.

La MySQL-version, som jeg vil bruge, er v5.5.31

APC'er:

APC er en optimizer til PHP (forklaret meget enkelt). Det giver os en gang korrekt konfigureret, at PHP-behandlingen fungerer bedre, at svarene fra serveren er hurtigere.

Der er alternativer som memcache, men jeg har altid brugt APC og har haft meget gunstige resultater. Jeg anbefaler at læse denne artikel på engelsk: Sammenligning af APC og Memcache som lokal cache til indhold

Jeg bruger i vejledningen versionen af php-apc v3.1.13-1 også tilgængelig i Debian Stable repos.

Opsummering:

Denne måde at installere en konfigurere en webserver på er ikke den mest optimale eller meget mindre, for eksempel vil mange anbefale lak, som ud fra det jeg har læst gør sande mirakler, fordi alt eller næsten alt er cachelagret, men i vores tilfælde gør vi ikke har brug for, at 100% af webstedet altid er cachelagret, da vi ikke vil eller har brug for at gå til det ekstreme. Imidlertid præciserer jeg, som jeg sagde ovenfor: "så vidt jeg har læst", har jeg personligt ikke brugt lak indtil i dag, så jeg kan ikke give dig en 100% objektiv mening.

Dette vil være en række tutorials, hvor jeg vil vise dig, hvordan du installerer en webserver som den, der hostes af dette minut. DesdeLinux (blog, forum, indsæt osv.). Bloggen har 30.000 besøg hver dag, næsten 200 brugere har adgang til den samtidigt, og alligevel overstiger RAM'en ikke 500 MB forbrugt, for nogle kan dette være overdrevent forbrug, men... hey, vi har 3 GB RAM, mindre end 500 MB (som bl.a. FTP-tjeneste, SSH osv.) er rigtig god ikke? 🙂

Al den 'magi' udføres ikke kun af Nginx + Spawn_FastCGI + APC, vores blog-cache-system er virkelig godt konfigureret, og reglerne for Nginx er præcise, det gør bloggen, selv når den modtager en masse trafikprocesser meget mindre PHP end hvad sædvanlig, da det allerede er meget cachelagret. Hvis du har et websted i høj efterspørgsel, og du har ressourceproblemer, anbefaler jeg uden tvivl, at du studerer for at se, hvilket cachesystem der fungerer bedst for dig, hvilket hvilket der bedst passer til dine behov.

Jeg håber, du finder disse tutorials interessante, i hver af dem vil jeg forsøge at forklare alt på en omfattende, detaljeret og så enkel måde som muligt.

hilsen


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Bruno cascio sagde han

    Meget god og klar! Jeg lykønsker dig!

    1.    KZKG ^ Gaara sagde han

      Tak

  2.   Christopher castro sagde han

    Meget god tutorial.

    Hvad der fylder mig med tvivl er, hvordan de konfigurerede e-mail-serveren.

    1.    KZKG ^ Gaara sagde han

      MailServer er noget fra hinanden, det vil sige, det har intet at gøre med webserveren som du kender 🙂

      Men for længe siden besluttede jeg ikke at komplicere mig med MailServer, jeg valgte at bruge iRedMail (support til MySQL, LDAP og Postgre) og med de korrekte indstillinger og detaljer, som jeg tilføjer i konfigurationsfilerne, fungerer alt fint.

  3.   rådner87 sagde han

    Jeg kan godt lide artiklen, jeg venter på artikelserien

    1.    KZKG ^ Gaara sagde han

      Tak, jeg håber at bringe den næste mandag eller tirsdag, den vil beskæftige sig med Nginx installation og konfiguration.

  4.   aca sagde han

    Meget god, den rigtige konfiguration, det er svært at finde det, kompromiset mellem faktorerne er undertiden næsten uløseligt, jeg gik også til nginx for et stykke tid siden og senere til mariadb (for nylig tror jeg for et år siden).

    // Som jeg nævnte, ville det være rart, hvis du rejste muligheden for chroot og brug proxy_cache_path, som også er nyttig. Også sammenligningen af ​​stikket (i de tilfælde det kan) mod porten. og definer godt antallet af børn / vædder.

    hilsen

    1.    KZKG ^ Gaara sagde han

      Tak for din kommentar 🙂
      Ja selvfølgelig, det ville være meget rart at burde Nginx for at holde det adskilt som sådan fra resten af ​​systemet, jeg havde ikke overvejet den mulighed i disse tutorials, jeg vil se, hvad jeg kan gøre. Om proxy_cache_path har jeg aldrig brugt det, jeg læser lidt om det for at se, hvordan det går.

      Med hensyn til antallet af tråde (min & max), i Nginx-konfigurationen er det tydeligvis defineret, i Nginx-indlægget vil jeg tale meget om .conf-filen 😉

      Igen, tak for din kommentar.

  5.   MSX sagde han

    Denne type HowTos er det, der gør Internettet virkelig magtfuldt for computerforskere, da det sparer os mange timers forskning og test, indtil vi endelig beslutter den rigtige mulighed, mange tak!

    Et spørgsmål, kører dette på Debian? Hvilken version af OS og pakker?

    Greetings!

    1.    KZKG ^ Gaara sagde han

      Tak.
      Faktisk er websteder, der rapporterer, der gentager og gentager nyhederne der allerede for mange ... hvad der er brug for er websteder, der sætter tutorials, det er hvad internettet har brug for!

      Ja, Debian Wheezy (nuværende Stabil), versionerne af pakkerne er lige der i indlægget 😉

  6.   eliotime3000 sagde han

    Fremragende kommentar. Lad os se, om jeg laver en slags Errata med ZPanel X og i øvrigt gør installationen manuelt i Debian Wheezy.

  7.   Federico Antonio Valdes Toujague sagde han

    Gå videre KZKG ^ Gaara !!!, at Den bedste sandhedskriterium er praksis, og du har erfaring med, hvad du skriver. En professionel og fungerende webside. Major League Baseball, fyr.

    1.    eliotime3000 sagde han

      Det er rigtigt. Da jeg begyndte at lege med de webservere, som jeg installerede i Windows, er sandheden også, at Apache skyder op med hensyn til ressourceforbrug, hvis du bruger WordPress (i Drupal forbrugte det halvdelen af ​​ressourcerne).

  8.   vogn sagde han

    Jeg tror, ​​at denne tutorial vil komme til nytte for Nginx-delen. Jeg vil nu installere en server med Nginx, php, Varnish og MariaDB. Men selvfølgelig skal vi starte, og dovenskab kan gøre meget for mig, når det kommer til kamp med servere, og i øjeblikket er jeg tilfreds med den typiske lampe og memcache, som jeg har xDD.

    En hilsen.

  9.   auroszx sagde han

    Fantastisk, bare en af ​​disse ville komme til nytte 🙂 En anden ser frem til det.

  10.   Ivan Gabriel Sosa sagde han

    Vi følger dig. Vi starter i øjeblikket i en verden af ​​webservere. Vi købte to fra Hostinger, og en ven hjalp os med at konfigurere det fra bunden (PHP, MySQL, Apache). Det er den eneste kombination, der bruges i Linux, en platform, som jeg har været på siden januar.
    Men jeg var meget interesseret i dette emne. Skål!

  11.   Jose Manuel sagde han

    Jeg har aldrig installeret en webserver, men hvis jeg vil gøre det, et spørgsmål, vil det niveau, der er nødvendigt for at forstå vejledningerne, og er installationen højt eller med grundlæggende viden, kunne jeg prøve det? Tak på forhånd.

    1.    eliotime3000 sagde han

      Sandheden er, at det ikke kræver meget viden for at kunne håndtere en databaseserver. En der allerede har prøvet den oplevelse fortæller dig det.

  12.   Mauritius sagde han

    Hej, det er meget godt, hvad du vil gøre med denne række indlæg.

    Jeg har for nylig installeret Nginx + Php Fastcgi + Mariadb. Nginx.

    Alt dette gjorde jeg det i Archlinux, fordi denne distribution er den eneste fra mit synspunkt, der ikke bringer så meget godbidder som de andre. Jeg lagde det i et burmiljø, og det gav mig en masse ulemper at få det til at fungere perfekt.

    Nu fungerer det perfekt. Selvom jeg er interesseret i at kende dine meninger om børnenes og farens processer, jo flere tip de giver mig, jo bedre.

    Alt dette er kun til praksis.
    Udstyret har 4 GB DDR2 ram og en 2 GHz Core 2.4duo-processor.

    Hilsner og jeg ser frem til de kommende indlæg i denne serie.

  13.   muskel sagde han

    200 brugere tilsluttet samtidigt?
    Kun på bestemte tidspunkter af dagen, ikke? For ellers ville det overstige de 30.000 daglige besøg.

    1.    KZKG ^ Gaara sagde han

      Ja selvfølgelig er der ikke altid 200 mennesker online, på dette tidspunkt er der næsten 40, fordi det stadig er tidligt, om et par timer vil de overstige 100.

  14.   djæger sagde han

    Bare for sjov skiftede jeg lige fra lighty til nginx på min arbejdsstation (Symfony2 lige nu), jeg tog conf herfra [1], meget simpelt.

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

  15.   Apr4xas sagde han

    Venter på fortsættelsen af ​​dette 😀

    1.    KZKG ^ Gaara sagde han

      Denne uge skal jeg offentliggøre det tak for læsning af nr

      1.    Salud sagde han

        og? mangler der meget?

  16.   Dean sagde han

    Godt indlæg ...

  17.   NOEL IVAN sagde han

    GOD AFTEN.
    PÅ SPECIFIKATIONER AF ET SKOLEPROJEKT, LADER DE MIG INSTALLERE NGINX I OPENBSD 5.4 I ORACLE MV VIRTUALBOX, DER SKAL KAN BRUGE PHP, MYSQL, MELLEM ANDRE, NADAMAS, AT JEG IKKE har kunnet finde oplysninger, der er nævnt ovenfor nævnt ovenfor.