Hur man installerar en webbserver med Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [2: a del: Nginx]

För en tid sedan Jag berättade om denna serie handledning, om hur man installerar och konfigurerar en server för webbhotell med hög efterfrågan. Den här artikeln handlar om att installera och konfigurera Nginx:

Nginx:

Vi berättade redan om Nginx tidigare i artikeln Nginx: Ett intressant alternativ till Apache, där berättade vi att det är en webbserver som Apache, LightHttpd eller Cherokee, men jämfört med Apache sticker den ut för sin prestanda och låga hårdvaruförbrukning, just därför är det många stora sajter som Facebook, MyOpera.com, DropBox eller till och med WordPress .com använder Nginx istället för Apache. I Linux-världen DesdeLinux Det är inte den enda som använder Nginx, så vitt jag vet använder emsLinux och MuyLinux det också :)

Min personliga erfarenhet av Nginx går tillbaka flera år, då jag av nöd började leta efter lätta alternativ till Apache. Vid den tiden gick Nginx för version 0.6 och dess kompatibilitet med webbplatser med hög efterfrågan i PHP var inte den mest optimala, men idag från version 0.9 och framåt (v1.2.1 tillgänglig på Debian Stable, v1.4.2 tillgänglig på ArchLinux) har förbättrats mycket, så att med en korrekt konfiguration och förening av Nginx + PHP kommer allt att fungera som en charm.

I denna handledningsserie Jag kommer att använda Nginx version 1.2.1-2.2, tillgänglig i Debian Stable repos (Wheezy).

Denna handledning handlar endast och uteslutande om Nginx, inte om Nginx + PHP, föreningen av Nginx + PHP samt dess optimering eller nödvändiga konfiguration kommer att behandlas i nästa handledning

1. Installation:

Vi börjar med det första, installera Nginx från våra förråd.

Alla kommandon som kommer att köras körs med rootbehörigheter, antingen genom att sätta sudo i början av varje rad eller genom att vara inloggad som root

Om du på din server använder en distribution som Debian, Ubuntu eller något derivat i terminalen måste du ange följande och trycka på ange :

aptitude install nginx

aptitude är inte installerat som standard i Ubuntu, men jag rekommenderar att du installerar det och använder det istället för apt-get, eftersom aptitude gör bättre hantering av beroenden vid vissa tillfällen

Om du använder en annan distribution på din server som CentOS, Red Hat, Fedora, installerar du helt enkelt paketet: nginx från det officiella arkivet

Personligen rekommenderar jag inte något derivat av Debian, inte ens Ubuntu för servrar, under åren har mina erfarenheter inte varit helt tillfredsställande. Mitt första val för serveroperativsystem är Debian, då skulle jag tänka på CentOS, äntligen lite BSD

2. Konfiguration:

Vi har redan Nginx installerat, men vi måste uppenbarligen konfigurera det. Jag har förberett en komprimerad fil på FTP som innehåller alla konfigurationer som används på servrarna. DesdeLinux, både för PHP, Nginx, etc. Låt oss ladda ner och packa upp den filen:

cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

Detta skapar en mapp som heter nginx-spawn-fastcgi, från den behöver vi två filer för ren Nginx (det vill säga utan att länka den till PHP):

  • nginx.conf - »Huvudkonfigurationsfil för Nginx (vi kommer att prata om dess innehåll senare)
  • index.html - »En enkel html-fil som vi använder för att se om Nginx verkligen fungerar för oss i sin mest grundläggande form
  • mywebsite.net - »Konfigurationsfil för en enkel webbplats, en VHost (Virtual Host) som konfigurerar åtkomst till tidigare html

Låt oss först flytta till Nginx-inställningsmappen:

cd /etc/nginx/

Låt oss sedan ta bort standardkonfigurationen och lägga vår egen:

mv nginx.conf nginx.conf_BK && cp ~/nginx-spawn-fastcgi/nginx.conf ./

Detta, som jag sa, är den viktigaste Nginx-konfigurationsfilen, i den har jag redan definierat följande:

användar www-data; arbetare_processer 4; pid /var/run/nginx.pid;

Användaråtkomst till filsystemet (som nginx kommer åt överallt), antal processer att arbeta med och även PID (nginx process-id).

Vi har också ett litet block som heter händelser (inställningar för händelser) som innehåller en rad som anger det maximala antalet anslutningar som tillåts per händelse. Nedan finns blocket som heter http.

Detta http-block är det som innehåller nästan allt som är relaterat till värd, åtminstone många saker som kommer att intressera dig. Till exempel den maximala tiden att leva eller vänta (timeout), där våra allmänna loggar kommer att vara (access.log och error.log), datakomprimering med gzip, samt andra regler som kan vara användbara i framtiden.

När huvudkonfigurationsfilen är på plats, låt oss kopiera filen från vår VHost till den mapp som är tillgänglig för webbplatser

cp ~/nginx-spawn-fastcgi/mywebsite.net sites-available/

