Creative Commons License
This work is licensed under a
Creative Commons
Attribution-Share Alike 3.0
Unported License.

Master Symfony2 fundamentals

Be trained by SensioLabs experts (2 to 6 day sessions -- French or English).
trainings.sensiolabs.com

Symfony hosting done right

ServerGrove, outstanding support at the right price for your Symfony hosting needs.
servergrove.com

Discover the SensioLabs Support

Access to the SensioLabs Competency Center for an exclusive and tailor-made support on Symfony
sensiolabs.com

Installare e configurare Symfony

Installare e configurare Symfony

Lo scopo di questo capitolo è quello di ottenere un'applicazione funzionante basata su Symfony. Fortunatamente, Symfony offre delle "distribuzioni", che sono progetti Symfony di partenza funzionanti, che possono essere scaricati per iniziare immediatamente a sviluppare.

Tip

Se si stanno cercando le istruzioni per creare un nuovo progetto e memorizzarlo con un sistema di versionamento, si veda Usare un controllo di sorgenti.

Scaricare una distribuzione Symfony2

Tip

Verificare innanzitutto di avere un server web (come Apache) installato e funzionante con PHP 5.3.8 o successivi. Per ulteriori informazioni sui requisiti di Symfony2, si veda il riferimento sui requisiti.

Symfony2 ha dei pacchetti con delle "distribuzioni", che sono applicazioni funzionanti che includono le librerie del nucleo di Symfony2, una selezione di bundle utili e alcune configurazioni predefinite. Scaricando una distribuzione di Symfony2, si ottiene uno scheletro di un'applicazione funzionante, che può essere subito usata per sviluppare la propria applicazione.

Si può iniziare visitando la pagina di scaricamento di Symfony2, http://symfony.com/download. Su questa pagina, si vedrà la Symfony Standard Edition, che è la distribuzione principale di Symfony2. Si possono fare due scelte:

Opzione 1) Composer

Composer è una libreria di gestione delle dipendenze per PHP, utilizzabile per scaricare Symfony2 Standard Edition.

Iniziare con lo scaricare Composer sul proprio computer. Se si ha curl installato, è facile:

1
$ curl -s https://getcomposer.org/installer | php

Note

Se il computer non è pronto per usare Composer, si otterranno alcune raccomandazioni all'esecuzione del comando. Seguire tali raccomandazioni per far funzionare Composer correttamente.

Composer è un file PHAR eseguibile, che si può usare oer scarucare la Standard Distribution:

1
$ php composer.phar create-project symfony/framework-standard-edition /percorso/web/Symfony

Tip

Per una versione esatta, sostituire 2.1.x-dev con l'ultima versione di Symfony (p.e. 2.1.2). Per detaggli, si veda la pagina di installazione di Symfony

Tip

Per scaricare i file dei venditori più velocemente e senza cartelle non necessarie (p.e. "Tests"), aggiungere l'opzione --prefer-dist alla fine di ogni comando di Composer.

Questo comando può richiedere diversti minuti, mentre Composer scarica la Standard Distribution e tutte le librerie dei venditori necessarie. Quando avrà finito, si dovrebbe avere una cartella simile a questa:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
percorso/web/ <- la propria cartella radice del web
    Symfony/ <- l'archivio scompattato
        app/
            cache/
            config/
            logs/
        src/
            ...
        vendor/
            ...
        web/
            app.php
            ...

Opzione 2) Scaricare un archivio

Si può anche scaricare un archivio della Standard Edition. Qui, si possono fare due scelte:

  • Scaricare un archivio .tgz o .zip, sono equivalenti, scegliere quello che si preferisce;
  • Scaricare la distribuzione con o senza venditori. Se si pensa di usare molte librerie o bundle di terze parti e gestirli tramite Composer, probabilmente sarà meglio scaricare quella senza venditori.

Scaricare uno degli archivi e lo si scompatti da qualche parte sotto la cartella radice del web del proprio server. Da una linea di comando UNIX, si può farlo con uno dei seguenti comandi (sostituire ### con il vero nome del file):

1
2
3
4
5
# per il file .tgz
$ tar zxvf Symfony_Standard_Vendors_2.1.###.tgz

# per il file .zip
$ unzip Symfony_Standard_Vendors_2.1.###.zip

Se si è optato per la versione senza venditori, occorerà leggere la prossima sezione.

Note

Si può facilmente modificare la struttura predefinita di cartelle. Si veda Modificare la struttura della cartelle predefinita per maggiori informazioni.

Aggiornare i venditori

A questo punto, si dispone di un progetto Symfony funzionale, nel quale si può iniziare a sviluppare la propria applicazione. Un progetto Symfony dipende da diverse librerie esterne. Queste vanno scaricate nella cartella vendor/ del progetto, tramite una libreria chiamata Composer.

A seconda di come Symfony è stato scaricato, si potrebbe aver bisogno o no di aggiornare i venditori. Aggiornare i venditori è sempre sicuro e garantisce di disporre di tutte le librerie necessarie.

Passo 1: Ottenere Composer (il nuovo bellissimo sistema di pacchetti PHP)

1
$ curl -s http://getcomposer.org/installer | php

Ci si assicuri di scaricare composer.phar nella stessa cartella in cui risiede il file composer.json (per impostazione predefinita, la radice del progetto Symfony).

Passo 2: Installare i venditori

1
$ php composer.phar install

Questo comando scarica tutte le librerie dei venditori necessarie, incluso Symfony stesso, nella cartella vendor/.

Note

Se non si ha curl installato, si può anche scaricare il file installer a mano, da http://getcomposer.org/installer. Mettere il file nel progetto ed eseguire:

1
2
$ php installer
$ php composer.phar install

Tip

Quando si esegue php composer.phar install o php composer.phar update, composer eseguirà dei comandi post installazione/aggiornamento per pulire la cache e installare le risorse. Per impostazione predefinita, le risorse saranno copiate nella cartella web. Per creare collegamenti simbolici invece di copiare le risorse, si può aggiungere una voce nel nodo extra del file composer.json con chiave symfony-assets-install e valore symlink:

"extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web",
    "symfony-assets-install": "symlink"
}

