2015-06-20 18:00:02

Laravel 5 su nginx

Šį kart aprašysiu, kaip įsidiegti web serverį Ngnix, Ubuntu OS aplinkoje. Po diegimo galėsite sukurti virtualų hostą ir jame pradėti kurti savo projektą.

Kadangi šis tutorialas yra didesnio tutorialo, kuris bus apie Laravel5 karkasą (framework) dalis, Ngnix diegimo metu paruošime ir virtual host'ą, skirtą Laravel5 paleidimui. 

Kadangi šis tutorialas yra didesnio tutorialo, kuris bus apie Laravel5 karkasą (framework) dalis, Ngnix diegimo metu paruošime ir virtual host'ą, skirtą Laravel5 paleidimui. 

Prerequisites (tai kas turi būti pasiruošta): Įdiegta Ubuntu OS; sudo vartotojo teisės; Sublime arba Nano teksto redaktorius.

Pirmasis mūsų žingsnis bus įsidiegti Ngnix pasinaudojant apt-get (Aptitude) paketų menedžeriu.

Tam turite paleisti šias komandas:

sudo apt-get update 
sudo apt-get install nginx

Konsolėje atsiradus klausimams, spaudžiame Y.

Atkreiptike dėmesį, jog abi šios komandos yra paleidžiamos SuperUser vartotojo teisėmis, t.y. prieš jas parašoma komanda sudo. Diegimo procesui pasibaigus paleidžiame Ngnix serverį:

sudo service nginx start

Įsidėmėkite, jog pagal nutylėjimą ngnix veikimo direktorija (DOCUMEN_ROOT, darbinė/veikianti direktorija) yra: /usr/share/nginx/html.

Šioje direktorijoje paprastai būna patalpinti virtual hostai (keletas domain'ų ar subDomain'ų veikiančių kaip astkiri projektai/svetainės), kuriuose gyvena projektai. Paprastai savo programavimo aplinkoje (darbiniame/naminiame kompiuteryje)DOCUMENT_ROOT patartina laikyti kiek patogesnėje vietoje. Tačiau šį kartą NgnixDOCUMEN_ROOT perkelsime šalia Apache darbinių failų, t.y.: /var/www/.

Virtual hostai yra naudingi tuomet, kai viename serveryje reikia patalpinti keletą skirtingų projektų, su skirtingais domain vardais. Shared hosting paslauga yra teikiama, kiekvienam vartotojui suteikus po virtual hos'tą.

Kadangi žinome, jog darysime Laravel5 karkasu paremtą projektą jam sukuriame virtual host'ą su associatyviu padainimu laravel.dev:

sudo mkdir -p /var/www/nginx/laravel.dev/html/public

Gera praktika yra visus lokalius (darbinius/development) virtual host'us pavadinti su *.dev galūne.

Sukūrus direktoriją, kurioje bus virtualus hostas, reikia suteikti prieigos teises vartotojui kurio vardu veikia Ngnix'as. Tai reikalinga tam, kad web-serveris (Ngnix galėtų paleisti php failus, o šie galėtų įrašyti savo output'ą, sakykim kuriant Laravel5 cache ar rašant logus:

sudo chown -R www-data:www-data  /var/www/nginx/laravel.dev/html 
sudo chmod -R 755 /var/www/nginx

Toliau sukuriame bandomajį titulinį puslapį, pasinaudodami Sublime teksto redaktoriumi:

sudo subl /var/www/nginx/laravel.dev/html/public/index.php

arba, su nano, jei neturi Sublime:

sudo nano /var/www/nginx/laravel.dev/html/public/index.php

CTR+X uždaro nano redaktorių,Y ir ENTER išsaugos pakeitimus. Atsidariusio tekstinio redaktoriaus viduje įrašome:


echo 'Sveikinu';
phpinfo();

?>

 

Šis failo turinys leis mums įsitikinti ar teisingai pasileidžia mūsų virtual host'as ir ar gerai veikia PHP.

Toliau turime sukurti Server Block failus, iš esmės jie atsakingi už mūsų virtual host'us. Užklausai pasiekus serverį, jam yra pateikiamas hostname, šiuo atveju tai bus laravel.dev. Pagal jį serveris nukreipia užklausą į programinius projekto failus.

 

Nukopijuojame standartinį failą:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/laravel.dev

