Installare Yii

Puoi installare Yii in due modi, usando Composer o scaricando un archivio. Il metodo preferito è il primo, perché ti consente di installare estensioni o aggiornare il core di Yii semplicemente eseguendo un comando.

Nota: diversamente da Yii 1, le installazioni standard di Yii 2 comportano il download e l'installazione sia del framework che dello scheletro dell'applicazione

Installazione via Composer

Se non hai già installato Composer puoi farlo seguendo le istruzioni al sito getcomposer.org. Su Linux e Mac OS X puoi installare Composer con questo comando:

curl -s http://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

Su Windows devi scaricare ed eseguire Composer-Setup.exe.

Fai riferimento alla documentazione di Composer in casodi errori o se vuoi apprendere maggiori informazioni sull'uso di Composer.

Se hai già Composer installato assicurati di avere una versione aggiornata. Puoi aggiornare Composer con il comando composer self-update.

Una volta installato Composer, puoi installare Yii eseguendo questo comando in una directory accessbile via web:

composer global require "fxp/composer-asset-plugin:1.0.0-beta4"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic

Il primo comando installa il plugin composer asset che consente di gestire le dipendenze di bower e npm tramite Composer. Devi eseguire questo comando solo una volta. Il secondo installa Yii in una directory di nome basic. Puoi scegliere un nome diverso, se preferisci.

Nota: durante l'installazione potrebbe essere che Composer ti chieda le credenziali di Github, per superato limite di utilizzo delle API di Github. Questa situazione è normale perché Composer deve scaricare molte informazioni per tutti i pacchetti da Github. Accedendo a Github aumenterà il limite di utilizzo delle API, consentendo a Composer di completare il suo lavoro. Per maggiori dettagli fai riferimento alla documentazione di Composer.

Suggerimento: se vuoi installare l'ultima versione di sviluppo di Yii, puoi usare questo comando che aggiunge una opzione di stabilità:

composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic

Considera che la versione di sviluppo di Yii non dovrebbe essere utilizzata per siti di produzione perché potrebbe rendere instabile il tuo codice.

Installazione da un archivio

L'installazione da un archivio compresso comporta tre passaggi:

  1. Scaricare l'archivio da yiiframework.com.
  2. Scompattare l'archivio in una directory accessible via web.
  3. Modificare il file config/web.php inserendo una chiave segreta per il parametro di configurazione cookieValidationKey (questa operazione viene fatta automaticamente se installi tramite Composer):

php // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 'cookieValidationKey' => 'enter your secret key here',

Altre modalità di installazione

Le istruzioni sopra elencate mostrano come installare Yii, e creano inoltre un'applicazione web base funzionante. Questo approccio è un ottimo punto di partenza per progetti minori, o se stai imparando Yii.

Ma ci sono altre opzioni disponibili per l'installazione:

Verifica dell'installazione

Dopo l'installazione puoi usare il tuo browser per accedere all'applicazione Yii installata con l'URL seguente:

http://localhost/basic/web/index.php

Questo indirizzo assume che hai installato Yii in una directory di nome basic, direttamente nella root del tuo webserver, e che il webserver è in esecuzione sulla tua macchina locale (localhost). Potresti doverlo modificare a seconda del tuo ambiente di installazione.

Installazione di Yii completata con successo

Dovresti vedere la pagina sopra di congratulazioni. In caso contrario verifica se la tua installazione di PHP soddisfa i requisiti minimi di Yii. Puoi verificare le richieste in due modi:

  • accedere all'indirizzo http://localhost/basic/requirements.php tramite browser;
  • lanciando questi comandi:

cd basic php requirements.php

Devi configurare la tua installazione di PHP in modo che soddisfi le richieste minime di Yii. E' molto importante che tu stia usando PHP 5.4 o successivo. Devi inoltre installare le estensioni PDO di PHP e un driver di database di PDO (come ad esempio pdo_mysql per i database MySQL), se la tua applicazione richiede un database.

Configurazione del webserver

Informazione: puoi saltare questa parte per ora se stai solo provando Yii e non hai intenzione di installarlo su un server di produzione.

L'applicazione installata secondo le istruzioni sopra dovrebbe funzionare senza problemi su un server Apache o Nginx, su Windows, Mac OS X, or Linux equipaggiati con PHP 5.4 o successivo. Yii 2.0 è anche compatibile con le librerie HHVM di Facebook, tuttavia ci sono alcuni casi limite dove HHVM si comporta diversamente dal PHP nativo, quindi devi avere maggiore cura se intendi usare HHVM.

Su un server di produzione vorrai probabilmente che la tua applicazione sia accessibile tramite l'url http://www.example.com/index.php invece di http://www.example.com/basic/web/index.php. Questo risultato richiede che punti la document root del tuo webserver nella directory basic/web. Vorrai magari anche nascondere index.php dall'URL, come descritto nella sezione analizzare e generare URL. In questa parte vedrai configurare il tuo server Apache o Nginx per ottenere questo risultato.

Informazione: impostando basic/web come document root impedisci agli utenti finali di accedere al codice e a file/informazioni riservate memorizzate nelle directory superiori a basic/web. Negare l'accesso a queste altre cartelle è sicuramente un vantaggio per la sicurezza.

Informazione: se la tua applicazione andrà installata su un servizio di hosting condiviso non avrai il permesso di modificare la configurazione del webserver, ma dovrai comunque correggere la struttura della tua applicazione per migliorare la sicurezza. Fai riferimento alla sezione ambienti di hosting condiviso per maggiori dettagli.

Configurazione consigliata di Apache

Usa questa configurazione nel file httpd.conf di Apache o nella definizione del tuo VirtualHost. Tieni presente che dovrai modificare path/to/basic/web con il percorso reale della tua basic/web.

# Imposta *DocumentRoot* per essere "basic/web"
DocumentRoot "path/to/basic/web"

<Directory "path/to/basic/web">
    # usa mod_rewrite per gli url SEF
    RewriteEngine on
    # If a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Otherwise forward the request to index.php
    RewriteRule . index.php

    # ...altre impostazioni...
</Directory>

Configurazione consigliata di Nginx

Devi aver installato PHP con il demone FPM per usare Nginx. Usa questa configurazione per Nginx, sostituendo path/to/basic/web con il percorso reale di basic/web e mysite.local con il nome reale del server web.

server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80; ## listen for ipv4
    #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

    server_name mysite.local;
    root        /path/to/basic/web;
    index       index.php;

    access_log  /path/to/basic/log/access.log main;
    error_log   /path/to/basic/log/error.log;

    location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php?$args;
    }

    # uncomment to avoid processing of calls to non-existing static files by Yii
    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    #    try_files $uri =404;
    #}
    #error_page 404 /404.html;

    location ~ \.php$ {
        include fastcgi.conf;
        fastcgi_pass   127.0.0.1:9000;
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        try_files $uri =404;
    }

    location ~ /\.(ht|svn|git) {
        deny all;
    }
}

Usando questa configurazione dovresti anche impostare cgi.fix_pathinfo=0 in php.ini per evitare molte chiamate di sistema stat() inutili.

Inoltre considera che nel caso di server HTTPS dovrai aggiungere fastcgi_param HTTPS on; così che Yii possa correttamente rilevare se la connessione è sicura.