Cum se instalează un server web cu Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [Prima parte: Prezentare]

Nu cu mult timp în urmă am menționat asta acum DesdeLinux (todos sus servicios) están funcionando en Servere GNUTransfer.com. Blogul s-a îmbunătățit mult în ceea ce privește viteza, fluiditatea, chiar și atunci când trecem de la a avea (după fuziunea UsemosLinux) peste 30.000 de vizite în fiecare zi (aproape 200 de utilizatori conectați simultan). Cum se poate obține o performanță bună a serverului chiar și cu acest volum de trafic?

În prezent, Justiția (VPS unde sunt blogul și alte servicii) are 3 GB de RAM, cu toate acestea se consumă mai puțin de 500 MB, acest lucru este posibil cu alegerea corectă a software-ului de utilizat și o configurare adecvată a acestora. De exemplu, Apache este, fără îndoială, un mare în lume, numărul 1 când vine vorba de găzduire, dar tocmai din acest motiv Apache nu este întotdeauna cea mai bună opțiune. Atunci când traficul este ridicat și hardware-ul serverului nu este prea mare (Ex: 8 sau 16 GB RAM) Apache poate consuma prea mult RAM, ceea ce face ca serverul în anumite momente să dureze prea mult pentru a răspunde sau, mai rău, că site-ul nostru este offline pentru resurse insuficiente. Acesta este motivul pentru care mulți dintre noi alegem Nginx peste Apache.

Nginx:

V-am spus deja despre Nginx mai devreme în articol Nginx: O alternativă interesantă la Apache, acolo v-am spus ca este un server web precum Apache, LightHttpd sau Cherokee, dar fata de Apache se remarca prin performanta si consumul redus de hardware, tocmai de ce multe site-uri mari precum Facebook, MyOpera.com, DropBox sau chiar WordPress .com folosește Nginx în loc de Apache. În lumea Linux DesdeLinux Nu este singurul care folosește Nginx, din câte știu eu îl folosesc și emsLinux și MuyLinux :)

Experiența mea personală cu Nginx datează de câțiva ani, când din necesitate am început să caut alternative ușoare la Apache. În acel moment, Nginx era pe versiunea 0.6 și compatibilitatea sa cu site-urile cu cerere ridicată făcute în PHP nu era cea mai optimă, totuși astăzi de la versiunea 0.9 încoace (v1.2.1 disponibil pe Debian Stable, v1.4.2 disponibil pe ArchLinux) s-a îmbunătățit mult, până la punctul că, cu o configurație și unire adecvate a Nginx + PHP, totul va funcționa ca un farmec.

În această serie de tutoriale Voi folosi versiunea Nginx 1.2.1-2.2, disponibil în depozitele Debian Stable (Wheezy).

PHP5:

PHP, acel limbaj de programare cu care multe dintre site-uri (și CMS) funcționează astăzi, este în opinia mea, oaia neagră a familiei. Cu alte cuvinte, în experiența mea personală, site-uri mari, cu un volum mare de vizite, cu multe opțiuni, funcții etc., dacă un astfel de site este realizat în PHP va consuma mai multe resurse decât un site similar realizat, de exemplu, în RoR. Experiența mea a fost că oamenii, PHP este un dragon mare de resurse, PHP + Apache este suficient pentru a înghiți sute și sute de MB de RAM fără o nevoie reală.

El por qué de no usar RoR, Django o algún otro es simplemente que DesdeLinux (el blog, nuestro buque insignia) funciona con WordPress, un CMS desarrollado con PHP que nos ofrece tantas pero tantas comodidades, que simplemente no pensamos cambiarlo en corto o mediano plazo, honestamente, WordPress aún cuando no es perfecto nos sirve para lo que necesitamos y tal vez más.

În ceea ce privește PHP, în aceste tutoriale voi folosi Versiunea PHP 5.4.4-14 disponibil pe Debian Wheezy (Stabil)

Spawn_FastCGI:

Acest lucru se poate spune că este ceea ce unește Nginx cu PHP, adică chiar dacă au pachetul PHP5 instalat dacă nu au instalat și executat Spawn_FastCGI când deschid un site în PHP browserul va descărca fișierul, nu le va arăta nimic .php a fost programat deoarece serverul nu știe cum să proceseze fișierele .php, motiv pentru care este esențial să instalați și să configurați Spawn_FastCGI.

Dacă am folosi Apache, ar fi ceva la fel de simplu ca instalarea pachetului libapache2-mod-php5, dar din moment ce folosim Nginx va trebui să instalăm pachetul spawn-fcgi. De asemenea, în tutorial voi explica cum să creați un script inițial în /etc/init.d/, astfel încât să îl puteți controla mai confortabil.

MySQL:

Acesta ar putea fi marele semn de întrebare sau poate, pentru unii, nota discordantă. Mulți știu că îmi vor pune întrebarea: de ce să folosesc MySQL și nu MariaDB?

El asunto es simplemente que no tengo el tiempo suficiente para dedicarme a hacer una migración en este momento de MySQL a MariaDB, migración que en teoría debería ser transparente para todos, 100% compatible todo, pero eso es… como dije, en teoría. En el momento en que empecé a mover servicios de DesdeLinux de un VPS hacia otro tuve que dejar atrás a Apache y usar Nginx, esto implicaba archivos de configuración distintos, diferentes maneras de declarar VHosts, instalación y configuración desde cero del servidor y sus servicios, no podía en ese momento sumar otra tarea más a la lista, además y siendo honestos, cambié Apache por Nginx porque Apache no me satisfacía mis necesidades, no obstante, MySQL hasta el momento me satisface mis necesidades al 100%, no veo motivos para en ese momento yo aumentar mi carga de trabajo cambiando algo que ya me funcionaba técnicamente bien.

Odată explicat de ce nu am instalat MariaDB, explicați, de asemenea, că marea majoritate a site-urilor web au nevoie de o bază de date pentru funcționarea lor, deoarece acolo vor fi stocate o mulțime de informații (sau aproape toate). Există unii cărora le place Postgre sau altcineva, în această serie de tutoriale voi explica cum instalați MySQL și configurați utilizatori separați pentru fiecare site.

La Versiunea MySQL pe care o voi folosi este v5.5.31

APC-uri:

APC este un optimizator pentru PHP (explicat foarte simplu). Ne permite, odată configurat corect, că procesarea PHP funcționează mai bine, că răspunsurile de la server sunt mai rapide.

Cu toate acestea, există alternative precum memcache, am folosit întotdeauna APC și am avut rezultate foarte favorabile. Vă recomand să citiți acest articol în engleză: Compararea APC și Memcache ca cache de conținut local

Voi folosi în tutorial versiunea de php-apc v3.1.13-1 disponibil și în repourile Debian Stable.

Rezumând:

Acest mod de a instala o configurație de server web nu este cel mai optim, departe de el, de exemplu mulți vor recomanda Varnish, care din ceea ce am citit face adevărate minuni, deoarece totul sau aproape totul este stocat în cache, dar, în cazul nostru, nu avem nevoie de asta 100% din site este întotdeauna stocat în cache, deoarece nu vrem sau nu trebuie să mergem în această extremă. Cu toate acestea, clarific, așa cum am spus mai sus: „din câte am citit”, eu personal nu am folosit Vernisul până astăzi, așa că nu vă pot oferi o opinie 100% obiectivă.

Esto será una serie de tutoriales en los cuales les mostraré cómo instalar un servidor web como el que tiene hostedo en este minuto a DesdeLinux (blog, foro, paste, etc). El blog cuenta con 30.000 visitas cada día, casi 200 usuarios accediendo al mismo de forma simultánea, y aún así la RAM no sobrepasa los 500MB consumidos, esto para algunos puede ser un consumo excesivo pero… eh, tenemos 3GB de RAM, menos de 500MB (que incluyen servicio FTP, SSH, etc) está realmente bien no? 🙂