Atsidarome, jį redagavimui (savo virtual host'o redagavimui): 

sudo subl /etc/nginx/sites-available/laravel.dev

 arba 

sudo nano /etc/nginx/sites-available/laravel.dev

 

Atliekame pakeitimus, kad failas atordytų šit kaip:


server { 
listen 80;
listen [::]:80;

root /var/www/nginx/laravel.dev/html/public;
index index.html index.htm index.php;

error_log /var/www/nginx/laravel.dev/html/nginx_project_error.log warn;
access_log /var/www/nginx/laravel.dev/html/nginx_project_access.log;

# Make site accessible from http://localhost/
server_name laravel.dev;

location / {
try_files $uri $uri/ /index.php?$query_string; #URL rewrite taisykles
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

 

Dabar savo vhost'ą turime įjungti. Tam mes jį perkelsime (sukursime nuorodą į jį) į sites-enabled direktoriją:

sudo ln -s /etc/nginx/sites-available/laravel.dev /etc/nginx/sites-enabled/

Komanda ln -s sukuria simbolinį linką (nuorodą ar kaip windows OS'e tai vadinama shrotcut). Direktorijoje: "/etc/nginx/sites-enabled/" gyvena tų virtual hostų konfigai, kurie yra įjungti serveryje.

Kadangi šiame serveryje planuojame turėti kelis virtual hostus, pašalinkime default configą. Tai leis išvengti bereikalingų klaidų pranešimų. Visi mūsų configai bus surenkami iš jau minėtos "/etc/nginx/sites-enabled/" direktorijos. 

sudo rm /etc/nginx/sites-enabled/default

 
Dabar turime sukonfigūruoti patį Ngnix'ą:

sudo nano /etc/nginx/nginx.conf

Pakeičiameserver_names_hash_bucket_size ir listen.allowed_clients reikšmes. Po pakeitimų šios eilutės turėtų atrodyti šit kaip: server_names_hash_bucket_size 64; ir listen.allowed_clients = 127.0.0.1

 

Toliau, įsidiegiame php5 kuris veiks FPM režimu (suderinamu su Ngnix): 

sudo apt-get install php5-fpm


Pakonfigūruojame PHP-FPM'o konfigūracinį INI:

sudo subl /etc/php5/fpm/php.ini

arba 

sudo nano /etc/php5/fpm/php.ini 

Pakeičiame cgi.fix_pathinfo reikšmę, pakeičiant jo reikšmę iš 1 į 0: cgi.fix_pathinfo=0

sudo subl /etc/php5/fpm/pool.d/www.conf

arba 

sudo nano /etc/php5/fpm/pool.d/www.conf

pakeičiame listen reikšmę: listen = /var/run/php5-fpm.sock


Perkrauname PHP-FPM procesą:

sudo service php5-fpm restart

Perkrauname Nginx'ą:

sudo service nginx restart

Papildome savo hosts failą nuoroda į naujai sukurtą virtualų host'ą:

sudo nano /etc/hosts 

pridedame eilutę: 127.0.0.1 laravel.dev 

  • Host faile yra saugomi (sakykime įhardcodinami) IP adresų ir serverio vardų (hostnames) sąryšiai.
  • Į failą  /etc/hosts  yra kreipiamasi kaskar bandant atidaryti betkokį resursą internete, jei į jį yra kreipiamasi per DNS įrašą (domain name).
  • Jei į failą yrašytumėte "delfi.lt laravel.dev", kaskart vietoj delf.lt Jums atidarytų laravel.dev.
  • Neblogas pokštas būtų savo kolegai į failą yrašyti: www.delfi.lt www.geras.porno.xxx


Pridėjus šią eilutę į hosts failą ir interneto naršyklės adreso laukelyje yrašę laravel.dev jūs būsite nukreipti į savo lokalų web serverį, kuris šiuo atveju yra Ngnix, o jo konfigai ( /etc/nginx/sites-enabled/laravel.dev) nukreips į virtualų hostą, kuris šiuo atveju bus /var/www/nginx/laravel.dev/html/public. Tokių įrašų hosts faile gali būti ir daugiau.


Jei kažkas neveikia, atsiranda kitų nesklandumų, ar tiesiog turite pastabų, nesidrovėkite, rašykite į komentarus.

Trupiniai

Nuo Ubuntu 14.04Nginx serveris pagal nutylėjimą pasileidžia kaskart tik įsikrovus operracinei sistemai.

 

Jei savo kompiuteryje turite veikiantį Apache web serverį, prieš paleidžiant Ngnix jį sustabdykite (sudo service apache2 stop) (kaip paleisti abu serverius vienu metu perskaityti galite čia http://stackoverflow.com/questions/14091824/apache-and-nginx-both-on-port-80 ).


Jei tęsite šį tutorialą ir kursite demo projektą su Laravel5 jums reikės susidiegti mcrypt papildą. 

Jei neturime, susidiegiame, paleisdami komandą: 

sudo php5enmod mcrypt