Paano mag-install ng isang web server gamit ang Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [Ika-1 Bahagi: Paglalahad]

Hindi pa nagtagal ay binanggit natin iyan ngayon DesdeLinux (lahat ng mga serbisyo nito) ay gumagana sa Mga server ng GNUTransfer.com. Ang blog ay napabuti nang husto sa mga tuntunin ng bilis, likido, kahit na mula tayo sa pagkakaroon (pagkatapos ng UsemosLinux sumanib) higit sa 30.000 mga pagbisita araw-araw (halos 200 mga gumagamit ang magkakonekta nang sabay). Paano makamit ang mahusay na pagganap ng server kahit sa dami ng trapiko na ito?

Sa kasalukuyan ang Hustisya (VPS kung saan ang blog at ilang iba pang serbisyo) ay mayroong 3GB ng RAM, subalit mas mababa sa 500MB ang natupok, posible ito sa tamang pagpili ng software na gagamitin at isang sapat na pagsasaayos ng mga ito. Halimbawa, ang Apache ay walang alinlangan na isang mahusay sa mundo, ang No.1 pagdating sa pagho-host, ngunit tiyak para sa kadahilanang iyon Apache ay hindi palaging ang pinakamahusay na pagpipilian. Kapag mataas ang trapiko at ang hardware ng server ay hindi talaga malaki (Hal: 8 o 16GB ng RAM) Maaaring ubusin ng Apache ang sobrang RAM na ginagawa ang server sa ilang mga oras na masyadong tumugon, o mas masahol pa, na offline ang aming site para sa hindi sapat na mapagkukunan. Ito ang dahilan kung bakit marami sa atin ang pumili ng Nginx kaysa sa Apache.

Nginx:

Sinabi na namin sa iyo ang tungkol sa Nginx dati sa artikulo Nginx: Isang kagiliw-giliw na kahalili sa Apache, doon namin sinabi sa iyo na ito ay isang web server tulad ng Apache, LightHttpd o Cherokee, ngunit kumpara sa Apache ito ay namumukod-tangi para sa pagganap nito at mababang paggamit ng hardware, tiyak kung bakit maraming malalaking site tulad ng Facebook, MyOpera.com, DropBox o kahit na Gumagamit ang WordPress .com ng Nginx sa halip na Apache. Sa mundo ng Linux DesdeLinux Hindi lang ito ang gumagamit ng Nginx, sa pagkakaalam ko, ginagamit din ito ng emsLinux at MuyLinux :)

Ang aking personal na karanasan sa Nginx ay nagsimula ng maraming taon, nang sa labas ng pangangailangan ay nagsimula akong maghanap ng mga magaan na kahalili sa Apache. Sa oras na iyon ang Nginx ay nasa bersyon 0.6 at ang pagiging tugma nito sa mga site ng mataas na demand na ginawa sa PHP ay hindi ang pinakamainam, subalit ngayon mula sa bersyon 0.9 pataas (v1.2.1 magagamit sa Debian Stable, v1.4.2 na magagamit sa ArchLinux) ay napabuti nang husto, sa puntong may tamang pagsasaayos at pag-iisa ng Nginx + PHP lahat ay gagana tulad ng isang alindog.

Sa serye ng tutorial na ito Gagamitin ko ang bersyon Nginx 1.2.1-2.2, magagamit sa mga repos ng Debian Stable (Wheezy).

PHP5:

Ang PHP, ang wikang iyon sa pagprogram na gumagana ng marami sa mga site (at CMS) ngayon, ay sa aking paningin, ang itim na tupa ng pamilya. Sa madaling salita, sa aking personal na karanasan, ang mga malalaking site, na may maraming dami ng mga pagbisita, na may maraming mga pagpipilian, pag-andar, atbp., Kung ang naturang site ay ginawa sa PHP kakailanganin nito ang mas maraming mapagkukunan kaysa sa isang katulad na site na ginawa, halimbawa, sa RoR. Ang aking karanasan ay ang mga tao, ang PHP ay isang malaking mapagkukunang dragon, ang PHP + Apache ay sapat na upang lunukin ang daan-daang at daan-daang mga MB ng RAM nang walang tunay na pangangailangan.