Dessutom måste vi skapa en symbolisk länk från den här filen till den webbplatsaktiverade mappen.

ln -s /etc/nginx/sites-available/mywebsite.net /etc/nginx/sites-enabled/

Jag förklarar nyttan av att ha webbplats-aktiverade och webbplatser tillgängliga.

De kommer att hitta stunder när de måste ha flera vhost-filer redo och konfigurerade, för på den servern kommer de att sätta på nätet, säg fem webbplatser. Det händer dock att det ännu inte är dags att aktivera 5 av dessa 2 värdar, men de måste ha filerna redo så att de vid behov är online på kortast möjliga tid. Du kan placera så många vhosts som du vill i webbplatser-tillgängliga (webbplatser-tillgängliga), eftersom de som Nginx läser för att sätta online är bara de för webbplatser-aktiverade (webbplatser-aktiverade), det skulle också fungera i motsatt riktning, om du vill sätta offline ( tillfälligt till exempel) en webbplats, det finns inget behov av att radera filer från din server (filer som vi kommer att behöva vid en annan tidpunkt), vi tar helt enkelt bort den symboliska länken för webbplatser-aktiverade och det är det. Nyttan med att ha symboliska länkar och inte bara kopiera filen från en mapp till en annan är att när vi vill redigera en vhost spelar det ingen roll om vi redigerar den som är aktiverad eller tillgänglig, i slutändan är den samma
arkiv.

Filen mywebsite.net som jag sa tidigare, en vhost som fungerar som ett exempel, det vill säga och med andra ord måste vi ändra mywebsite.net och skapa våra konfigurationer.

Vi måste ändra följande:

  • access_log (rad 3): Detta är sökvägen till åtkomstloggfilen till den här webbplatsen
  • error_log (rad 4): Detta kommer att vara sökvägen till felloggfilen till den här webbplatsen
  • server_name (rad 5): URL, domän som finns i den mappen, till exempel om det var forumet DesdeLinux det skulle vara: forum server_name.desdelinux. Net
  • root (rad 6): Sökvägen till mappen där html-filerna finns, låt oss lämna den här i / var / www / eftersom det bara kommer att vara ett test
Uppenbarligen måste de peka i sina DNS-poster från sin värdleverantör (med hjälp av CPanel eller ett annat verktyg) att domänen eller underdomänen som deklareras i servernamn finns på IP-adressen för den här servern som de konfigurerar. Det vill säga, i DNS där de skapar underdomäner för sin domän, måste de deklarera att domänen eller underdomänen som de har lagt i rad 5 finns på denna server (denna server = IP-adressen till servern i fråga)

Nu behöver vi bara kopiera html-filen till den mapp som vi definierar i vår VHost-fil / var / www /:

mkdir /var/www/ && cp ~/nginx-spawn-fastcgi/index.html /var/www/

Sedan startar vi om Nginx och det är det:

service nginx restart

Och voila, något som detta kommer att visas:

nginx-pure-test-site-html

Jag påminner dig om att vi arbetar först med Nginx för HTML, utan att ha PHP-stöd, denna installation av PHP och länka den till Nginx kommer att vara innehållet i nästa handledning (om några dagar lovar jag).

Hur som helst, detta är Nginx installations- och konfigurationshandledning så att det fungerar rent, det vill säga en HTML-webbplats, jag hoppas att det kommer att vara av intresse för dig.

Jag kommer att klargöra att ja, det finns fortfarande bästa praxis som kan användas, men låt oss vänta med att avsluta denna serie handledning och sedan utvärderar vi det slutliga resultatet av arbetet

