Creiamo un’applicazione con Laravel

Spread the love

Con questo articolo creiamo da zero una applicazione PHP+Laravel.

Attenzione: presuppongo che stiate lavorando con una distribuzione Linux Ubuntu!

PHP

Ci posizioniamo nella cartella htdocs della installazione del nostro web server (Apache, Ngnix, LiteSpeed,…)

$ composer create-project laravel/laravel middleware 5.2.*

MySQL

mysql > create database middleware;
mysql > grant all privileges on middleware.* to 'middleware' identified by 'secret';

Modifichiamo il file .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=middleware
DB_USERNAME=middleware
DB_PASSWORD=secret

Modifica di /etc/hosts

Occorre definire l’host che andremo ad invocare in modo tale che tcp/ip si connetta a localhost:

$ sudo nano /etc/hosts
127.0.0.1       localhost
127.0.0.1       cms.dev
127.0.1.1       jsbach js
127.0.0.1       api.trackye.com
127.0.0.1       smazing.dev
127.0.0.1       login.dev
127.0.0.1       middleware.dev

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ho aggiunto la riga in grassetto.

Diritti sulle cartelle

$ sudo chown -R www-data middleware/
$ sudo chmod o+x storage/
$ sudo chmod g+w laravel.log
$ sudo chgrp marcob laravel.log #altrimenti non posso lanciare comandi da bash

Fino a qui riesco a fare funzionare l’url http://localhost/middleware/public ma non http://middleware.dev. Per fare questo occorre

Creare un virtualhost

# middleware
<VirtualHost *:80>
        DocumentRoot /var/www/html/middleware/public
        ServerName middleware.dev
        <Directory /var/www/html/middleware/public>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error_middleware.log
        CustomLog ${APACHE_LOG_DIR}/access_middleware.log combined
</VirtualHost>

Riavviare Apache

$ sudo service apache2 restart

Creare il controller Auth per gestire la protezione degli accessi

$ php artisan make:auth
...
Authentication scaffolding generated successfully!

Queste istruzioni creano l’infrastruttura PHP per gestire la login. Però non viene creato nulla sul database, questo va fatto a mano tramite le migrazioni. Facendo riferimento alle due migrazioni che vengono create per default (la tabella users e la tabella password_resets) con artisan possiamo creare le tabelle nel database:

$ php artisan migrate
Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table

Nel database vengono create e due tabelle:

In realtà esiste una terza che è migrations che è i log delle migrazioni che facciamo (nel linguaggio di Laravel una migrazione è uno script PHP che ha come effetto una modifica del database).

Alla fine ecco creata l’applicazione, alla quale accediamo con http://middleware.dev

3 commenti

  1. Buongiorno Marco,
    non riesco a capire perché ad introdurre il comando
    $ sudo nano /etc/hosts
    mi dice sudo: command not found

    Utilizzo windows 10, spero mi possa aiutare.

    Grazie

    1. Uhmm… sudo e nano sono due comandi Linux (il primo consente di eseguire i comando successivo con privilegi di root, il secondo è un piccolo editor in modalità testo).

      Il comando equivalente in Windows è “runas”.

      Tuttavia il cuore della faccenda è il seguente: puoi editare il file /etc/hosts solo con privilegi di amministratore. Per farlo puoi utilizzare un normale editor di testo come Notepad o TextEditor: andando sull’icona del programma e facendo tasto destro e “Esegui come amministratore” si apre il programma in modalità Administrator e puoi aprire (e modificare!) il file hosts.

      Attenzione che file non si trova in /etc/ ma in C:\Windows\system32\drivers\etc\ (almeno in Windows7, magari in Windows10 il percorso è leggeremnte diverso).

      Ciao

    2. non tutte le distribuzioni di Linux hanno il comando sudo. Ad esempio ArchLinux non ce l’ha di default. Bisogna installare quello oppure aprire una sessione di root con il comando “su” e poi procedere.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.