Ang dahilan para hindi gumamit ng RoR, Django o iba pa ay iyon lang DesdeLinux (ang blog, ang aming punong barko) ay gumagana sa WordPress, isang CMS na binuo gamit ang PHP na nag-aalok sa amin ng napakaraming kaginhawahan, na hindi namin planong baguhin ito sa maikli o katamtamang termino, sa totoo lang, WordPress, kahit na hindi ito perpekto, nagsisilbi sa amin para sa kung ano ang kailangan namin at marahil higit pa.

Tungkol sa PHP, sa mga tutorial na ito gagamitin ko ang Bersyon ng PHP 5.4.4-14 magagamit sa Debian Wheezy (Matatag)

Spawn_FastCGI:

Masasabing ito ang nagsasama sa Nginx sa PHP, iyon ay, kahit na naka-install ang PHP5 na pakete kung wala silang naka-install at naisagawa na Spawn_FastCGI kapag binuksan nila ang isang site sa PHP i-download ng browser ang file, hindi ito ipapakita sa kanila ang anupaman .php ay nai-program dahil ang server ay hindi alam kung paano iproseso ang mga file na .php, kung kaya't mahalaga na i-install at i-configure ang Spawn_FastCGI.

Kung ginamit namin ang Apache ito ay magiging isang bagay na kasing simple ng pag-install ng libapache2-mod-php5 package ngunit dahil ginagamit namin ang Nginx kakailanganin naming i-install ang spawn-fcgi package sa halip. Gayundin, sa tutorial ay ipaliwanag ko kung paano lumikha ng isang paunang script para dito sa /etc/init.d/ upang makontrol mo ito nang mas kumportable.

MySQL:

Ito ay maaaring ang malaking marka ng tanong o marahil, para sa ilan, ang hindi magkakasundo na tala. Maraming alam kong magtatanong sa akin ng tanong: bakit ginagamit ang MySQL at hindi ang MariaDB?

Ang isyu ay simpleng wala akong sapat na oras upang italaga sa paggawa ng isang paglipat sa sandaling ito mula sa MySQL hanggang MariaDB, isang paglipat na sa teorya ay dapat na transparent para sa lahat, 100% na katugma sa lahat, ngunit iyon ay... bilang Sabi ko, in theory. Sa oras na nagsimula akong lumipat ng mga serbisyo DesdeLinux mula sa isang VPS patungo sa isa pa, kailangan kong iwanan ang Apache at gumamit ng Nginx, ito ay nagsasangkot ng iba't ibang mga file ng pagsasaayos, iba't ibang paraan ng pagdedeklara ng mga VHost, pag-install at pagsasaayos mula sa simula ng server at mga serbisyo nito, sa oras na iyon ay hindi ako makapagdagdag ng isa pang gawain sa list, gayundin at sa totoo lang, binago ko ang Apache para sa Nginx dahil hindi natugunan ng Apache ang aking mga pangangailangan, gayunpaman, ang MySQL sa ngayon ay nakakatugon sa aking mga pangangailangan ng 100%, wala akong nakikitang dahilan para madagdagan ko ang aking workload sa pamamagitan ng pagbabago ng isang bagay na gumagana na ito technically well para sa akin.

Sa sandaling ipinaliwanag kung bakit hindi ko na-install ang MariaDB, ipaliwanag din na bilang karamihan ng mga website ay nangangailangan ng isang database para sa kanilang operasyon, sapagkat kung saan maraming impormasyon (o halos lahat) nito ay maiimbak. Mayroong ilang mga gusto ang Postgre o ibang tao, sa seryeng ito ng mga tutorial ay ipaliwanag ko kung paano i-install ang MySQL at i-configure ang magkakahiwalay na mga gumagamit para sa bawat site.

La Ang bersyon ng MySQL na gagamitin ko ay v5.5.31

Mga APC:

Ang APC ay isang optimizer para sa PHP (simpleng ipinaliwanag). Pinapayagan kaming maayos na mai-configure na ang pagpoproseso ng PHP ay mas mahusay na gumagana, na ang mga tugon mula sa server ay mas mabilis.

Mayroong mga kahalili tulad ng memcache subalit, palagi akong gumagamit ng APC at nagkaroon ng kanais-nais na mga resulta. Inirerekumenda kong basahin ang artikulong ito sa Ingles: Paghahambing ng APC at Memcache bilang lokal na cache ng nilalaman

Gagamitin ko sa tutorial ang bersyon ng php-apc v3.1.13-1 magagamit din sa repos ng Debian Stable.

Summing up:

Ang ganitong paraan ng pag-install ng isang pag-configure ng isang web server ay hindi ang pinakamainam o hindi gaanong mas kaunti, halimbawa maraming magrekomenda ng Varnish, na mula sa nabasa ko ay gumagawa ng totoong mga himala dahil ang lahat o halos lahat ay naka-cache, ngunit, sa aming kaso hindi namin kailangan iyon 100% ng site ay palaging naka-cache dahil hindi namin nais o kailangan na pumunta sa sukdulang iyon. Gayunpaman, nililinaw ko, tulad ng sinabi ko sa itaas: "hanggang sa nabasa ko", hindi ko personal na ginamit ang Varnish hanggang ngayon, kaya't hindi kita mabibigyan ng isang 100% layunin ng opinyon.

Ito ay isang serye ng mga tutorial kung saan ipapakita ko sa iyo kung paano mag-install ng isang web server tulad ng isa na naka-host sa minutong ito. DesdeLinux (blog, forum, i-paste, atbp). Ang blog ay may 30.000 na pagbisita araw-araw, halos 200 mga user ang nag-a-access nito nang sabay-sabay, ngunit ang RAM ay hindi lalampas sa 500MB na natupok, para sa ilan ito ay maaaring labis na pagkonsumo ngunit... hey, mayroon kaming 3GB ng RAM, mas mababa sa 500MB (na kinabibilangan ng serbisyo ng FTP , SSH, atbp.) ay talagang maganda? 🙂

Ang lahat ng 'mahika' ay hindi lamang nagawa ng Nginx + Spawn_FastCGI + APC, ang aming blog caching system ay talagang naayos at ang mga patakaran para sa Nginx ay tumpak, ginagawa nito ang blog kahit na nakakatanggap ito ng maraming proseso ng trapiko na mas mababa sa PHP kaysa sa kung ano dati, dahil maraming naka-cache na. Kung mayroon kang isang mataas na site ng demand at may mga problema sa mapagkukunan, lubos kong inirerekumenda na mag-aral ka upang makita kung aling sistema ng cache ang pinakamahusay na gagana para sa iyo, alin ang pinakaangkop sa iyong mga pangangailangan.

Inaasahan kong nakikita mo ang mga tutorial na ito na interesante, sa bawat isa sa kanila susubukan kong ipaliwanag ang lahat sa isang komprehensibo, detalyado at simpleng paraan hangga't maaari.

