Skip to content

Za početak:

git clone <source> ~/projekat
cd ~/projekat
composer update
git clone https://github.com/laravel/homestead.gt ~/Homestead
cd ~/Homestead
git checkout v7.4.2
bash init.sh

Zatim editujemo ~/Homestead/Homestead.yaml u nešto poput ovog:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/projekat
      to: /home/vagrant/code

sites:
    - map: projekat.local
      to: /home/vagrant/code/public

databases:
    - homestead

Nakon toga je potrebno dodati zapis u datoteku /etc/hosts:

192.168.10.10 projekat.local

I za kraj iz ~/Homestead direktorijuma pokrećemo virtuelnu mašinu:

vagrant up

October CMS možemo instalirati pomoću instalera, što je i preporučljiv način, a možemo i preko Kompozera:

composer create-project october/october projekat
cd projekat
php artisan october:install

Ako instalaciju vršimo preko Kompozera, onda ćemo u datoteci config/cms.php promenljivu disableCoreUpdates da postavimo na true.

Pošto ja imam običaj da projekte držim u svom home direktorijumu i da pravim simboličke linkove u /srv/http/, moraćemo da podesimo dozvole. Kao prvo i osnovno je da sebe dodam u grupu http. Nakon toga mogu ovako da podesim dozvole i da to sve manje-više radi kako treba 🙂

chown -R benke:http projekat/
chown -R http:http projekat/storage/
chmod -R ug+w projekat/

Na ovaj način mogu da menjam kod i iz Atoma i iz October CMS integrisanog editora i da nemam problema sa snimanjem dokumenata.

U principu, sve što je potrebno da se uradi da bi se optimizovalo učitavanje sajta se nalazi na Guglovoj stranici PageSpeed Insights ali evo u kratkim crtama šta je sve to:

Slike treba kompresovati kako bi se smanjila količina bajtova. Smanjivanje količine bajtova (informacija o slici) vodi ka degradaciji kvaliteta pa stoga treba naći kompromis između veličine fajla i kvaliteta prikaza. Sajt Optimizilla vam može pomoći oko optimizacije slika. Generalno gledano, JPEG fajlovi su manji od PNG fajlova ali samo ako imamo sliku sa puno nijansi boja i detalja (fotografiju); ako slika više naginje ka crtežu i ima manji broj velikih jednobojnih površina, onda je PNG bolje rešenje.

gzip je format kompresije fajlova koji podržavaju svi moderni brauzeri i u principu se svodi na to da server, kada brauzeru šalje podatke, šalje ih u kompresovanom obliku a onda ih brauzer u letu dekompresuje i prikazuje korisniku bez da ovaj išta primeti sem naravno toga da se stranice brže učitavaju 🙂 Ukoliko veb hosting podržava gzip kompresiju, treba je uključiti kako bi se ubrzalo učitavanje sajta.

Minifikacijom se uklanjaju nepotrebni znaci poput praznina i novih redova iz HTML, CSS i JS koda čime se dobijaju manji fajlovi te se stranice opet brže učitavaju.

Keširanje je proces kojim se fajlovi u određenom periodu čuvaju na klijenstkoj strani i ne dovlače uvek iznova sa servera čime se takođe pozitivno utiče na brže učitavanje sajta.

CDN je mreža servera koja omogućuje krajnjem korisniku da bude bliže vašem sajtu bez obzira u kom se delu sveta on nalazio.

Odlaganje učitavanje sadržaja koji se ne vidi odmah po otvaranju sajta (above the fold) kao i skriptova koji nisu od presudne važnosti.

freeCodecamp

Pagespeed score

  • uključiti spoljne veze u kompresiju stranice
  • minifikovati skriptove
  • smanjiti broj redirekcija
  • optimizovati slike uključujući i pozivanje slika sa spoljnih veza
  • odložiti učitavanje skriptova

YSlow score

  • dodati u zaglavlju kada ističe fajl
  • smanjiti broj HTTP zahteva ka spoljnim skriptovima
  • komprimovati komponente pomoću gzip
  • koristiti CDN
  • minifikovati skriptove
  • izbegavati preusmeravanje URL adresa
  • izbegavati slanje kolačića za statične sadržaje (slike)
  • smanjiti DNS potraživanja (komponente koje se nalaze na više domena)

Podizanje veb servera ako imamo instaliran Pajton

Folder iz kojeg je pokrenut server predstavlja document root. Dakle, prvo je potrebno komandom cd otići do stranica koje želimo da otvorimo u brauzeru. Komandom

python --version

proveravamo koja verzija Pajtone je instalirana. Ako imamo Pajton verzije 2, server se pokreće komandom

python -m SimpleHTTPServer

a ako imamo Pajton verzije 3, onda koristimo komandu

python -m http.server

Nakon što se server pokrene, u brauzeru otvaramo adresu http://localhost:8000 i dobijamo pristup stranicama iz foldera iz kojeg smo pokrenuli server 🙂

Podizanje veb servera ako imamo instaliran npm

Slično kao u prethodnom primeru, prvo pređemo u folder u kojem nam se nalaze stranice koje želimo da otvorimo u brauzeru. Zatim komandom

npm install live-server

instaliramo server a pokrećemo ga sa

./node_modules/.bin/live-server

Nakon što se server pokrene, u brauzeru otvaramo adresu http://127.0.0.1:8080 i dobijamo pristup stranicama iz foldera iz kojeg smo pokrenuli server. Bitna razlika u odnosu na Pajton server je u tome što se ovde prikaz u brauzeru automatski osvežava nakon svake promene u fajlovima što može da ubrza razvoj naše aplikacije.

Dokumentacija: www.npmjs.com/package/live-server

Laravel PHP server

Ako radimo projekat u Laravelu, možemo iz osnovnog direktorijuma projekta da pokrenemo server komandom

php artisan serve

Adresa je http://127.0.0.1:8000.

1. 404.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>404</title>
    <link rel="icon" href="/favicon.png" type="image/png"/>
    <link rel="apple-touch-icon" href="/favicon.png"/>
    <meta name="keywords" content=""/>
    <meta name="description" content=""/>
    <meta name="robots" content="noindex,nofollow">
</head>
<body
style="margin:0; padding:0; height:100%; width:100%; background:#EAE9E7 url(/images/404.jpg) no-repeat fixed 50% 50%; background-size: contain;">
<div style="width:100%; height:100%; position:fixed; left:0; top:0; overflow:hidden;" onclick='window.location.replace("/index.php")'></div>
</body>
</html>

2. .htaccess

ErrorDocument 404 /404.php

3. httpd.conf

<Directory "/srv/http/projekat">
    AllowOverride All
</Directory>

1. dodati sebe u http grupu

# gpasswd -a username http

2. izlogovati se pa ponovo ulogovati 🙂

3. napravi se simbolički link do projekta:

# ln -sT /home/username/projects/projekat/public_html /srv/http/projekat

4. grupa za /home/username se podesi na http, doda se x permisija za http grupu

# ls -l /home/
 drwx--x--- 112 username http 4096 Jul 7 22:26 username

5. prođe se kroz čitavo stablo /home/username/projects/projekat/public_html kako bi se proverilo da li Apache može da pročita sve fajlove

6. dodati w dozvolu nad fajlovima i direktorijumima u koje Apache treba da može piše

7. setgid?

https://askubuntu.com/questions/46331/how-to-avoid-using-sudo-when-working-in-var-www/46371#46371

d=/home/username/projects/projekat/public_html; while test $d != '/'; do ls -ld $d; d=`dirname $d`; done