hälsningar


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   nelson sade

    Tack, mycket hjälpsam!

    1.    KZKG ^ Gaara sade

      Tack för din kommentar

  2.   djägare sade

    I backports finns nginx 1.4 ..

    1.    KZKG ^ Gaara sade

      Ja, men på en server i produktion använder jag inget av det 😀

      1.    djägare sade

        Med "it" menar du den senaste stabila och testade versionen som släpptes av nginx, du låter det låta som att det är apt-pinning från sid. ~ _ ~

        1.    KZKG ^ Gaara sade

          Åh kom igen, är det ... på servrarna har jag aldrig gillat att använda andra repor, eller backports eller något liknande 🙂

      2.    Raphael Castro sade

        Alltid stabil på servrar fick jag veta det för år sedan.

        1.    djägare sade

          Nginx 1.4 är stabil sedan april förra året, i backports är det 1.4.1-3.

          2013-04-24

          Den stabila nginx-1.4.0-versionen har släppts och innehåller många nya funktioner som utvecklats i 1.3.x-grenen - stöd för proxying av WebSocket-anslutningar, OCSP-häftning, SPDY-modul, gunzip-filter och mer.

          http://nginx.org/en/CHANGES-1.4

          1.    Raphael Castro sade

            Du har rätt i vad du säger, min hatt är av.

  3.   chinoloco sade

    Tack för att du delar, jag genomför för närvarande ditt äldsta inlägg.
    Jag ska fylla dig med frågor XD

    1.    KZKG ^ Gaara sade

      Tack för att du läste 🙂
      Om du har några frågor eller funderingar, vet du, vi är här för att hjälpa dig, det finns forumet.desdelinux.net där vi tillsammans ska försöka ge dig den bästa lösningen

      hälsningar

      1.    Gibran barrera sade

        Jag har en fråga jag har LAMP [Linux (Debian Wheezy), Apache, PHP och MySQL] på min server för WordPress och Owncloud, hur migrerar jag till Ngnix, en annan fråga är vilken skillnad det finns mellan Ngnix och Lighttpd.

        1.    KZKG ^ Gaara sade

          Den största komplikationen eller svårigheten att migrera från Apache till Nginx är konfigurationerna för varje webbplats, det vill säga specifikt .htaccess du använder.

          .Htaccess är den mest komplexa när du byter till Nginx, eftersom de är olika konfigurationer som du måste sätta i Nginx VHost.

          Om LightHTTPd och Nginx ... Jag vet inte, jag använde LightHTTPd bara en gång för många år sedan, för närvarande har jag ingen aning om hur dess utveckling går, speciellt med PHP.

  4.   eliotime3000 sade

    NGINX ser ganska enkelt ut jämfört med Apache. Väntar på nästa avsnitt för att kunna komplettera det med PHP

  5.   Mauricio sade

    Jag väntar på tipsen för att optimera mer till nginx 😀

    Förresten Gaara, du kan inkludera i din nästa handledning hur man implementerar SSL-stöd.

    Hälsningar.

    1.    KZKG ^ Gaara sade

      Tipsen som kommer är faktiskt att optimera PHP-bearbetning, sajtcache, jag kan ge exemplet på konfigurationen vi använder i DesdeLinux för Nginx+Wordpress+W3_Total_Cache :)

  6.   Kaiser sade

    Tack bra bidrag.

  7.   Apr4xas sade

    Och guiden för archlinux när? xD

    1.    KZKG ^ Gaara sade

      I Arch har det varit väldigt lika, bara namnen på paketen ändras men ... conf är nästan identiskt

      Men vem har en produktionsserver med Arch? 😀

  8.   Apr4xas sade

    Hej där,

    Det är jag igen xD ...

    Jag följde dina steg med att applicera dem på en maskin med archlinux och jag har följande problem:

    [abr4xas@Genius www]$ systemctl status nginx.service
    nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
    Active: failed (Result: exit-code) since vie 2013-11-15 20:11:35 VET; 1min 13s ago
    Process: 1258 ExecStartPre=/usr/bin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)

    Några förslag 😀

  9.   rhiz sade

    Jo ... xox, jag vill bara ha en intern server, det vill säga jag vill bara byta ut xampp, ska jag göra allt detta?

    1.    KZKG ^ Gaara sade

      Om du vill kan du implementera detta (vilket jag upprepar, det är vad DL arbetar med), faktiskt min virtuella server (som jag använder för utveckling och testning) Jag har gjort det med samma sak som jag förklarar.

      Det vill säga, du kan antingen ta bort XAMPP och sätta den här varianten så fungerar det bra, eller om du vill lämna XAMPP ... kommer det fortfarande att fungera för dig.

      Den positiva punkten med att använda detta som jag visar är den mycket låga förbrukningen av hårdvara jämfört med Apache, men på din persondator, som inte är en hög efterfrågan värd, långt ifrån ... om XAMPP fungerar bra för dig, jag kan inte se varför ta bort det

  10.   Isaac sade

    Jag har redan min Linux-server igång (Debian, Nginx, MySQL och PHP). Jag hade svårt att få PHP att arbeta med Nginx eftersom jag var van vid den enkla Apache-webbservern.

    Min fråga är: Vet någon hur jag kan peka en testdomän som jag har köpt till min server? Jag skulle vilja prova min .com-domän för att se hur den fungerar, men jag har inte någon aning om hur man gör det, för jag har alltid använt en NOIP-adress för att komma åt den med noip DUC.

    Jag hoppas att någon kan hjälpa mig, tack!

  11.   Abraham sade

    Jag får det här när jag försöker ansluta till din ftp:

    cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

    HTTP-begäran skickad, väntar på svar ... 404 Hittades inte
    2015-11-23 17:46:30 FEL 404: Hittades inte.

  12.   Ryan sade

    Jag har min CentOS-server igång (Gunicorn, Nginx, PHP) det tog mig mycket arbete att få dem att fungera men poängen där jag fastnade är att den webbsida jag vill starta behöver konfigurera domänleverantören i det här fallet Go Daddy, Så vid den här tiden vet jag inte hur jag ska fortsätta.

  13.   Ricardo sade

    Kan du dela konfigurationsfilerna med mig eftersom jag inte kan ladda ner dem snälla