Regards


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Bruno cascio dijo

    Napakahusay at malinaw! Binabati kita!

    1.    KZKG ^ Gaara dijo

      Salamat sa iyo

  2.   Christopher castro dijo

    Napakagandang tutorial.

    Ang pinupuno sa akin ng pag-aalinlangan ay kung paano nila na-configure ang email server.

    1.    KZKG ^ Gaara dijo

      Ang MailServer ay isang bagay na hiwalay, iyon ay, wala itong kinalaman sa web server na alam mo 🙂

      Gayunpaman, matagal na ang nakaraan nagpasya akong huwag kumplikado ang aking sarili sa MailServer, pinili kong gamitin ang iRedMail (suporta para sa MySQL, LDAP at Postgre) at sa wastong mga setting at detalye na idinagdag ko sa mga file ng pagsasaayos, lahat ay gumagana nang maayos.

  3.   Nabulok87 dijo

    Gusto ko ang artikulo, naghihintay ako para sa serye ng mga artikulo

    1.    KZKG ^ Gaara dijo

      Salamat, inaasahan kong dalhin ang susunod sa Lunes o Martes, haharapin nito ang pag-install at pagsasaayos ng Nginx.

  4.   aca dijo

    Napakahusay, ang tamang pagsasaayos, mahirap hanapin ito, ang kompromiso sa pagitan ng mga kadahilanan ay halos hindi malulutas, nagpunta rin ako sa nginx kanina pa at sa paglaon sa mariadb (kamakailan lamang, sa palagay ko isang taon na ang nakalilipas).

    // tulad ng nabanggit ko magiging maganda kung itinaas mo ang posibilidad ng chroot, at gamitin ang proxy_cache_path na kapaki-pakinabang din. Gayundin ang paghahambing ng socket (sa mga kaso na posible) laban sa port. at tukuyin nang mabuti ang bilang ng mga bata / ram.

    Regards

    1.    KZKG ^ Gaara dijo

      Salamat sa iyong puna 🙂
      Oo syempre, masarap i-cage ang Nginx upang mapanatili itong hiwalay mula sa natitirang bahagi ng system, hindi ko isinasaalang-alang ang posibilidad na iyon sa mga tutorial na ito, makikita ko kung ano ang magagawa ko. Tungkol sa proxy_cache_path, hindi ko pa nagamit ito, babasahin ko nang kaunti tungkol dito upang makita kung paano ito nangyayari.

      Tungkol sa bilang ng mga thread (min & max), sa pagsasaayos ng Nginx malinaw na tinukoy ito, sa Nginx post na pag-uusapan ko ang tungkol sa .conf file 😉

      Muli, salamat sa iyong komento.

  5.   msx dijo

    Ang ganitong uri ng HowTos ay kung bakit ang web ay tunay na malakas para sa mga computer scientist dahil ito ay nakakatipid sa atin ng tone-toneladang oras ng pagsasaliksik at pagsusuri hanggang sa magpasya kami sa naaangkop na pagpipilian, maraming salamat!

    Isang tanong, tumatakbo ba ito kay Debian? Anong bersyon ng OS at mga pakete?

    Pagbati!

    1.    KZKG ^ Gaara dijo

      Salamat sa inyo.
      Sa katunayan, ang mga site na nag-uulat, na inuulit at ulitin ang balita ay mayroon nang masyadong maraming ... kung ano ang kinakailangan ay mga site na naglalagay ng mga tutorial, iyon ang kailangan ng web!

      Oo, Debian Wheezy (kasalukuyang Matatag), ang mga bersyon ng mga pakete ay naroroon sa post 😉

  6.   eliotime3000 dijo

    Napakahusay na puna. Tingnan natin kung gumawa ako ng isang uri ng Errata sa ZPanel X, at hindi sinasadya, gawin ang manu-manong pag-install sa Debian Wheezy.

  7.   Federico Antonio Valdes Toujague dijo

    Sige KZKG ^ Gaara !!!, na Ang Pinakamahusay na Criterion of Truth ay Pagsasanay, at mayroon kang karanasan tungkol sa iyong sinusulat. Isang propesyonal at nagtatrabaho website. Major League Baseball, Dude.

    1.    eliotime3000 dijo

      Totoo yan. Gayundin, nang magsimula akong maglaro sa mga web server na na-install ko sa Windows, ang totoo ay ang Apache ay nag-shoot up sa mga tuntunin ng pagkonsumo ng mapagkukunan kung gumagamit ka ng WordPress (sa Drupal naubos nito ang kalahati ng mga mapagkukunan).

  8.   karwahe dijo

    Sa palagay ko na para sa bahaging Nginx ang tutorial na ito ay magagamit para sa akin. Ngayon nais kong mag-install ng isang server na may Nginx, php, Varnish at MariaDB. Ngunit siyempre, kailangan nating magsimula, at ang katamaran ay maaaring magagawa para sa akin pagdating sa pakikipag-away sa mga server at sa ngayon ay masaya ako sa karaniwang lampara at memcache na mayroon akong xDD.

    Isang pagbati.

  9.   auroszx dijo

    Mahusay, isa lamang sa mga ito ay madaling magamit 🙂 Isa pang inaabangan ito.

  10.   Ivan Gabriel Sosa dijo

    Sinusundan ka namin Kasalukuyan kaming nagsisimula sa mundo ng mga web server. Bumili kami ng dalawa sa Hostinger, at tinulungan kami ng isang kaibigan na mai-configure ito mula sa simula (PHP, MySQL, Apache). Ito ang nag-iisang kumbinasyon na ginagamit sa Linux, isang platform na napuntahan ko mula pa noong Enero.
    Ngunit interesado ako sa paksang ito. Cheers!

  11.   Jose Manuel dijo

    Hindi pa ako naka-install ng isang web server ngunit kung nais kong gawin ito, isang katanungan, ang antas ba na kinakailangan upang maunawaan ang mga tutorial at ang pag-install ay mataas o may pangunahing kaalaman maaari ko bang subukan ito? Salamat nang maaga

    1.    eliotime3000 dijo

      Ang totoo ay hindi ito nangangailangan ng maraming kaalaman upang makapaghawak ng isang server ng database. Sinasabi sa iyo ng isa na sumubok na ang karanasang iyon.

  12.   Mauritius dijo

    Kumusta, napakahusay na gagawin mo sa seryeng ito ng mga post.

    Kamakailan-install ko ang Nginx + Php Fastcgi + Mariadb. Nginx.

    Ang lahat ng ito, ginawa ko sa Archlinux, dahil ang pamamahagi na iyon ay isa lamang mula sa aking pananaw, na hindi nagdadala ng mas mahusay na kagaya ng iba. Inilagay ko ito sa isang caged na kapaligiran at binigyan ako ng maraming abala upang ganap itong gumana.

    Ngayon ay gumagana ito ng perpekto. Bagaman interesado akong malaman ang iyong mga opinyon, tungkol sa proseso ng mga anak at ama, mas maraming mga tip na ibinibigay nila sa akin, mas mabuti.

    Ang lahat ng ito ay para sa pagsasanay lamang.
    Ang kagamitan ay mayroong 4GB ng DDR2 ram at isang 2Ghz Core 2.4duo na processor.

    Pagbati at inaasahan ko ang mga paparating na post ng seryeng ito.

  13.   kalamnan dijo

    200 mga gumagamit na konektado nang sabay-sabay?
    Sa mga tiyak na oras lamang ng araw, tama ba? Dahil kung hindi man ay lalampas ito sa 30.000 araw-araw na pagbisita.

    1.    KZKG ^ Gaara dijo

      Oo, syempre, hindi laging 200 ang mga online, sa sandaling ito ay halos 40 dahil maaga pa, sa ilang oras ay lalampas sila sa 100.

  14.   dhunter dijo

    Para lang sa kasiyahan lumipat lang ako mula sa magaan hanggang nginx sa aking workstation (Symfony2 ngayon), kinuha ko ang conf mula dito [1], napakasimple.

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

  15.   Apr4xas dijo

    Naghihintay para sa pagpapatuloy ng 😀

    1.    KZKG ^ Gaara dijo

      Sa linggong ito dapat ko itong mai-publish, salamat sa pagbabasa ng numero

      1.    kalusugan dijo

        at? maraming nawawala?

  16.   Dekano dijo

    Magandang post ...

  17.   NOEL IVAN dijo

    MAGANDANG GABI.
    DAHIL SA MGA SPECIFICATIONS NG ISANG PROYEKTO SA PAARALAN, PINAPASOKLAHAN NAKO NGINX SA OPENBSD 5.4 SA ORACLE MV VIRTUALBOX NA MAAARING GUMAMIT NG PHP, MYSQL, SA IBA PANG IBA, NADAMAS NA HINDI AKO NAKAPAGKITA NG IMPORMASYON TUNGKOL SA NABABA SA ITO, SABI SA ITO, ISANG PROBLEMA SA AKIN SA ITAAS.