Toată „magia” nu este realizată doar de Nginx + Spawn_FastCGI + APC, sistemul nostru de cache al blogului este foarte bine configurat, iar regulile pentru Nginx sunt precise, acest lucru face blogul chiar și atunci când primește o mulțime de proces de trafic mult mai puțin PHP decât ceea ce de obicei, deoarece are multe deja stocate în cache. Dacă aveți un site cu cerere ridicată și aveți probleme cu resursele, vă recomand să studiați pentru a vedea ce sistem de cache va funcționa cel mai bine pentru dvs., care dintre acestea se potrivește cel mai bine nevoilor dvs.

Sper că veți găsi aceste tutoriale interesante, în fiecare dintre ele voi încerca să explic totul într-un mod cuprinzător, detaliat și cât mai simplu posibil.

În ceea ce priveşte


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Bruno cascio el a spus

    Foarte bine și clar! Te felicit!

    1.    KZKG ^ Gaara el a spus

      Mulțumesc

  2.   Christopher Castro el a spus

    Foarte bun tutorial.

    Ceea ce mă umple de îndoială este modul în care au configurat serverul de e-mail.

    1.    KZKG ^ Gaara el a spus

      MailServer este ceva diferit, adică nu are nimic de-a face cu serverul web așa cum știți 🙂

      Cu toate acestea, cu mult timp în urmă am decis să nu mă complic cu MailServer, am ales să folosesc iRedMail (suport pentru MySQL, LDAP și Postgre) și cu setările și detaliile corespunzătoare pe care le adaug în fișierele de configurare, totul funcționează bine.

  3.   Putreze87 el a spus

    Îmi place articolul, aștept seria articolelor

    1.    KZKG ^ Gaara el a spus

      Mulțumesc, sper să-l aduc pe următorul luni sau marți, se va ocupa de instalarea și configurarea Nginx.

  4.   aca el a spus

    Foarte bine, configurația potrivită, este dificil de găsit, compromisul dintre factori este uneori aproape de nerezolvat, am mers și eu la nginx cu ceva timp în urmă și mai târziu la mariadb (recent, cred că acum un an).

    // Așa cum am menționat, ar fi bine dacă ați crește posibilitatea de a chroot și ați folosi proxy_cache_path, care este, de asemenea, util. De asemenea, comparația socketului (în cazurile în care este posibil) cu portul. și definiți bine numărul de copii / berbec.

    În ceea ce priveşte

    1.    KZKG ^ Gaara el a spus

      Vă mulțumim pentru comentariu 🙂
      Da, bineînțeles, ar fi foarte frumos să-l punem în cușcă pe Nginx pentru a-l păstra separat ca atare de restul sistemului, nu avusesem în vedere această posibilitate în aceste tutoriale, voi vedea ce pot face. Despre proxy_cache_path, nu l-am folosit niciodată, voi citi un pic despre el pentru a vedea cum merge.

      În ceea ce privește numărul de fire (min & max), în configurația Nginx este evident definit, în postarea Nginx voi vorbi mult despre fișierul .conf 😉

      Din nou, vă mulțumesc pentru comentariu.

  5.   MSX el a spus

    Acest tip de HowTos este ceea ce face web-ul cu adevărat puternic pentru informaticieni, deoarece ne economisește ore în șir de cercetare și testare până când decidem în cele din urmă asupra opțiunii adecvate, mulțumesc mult!

    O întrebare, funcționează acest lucru pe Debian? Ce versiune de sistem de operare și pachete?

    Salutări!

    1.    KZKG ^ Gaara el a spus

      Mulţumesc.
      Într-adevăr, site-urile care raportează, care repetă și repetă știrile sunt deja prea multe ... ceea ce este necesar sunt site-uri care pun tutoriale, de asta are nevoie webul!

      Da, Debian Wheezy (actualul Stabil), versiunile pachetelor sunt chiar acolo în postarea 😉

  6.   eliotime3000 el a spus

    Comentariu excelent. Să vedem dacă fac un fel de Errata cu ZPanel X și, întâmplător, fac instalarea manual în Debian Wheezy.

  7.   Federico Antonio Valdes Toujague el a spus

    Continuați KZKG ^ Gaara !!!, că cel mai bun criteriu al adevărului este practica și aveți experiență în ceea ce scrieți. Un site web profesionist și funcțional. Major League Baseball, Băi.

    1.    eliotime3000 el a spus

      Este adevărat. De asemenea, când am început să mă joc cu serverele web pe care le-am instalat în Windows, adevărul este că Apache trage în termeni de consum de resurse dacă utilizați WordPress (în Drupal a consumat jumătate din resurse).

  8.   transport el a spus

    Cred că pentru partea Nginx acest tutorial va fi util. Vreau acum să instalez un server cu Nginx, php, Varnish și MariaDB. Dar, desigur, trebuie să începeți, iar lenea poate face multe când vine vorba de lupta cu servere și în acest moment sunt mulțumit de lampa și memcache-ul tipic pe care îl am xDD.

    Un salut.

  9.   auroszx el a spus

    Minunat, doar una dintre acestea ar fi utilă.

  10.   Ivan Gabriel Sosa el a spus

    Te urmăm. În prezent începem în lumea serverelor web. Am cumpărat două de la Hostinger, iar un prieten ne-a ajutat să-l configurăm de la zero (PHP, MySQL, Apache). Este singura combinație care este utilizată în Linux, o platformă pe care am fost din ianuarie.
    Dar am fost foarte interesat de acest subiect. Noroc!

  11.   Jose Manuel el a spus

    Nu am instalat niciodată un server web, dar dacă vreau să o fac, o întrebare, nivelul necesar pentru a înțelege tutorialele și instalarea va fi ridicat sau cu cunoștințe de bază aș putea să îl încerc? Mulțumesc anticipat.

    1.    eliotime3000 el a spus

      Adevărul este că nu necesită multe cunoștințe pentru a putea gestiona un server de baze de date. Unul care a încercat deja această experiență îți spune.

  12.   Mauritius el a spus

    Bună ziua, este foarte bine ce veți face cu această serie de postări.

    Am instalat recent Nginx + Php Fastcgi + Mariadb. Nginx.

    Toate acestea, le-am făcut în Archlinux, pentru că acea distribuție este singura din punctul meu de vedere, care nu aduce la fel de multe bunătăți ca celelalte. L-am pus într-un mediu cușcat și mi-a dat multe inconveniente să-l funcționez perfect.

    Acum funcționează perfect. Deși sunt interesat să știu părerile voastre despre procesele copiilor și ale tatălui, cu cât îmi dau mai multe sfaturi, cu atât mai bine.

    Toate acestea sunt doar pentru practică.
    Echipamentul are 4 GB de memorie RAM DDR2 și un procesor Core 2duo de 2.4 Ghz.

    Salutări și aștept cu nerăbdare postările viitoare ale acestei serii.

  13.   mușchi el a spus

    200 de utilizatori conectați simultan?
    Numai în anumite momente ale zilei, nu? Pentru că altfel ar depăși acele 30.000 de vizite zilnice.

    1.    KZKG ^ Gaara el a spus

      Da, desigur, nu sunt întotdeauna 200 de persoane online, în acest moment sunt aproape 40 pentru că este încă devreme, în câteva ore vor depăși 100.

  14.   dhunter el a spus

    Doar pentru distracție, am trecut de la ușor la nginx pe stația mea de lucru (Symfony2 chiar acum), am luat conf de aici [1], foarte simplu.

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

  15.   Apr4xas el a spus

    În așteptarea continuării acestui 😀

    1.    KZKG ^ Gaara el a spus

      Săptămâna aceasta trebuie să-l public, mulțumesc că ne-ai citit 🙂

      1.    Salud el a spus

        și? lipsesc multe?

  16.   Decan el a spus

    Post bun ...

  17.   NOEL IVAN el a spus

    BUNĂ SEARA.
    Datorită specificațiilor unui proiect școlar, Mă lasă să instalez NGINX în OPENBSD 5.4 ÎN ORACLE MV VIRTUALBOX PENTRU A PUTEA UTILIZA PHP, MYSQL, ÎNTRE ALȚII, NADAMAS, PE CARE NU AM PUTUT GĂSEȘTE INFORMAȚII CU PRIVIRE LA CELE MAI sus menționate, cred că se cred.