Skip to content

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.

Laravel je PHP frejmvork baziran na MVC arhitekturi. Slede beleške iz tutorijala koje sam nedavno prošao 🙂

Instalacija

Laravel instaliramo pomoću Kompozera:

composer create-project laravel/laravel projekat

Pošto ja ne držim projekte u /srv/http direktorijumu već pravim simboličke linkove, treba obezbediti Apache-u dozvolu za pisanje u određene direktorijume:

storage/app/public
storage/logs
storage/framework/views
storage/framework/sessions
bootstrap/cache

To je najlakše uraditi komandama

chown :http putanja
chmod g+w putanja

kao root.

Kada podesimo virtuelni hosting i lokalni domen, potrebno je da u vhosts fajlu dodamo opciju AllowOverride All za naš document root, u protivnom Mod rewrite neće raditi kako treba.

Struktura fajlova

app/*.phpmodeli
app/Http/Controllerskontroleri
app/Http/Controllers/Controller.phpcore controller that extends the base controller
resources/viewsprikazi - blade template system
routesrute - web.php main route file
configconfig files
.envdatabase credentials
database/migrationsmigracije
publiccss js etc

Rute

routes/web.php je glavni ruter. Spisak ruta može da se vidi sa

php artisan route:list

Po pravilu ruta ne treba da vraća prikaz (view) već je potrebno kreirati funkciju kontrolera koja će da vrati prikaz. Primer:

Route::get('/', 'PagesController@index');//index method of Pages controller
Route::get('/about', 'PagesController@about');
Route::get('/services', 'PagesController@services');

Kontroleri

Kontroleri se nalaze u app/Http/Controllers i kreiramo ih sa

php artisan make:controller MessagesController

Nazivi kontrolera su uvek u pluralu ("Messages" u gornjem primeru). Ako na kraju komande dodamo --resource, dobijamo i sledeće (CRUD) metode:

  • index()
  • create()
  • store(Request $request)
  • show($id)
  • edit($id)
  • update(Request $request, $id)
  • destroy($id)

Modeli

Modeli se smeštaju u app direktorijum. Kreiranje modela:

php artisan make:model Message -m

Nazivi modela su za razliku od kontrolera u singularu ("Message" u gornjem primeru). Opcija -m kreira migracione fajlove u database/migrations. Za kreiranje tabela ćemo koristiti

php artisan migrate

a za interaktivni rad sa bazom možemo da pokrenemo

php artisan tinker

Iz Tinkera se izlazi sa quit. Laravel koristi Eloquent ORM - "ActiveRecord implementation for working with databases".

Podaci o konekciji sa bazom se nalaze u .env fajlu a da bismo uopšte mogli da koristimo npr. MySQL bazu, potrebno je da u php.ini uključimo pdo_mysqli.so.

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