Kako instalirati PHP 7.x, NGINX 1.9.x, MySQL & Laravel 5.x

1. korak – nabavite server

Da bi vaš rad bio vidljiv i drugima potreban vam je kvalitetan hosting. Danas je izbor prilično širok teško je reći šta je najbolje AmazonAzureLinode , ServerHub , DigitalOcean .
Moj favorit poslednih 2-3 godine je DigitalOcean, ili je prosto u pitanju navika.
Naravno moguće je podići server i u kućnoj varijanti ukoliko imate uslove to.

2. korak – dodajte php7 i NGINX 1.9.x repozitorijume

Ukoliko vam nedostaju repoizitorijumi, što je moguće ako imate neku minimalističku disribuciju, moraćete je ručno dodati
add-apt-repository ppa:ondrej/php
Pokrenite sledeće komande, kao root, da bi ste instalirali PHP7 i nginx 1.9 u dodajte repozitorijume u vaš source.list. instalacije ubuntu-a

1. korak – nabavite server

Da bi vaš rad bio vidljiv i drugima potreban vam je kvalitetan hosting. Danas je izbor prilično širok teško je reći šta je najbolje AmazonAzureLinode , ServerHub , DigitalOcean .
Moj favorit poslednih 2-3 godine je DigitalOcean, ili je prosto u pitanju navika.
Naravno moguće je podići server i u kućnoj varijanti ukoliko imate uslove to.

2. korak – dodajte php7 i NGINX 1.9.x repozitorijume

Ukoliko vam nedostaju repoizitorijumi, što je moguće ako imate neku minimalističku disribuciju, moraćete je ručno dodati
add-apt-repository ppa:ondrej/php
Pokrenite sledeće komande, kao root, da bi ste instalirali PHP7 i nginx 1.9 u dodajte repozitorijume u vaš source.list. instalacije ubuntu-a

apt-get install python-software-properties

echo 'deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx' >> /etc/apt/sources.list
echo 'deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx' >> /etc/apt/sources.list
wget -q -O- http://nginx.org/keys/nginx_signing.key | sudo apt-key add -


apt-get update
apt-get -y install nginx php7.0 php7.0-mysql php7.0-fpm php7.0-mbstring php7.0-xml php7.0-curl

Nakon svega ovoga potrebno je da konfigurišete PHP 7 i Nginx 1.9.x da rade zajedno i naravno da pokrenu Laravel 5.2. Nije neka muka.

3. korak – konfigurisanje NGINX

Pametniji od mene sugerišu da default konfiguracija nginx nije baš najsrećnije rešenje, pa predlažu njenu izmenu. Pravimo kopiju default konfiguracije pre izmene.
S obzirom da nisam baš siguran da je ovo najbolje rešenje moj predlog je da samo pogledate originalnu konfiguraciju
cat /etc/nginx/nginx.conf uočite razlike i ne radite nikakve izmene.

mv /etc/nginx/conf.d/default.conf /etc/nginx/default.conf-bkup
cat < /etc/nginx/conf.d/default.conf
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    root /var/www/html/public;
    index index.php index.html index.htm;

    server_name localhost;
    charset   utf-8;

    gzip on;
    gzip_vary on;
    gzip_disable "msie6";
    gzip_comp_level 6;
    gzip_min_length 1100;
    gzip_buffers 16 8k;
    gzip_proxied any;
    gzip_types
        text/plain
        text/css
        text/js
        text/xml
        text/javascript
        application/javascript
        application/x-javascript
        application/json
        application/xml
        application/xml+rss;

    location / {
        try_files \$uri \$uri/ /index.php?\$query_string;
    }

    location ~ \.php\$ {
        try_files \$uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)\$;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc|svg|woff|woff2|ttf)\$ {
      expires 1M;
      access_log off;
      add_header Cache-Control "public";
    }

    location ~* \.(?:css|js)\$ {
      expires 7d;
      access_log off;
      add_header Cache-Control "public";
    }

    location ~ /\.ht {
        deny  all;
    }

}
EOF

4. korak konfigurisanje PHP 7

Za FPM (FastCGI Process Manager) potreban nam je fix_pathinfo, dodajemo ga u /etc/php7.0/fpm/php.ini
echo ‘cgi.fix_pathinfo=0’ >> /etc/php/7.0/fpm/php.ini
restartujemo servise

/etc/init.d/nginx restart
/etc/init.d/php7.0-fpm restart 

To je sve za vaš osnovni web server, spreman za Laravel 5.2. Nakon restarta možemo krenuti za instalacijom MySQL-a.

5. korak – instalacija MySQL

Pokrenite sledeće komande i postavite osnove parametre. Ovaj korak nije neophodan ukoliko nećete raditi sa bazom.

apt-get -y install mysql-client mysql-server
mysql_secure_installation

6. korak – instalacija composera i laravela

Ponekada se u distribuciji već nalazi instaliran composer i naizgled radi korektno. Međutim to ne biva uvek dobro stoga je moj predlog da tako instaliran composer sklonite a zatim downoad-ujete i instalirate ručno.

sudo apt-get remove --auto-remove composer

Nakon toga sledi download i instalacija.

cd ~
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
cd /var/www/html
rm -f index.nginx-debian.html 
composer create-project laravel/laravel .

Zatim podešavamo dozvole

chown -R www-data:www-data /var/www/html
chmod -R 775 /var/www/html/storage

To je sve! Laravel je spreman da ide na default lokaciju /var/www/html, prosto folder kopirajte. Proverite u browseru vaš server i ako ste sve uradili korektno videćete

Zaključak

To je sve što je potrebno za novu instalaciju servera koja radi sa php7, nginx, 1.9.x, MySQL i Laravel 5.2.
Potrošite nešto vremena da proučite nginx i fpm konfiguraciju. U zavisti od toga koje će se sve biblioteke koristi u aplikaciji potrebno je dodati na ovu konfiguraciju još neke pakete ali za osnovni rad ovo je dovoljno. Više detalja i pojedinosti u nekom drugom članku.
Za one koje uvek sede u prvoj klupi. 🙂
http://php.net/
https://www.nginx.com/
http://www.mysql.com/
https://laravel.com/