Passando relative invece di symlink a symfony-assets-install, il comando genererà collegamenti relativi.

Configurazione

A questo punto, tutte le librerie di terze parti che ci occorrono sono nella cartella vendor/. Abbiamo anche una configurazione predefinita dell'applicazione in app/ e un po' di codice di esempio in src/.

Symfony2 dispone di uno strumento visuale per la verifica della configurazione del server, per assicurarsi che il server web e PHP siano configurati per usare Symfony2. Usare il seguente URL per la verifica della configurazione:

1
http://localhost/config.php

Se ci sono problemi, correggerli prima di proseguire.

Un problema comune è che le cartelle app/cache e app/logs devono essere scrivibili sia dal server web che dall'utente della linea di comando. Su sistemi UNIX, se l'utente del server web è diverso da quello della linea di comando, si possono eseguire i seguenti comandi una sola volta sul proprio progetto, per assicurarsi che i permessi siano impostati correttamente.

Si noti che non tutti i server web girano con lo stesso utenteo www-data usato negli esempi di seguito. Verificare con quale utente gira il proprio server web e usare quello al posto di www-data.

Su sistemi di tipo UNIX, lo si può fare con uno dei seguenti comandi:

1
$ ps aux | grep httpd

oppure

1
$ ps aux | grep apache

1. Usare ACL su un sistema che supporta chmod +a

Molti sistemi consento di usare il comando chmod +a. Provare prima questo e, in caso di errore, provare il metodo successivo. Assicurarsi di sostituire www-data con l'utente del prorio server web, nel primo comando chmod:

1
2
3
4
5
$ rm -rf app/cache/*
$ rm -rf app/logs/*

$ sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs

2. Usare ACL su un sistema che non supporta chmod +a

Alcuni sistemi non supportano chmod +a, ma supportano un altro programma chiamato setfacl. Si potrebbe aver bisogno di abilitare il supporto ACL sulla propria partizione e installare setfacl prima di usarlo (come nel caso di Ubuntu), in questo modo:

1
2
$ sudo setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs

3. Senza usare ACL

Se non è possibile modificare l'ACL delle cartelle, occorrerà modificare l'umask in modo che le cartelle cache e log siano scrivibili dal gruppo o da tutti (a seconda che gli utenti di server web e linea di comando siano o meno nello stesso gruppo). Per poterlo fare, inserire la riga seguente all'inizio dei file app/console, web/app.php e web/app_dev.php:

1
2
3
4
5
umask(0002); // Imposta i permessi a 0775

// oppure

umask(0000); // Imposta i permessi a 0777

Si noti che l'uso di ACL è raccomandato quando si ha accesso al server, perché la modifica di umask non è thread-safe.

Quando tutto è a posto, cliccare su "Go to the Welcome page" per accedere alla prima "vera" pagina di Symfony2:

1
http://localhost/app_dev.php/

Symfony2 dovrebbe dare il suo benvenuto e congratularsi per il lavoro svolto finora!

../_images/welcome.png

Tip

Per ottnere url brevi, si dovrebbe far puntare la docuemnt root del server web o un host virtuale alla cartella Symfony/web/. Sebbene non sia obbligatorio per lo sviluppo, è raccomandato nel momento in cui l'applicazione va in produzione, perché tutti i file di sistema e di configurazione diventeranno inaccessibili ai client. Perinformazioni sulla configurazione di uno specifico server web, vedere la seguente documentazione: Apache | Nginx .

Iniziare lo sviluppo

Ora che si dispone di un'applicazione Symfony2 pienamente funzionante, si può iniziare lo sviluppo. La distribuzione potrebbe contenere del codice di esempio, verificare il file README.rst incluso nella distribuzione (aprendolo come file di testo) per sapere quale codice di esempio è incluso nella distribuzione scelta.

Per chi è nuovo in Symfony, in "Creare pagine in Symfony2" si può imparare come creare pagine, cambiare configurazioni e tutte le altre cose di cui si avrà bisogno nella nuova applicazione.

Dare un'occhiata anche al ricettario, che contiene una varietà di articoli su come risolvere problemi specifici con Symfony.

Note

Se si vuole rimuovere il codice di esempio dalla distribuzione, dare un'occhiata a questa ricetta: "Rimuovere AcmeDemoBundle"

Usare un controllo di sorgenti

Se si usa un sistema di controllo di versioni, come Git o Subversion, lo si può impostare e iniziare a fare commit nel proprio progetto, come si fa normalmente. Symfony Standard edition è il punto di partenza per il nuovo progetto.

Per istruzioni specifiche su come impostare al meglio il proprio progetto per essere memorizzato in git, si veda Come creare e memorizzare un progetto Symfony2 in git.

Ignorare la cartella vendor/

Chi ha scelto di scaricare l'archivio senza venditori può tranquillamente ignorare l'intera cartella vendor/ e non inviarla in commit al controllo di sorgenti. Con Git, lo si può fare aggiungendo al file .gitignore la seguente riga:

1
/vendor/

Ora la cartella dei venditori non sarà inviata in commit al controllo di sorgenti. Questo è bene (anzi, benissimo!) perché quando qualcun altro clonerà o farà checkout del progetto, potrà semplicemente eseguire lo script php composer.phar install per scaricare tutte le librerie dei venditori necessarie.