Installare Yii 2.0.* usando XAMPP su Windows in versione portabile

  1. Introduzione
  2. XAMPP
  3. Composer
  4. YII 2.0
  5. INIT della nostra webapp - SOLO per template avanzato
  6. Configurare il db
  7. Dov'è la mia app ?
  8. Come faccio login ?
  9. Generazione automatica del codice
  10. Abilitare i pretty url

Introduzione

Una delle soluzioni che preferisco per studiare un framework PHP è avere a disposizione un webserver portabile, ovvero che non richiede una vera e propria installazione. Questo mi permette spesso di lavorare direttamente su una chiavetta USB, potendo passare da un computer ad un altro di casa, o al lavoro, o dai clienti per le demo, senza alcun problema, avendo sempre con me l'ambiente server completo: server web, server MySQL, interprete php.

Personalmente trovo che la versione "portable" sia molto più semplice da aggiornare, ed io tengo sempre costantemente aggiornato TUTTO il parco software relativo al mio webserver.

XAMPP

Andiamo a questo indirizzo web: https://www.apachefriends.org/it/index.html

Nella homepage del sito trovate già una barra con indicati i principali link per scaricare direttamente XAMPP. Io sto usando Windows 8.1 Update 1 a 64 bit in questo momento, per cui potrei scaricare XAMPP per Windows ed otterrei il pacchetto per l'installazione automatica.

La mia intenzione è invece di NON installare nulla, per poter aggiornare agevolmente l'ambiente e poter usare il tutto, come detto anche su una penna USB.

Per fare questo clicchiamo sul link "Download" visibile in alto nel sito di XAMPP, quindi nel riquadro relativo a XAMPP per Windows clicchiamo su "Altri Download".

Cercheremo il file ".zip" contenente l'ultima release, per cui nell'elenco dei file clicchiamo sulla cartella "XAMPP Windows", clicchiamo sull'ultima release disponibile. Da fine 2014, XAMPP segue come numero di versione quella del PHP che usa, molto comodo per identificare esattamente quale versione scaricare, se ce ne serve una specifia, altrimenti, appunto, scaricate l'ultima versione.

Dall'elenco file, scegliamo l'ultima release disponibile, come dicevamo, avendo cura di scegliere la versione 'portable' e NON l'installer bensì la versione .zip (o.7z se abiamo l'eccellente 7-zip installato, occupa di meno il download, ma il contenuto del file è ovviamente identico); attualmente non c'è una versione 64bit, ma poco male. La dimensione dello zip è attualmente (inizio 2015) di oltre 140 MB. Prendetevi pure un caffè.

Installazione

Decomprimete il contenuto dello .zip o del .7z ("seven zip") in un punto a voi congeniale del disco.

Nota: Anche se questa è la versione portabile, vi sconsiglio di lavorare giorno per giorno direttamente su una chiavetta USB perché spaventosamente più lento; questa almeno la mia esperienza, anche perché io ho un disco SSD come unità di lavoro principale e la differenza è plateale

Altro piccolo consiglio: invece di decomprimere il file direttamente, apritelo ed estrate la cartella xampp (c'è solo quella).

Primo avvio di XAMPP

Entrate nella cartella xampp ed eseguite il file "xampp-control.exe".

La prima volta vi verrà chiesta la lingua (inglese o tedesco, fate voi ma io il tedesco non lo capisco), cliccate su "Save" e procedete

Dal pannello che vi si apre cliccate sui servizi che vi servono: Apache (il web server) e MySql (il server della base dati). E' tutto già perfettamente configurato, dovete solo dare l'ok la prima volta perchè venga creata una regola sul firewall di Windows affinchè i server stessi possano funzionare a dovere. Complicato? No... cliccate su Ok e rilassatevi

Se tutto è andato come dovrebbe avrete "luce verde" su Apache e su MySql.

Per verificarlo aprite un browser e andate all'indirizzo: http://localhost/. Saprete che tutto è ok se vedrete il logo di XAMP

A questo punto potete anche cancellare TUTTO dalla directory htdocs, perchè inizieremo subito a popolare la cartella con quanto serve a noi. Non è strettamente necessario, ma io adoro lavorare sul pulito

Composer

Composer è un gestore di dipendenze specifico per PHP.

Per l'installazione, ci avvaliamo dell'installer specifico per Windows scaricabile a questo indirizzo: https://getcomposer.org/download/

In verità se volete fare presto potete, e ve lo consiglio dal prompt dei comandi usare questo comando

php -r "readfile('https://getcomposer.org/installer');" | php

oppure, del tutto equivalente

curl -sS https://getcomposer.org/installer | php

Il file è molto piccolo, e l'installazione è semplice. Se non sapete dove si trova php.exe in xampp, sappiate che il percorso è: xampp\php\php.exe

Se usate una versione VECCHIA di XAMPP, Prima di procedere DOVETE abilitare openssl in php. Nella versione con cui ho aggiornato questa guida, superiore o uguale alla 1.8.3.5, non c'era più bisogno in quanto già abilitato. Se abbiamo bisogno di fare questa modifica, apriamo il pannello di controllo di XAMPP, stoppiamo Apache, clicchiamo su "Config" e scegliamo il file php.ini

Rimuoviamo il punto e virgola dalla riga seguente e salviamo

;extension=php_openssl.dll

Solo ora possiamo avviare l'installer.

Al termine riavviamo Apache.

YII 2.0

E' fondamentale installare questo prerequisito (come stabilito dalla guida ufficiale inglese, qui)

php composer.phar global require "fxp/composer-asset-plugin:1.0.0"

Nota bene: controllate nella guida qui sopra linkata se è cambiato il numero di versione del prerequisito

Questo prerequisito è installato a livello globale, vuol dire che al prossimo progetto sullo stesso ambiente non ci sarà più bisogno di riscaricarlo. Rieseguendolo, verrà installato dalla cache locale, facendo risparmiare tempo.

Rimanendo nella cartella xampp\htdocs, scarichiamo yii e tutte le dipendenze aggiornate digitando così

    php composer.phar require --prefer-dist "yiisoft/yii2 *"

Avremo in htdocs tre file relativi a composer ed una cartella vendor con varie sottocartelle che contengono i prerequisiti di yii, già installati.

Ora, senza cambiare directory, digitiamo uno dei seguenti comandi per creare l'applicazione 'scheletro" che preferiamo, la prima è la versione base, la seconda è la versione più completa, divisa in frontend, backend, console, supporto per esecuzione in più ambienti, etc..

Prima di farlo una nota: il comando che segue creare l'app in una sottocartella denominata basic o advanced a seconda del caso. Il nome della cartella è l'ultima parola del comando, e lo potete scegliere voi.

Nota: non potete avere l'app basic o advanced che sia sulla root dell vostro webserver (htdocs, nel nostro caso, perchè quando eseguite create-project, composer si rifiuta di procedere se la directory di destinazione non è vuota, e la root non lo è avendo, come minimo, il composer.phar stesso al suo interno)

Questo è il comando per creare l'app base in xampp\htdocs\basic

php composer.phar create-project --prefer-dist yiisoft/yii2-app-basic basic 

Questo è il comando per creare l'app avanzata in xampp\htdocs\advanced

php composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced advanced

Ad onor del vero è possibile anche scaricare lo skeleton dalla pagina di GitHub con l'elenco dei progetti: https://github.com/yiisoft/yii2/releases

Verifica della configurazione

Intanto assicuriamoci che tutto sia ben configurato. Apriamo il browser all'indirizzo http://localhost/requirements.php

Noterete che ci sono alcuni warning, avvisi, relativi a configurazioni non ottimali. Una di queste è relativa alla PHP Intl extension. Non prendete sotto gamba questo avviso, senza di questa NON potrete avvalervi del nuovo sistema di I18N ("internationalization") di YII 2.

Abilitare PHP Intl extension

Apriamo il pannello di controllo di XAMPP, fermiamo apache e dal pulsante config scegliamo il file php.ini

Togliamo il punto e virgola davanti a questa riga

;extension=php_intl.dll

Inoltre nella sezione [intl] dello stesso file aggiungiamo la seguente riga:

intl.default_locale = it_utf8

e togliamo il punto virgola da

;intl.error_level = E_WARNING

quindi salviamo il file.

Riavviamo apache e torniamo alla pagina dei requisiti.

Altri warning

Un warning riguarda sicuramente PostgreSQL, di cui attualmente io mi disinteresso perchè uso MySql

Due warning riguardano due estensioni facoltative usate per il caching: apc e memcache. Queste vanno installate una sola alla volta, sono appunto facoltative, e sono delle cache per l'opcode generato dall'interprete php. Ho verificato di persona che su php <5.5 apc rende paurosamente più veloce qualsiasi webapp fatta con Yii. A quanto pare il fatto che php 5.5 includa una opcode cache rende queste inutili, ma, se volete sperimentare, la potete trovare alla voce 'APCu cache" tra le estensioni di PHP scaricabili dal sito ufficiale.

INIT della nostra webapp - SOLO per template avanzato

Anche questo va eseguito solo una volta, dopo aver creato lo skeleton dell'applicazione avanzata. Se avete creato l'app 'basic' saltate alla prossima sezione

Andiamo nella cartella dell'applicazione con il prompt e digitiamo

./init

oppure, non dovesse funzionare per problemi di configurazione (sulle vecchie versioni di XAMPP mi succcedeva sempre)

php ./init

Ci viene chiesto di scegliere l'ambiente attuale di esecuzione, per cui scriviamo '0' (zero, senza virgolette) e premiamo invio, quindi confermiamo con 'yes', sempre senza le virgolette, ed un altro invio.

Configurare il db

Il db si configura dal file xampp\htdocs\common\config\main-local

Scegliete un nome di db, l'utente e la password per la connessione e inseritelo qui. XAMPP esce 'di fabbrica' con nome utente 'root' e password vuota. IL CHE è UNA PESSIMA IDEA. Cambiatela il primo possibile !!!

Immaginando però di lasciare tutto com'è, dobbiamo creare un nuovo db denominato yii2advanced o yii2basic a seconda del caso. Apriamo phpmyadmin (http://localhost/phpmyadmin), e creiamo il db

Per le tabelle, tranquilli, non saremo noi a farlo, ci pensa Yii 2.

Dal nostro prompt andiamo nella cartella htdocs (questo se come me avete creato la webapp come applicazione principale e non in una sottocartella)

yii migrate

confermare digitando 'yes' e premendo Invio. Dopo un mezzo secondo nel vostro db dovrebbero essere comparsa le tabella "user" (tiene i dati degli utenti) e "migration" (con lo storico delle migrazioni db eseguite)

Dov'è la mia app ?

http://localhost/advanced/frontend/web/

e

http://localhost/advanced/backend/web/

oppure

http://localhost/basic/web/

Come faccio login ?

Andate nel frontend, cliccate su "Signup" e createvi un account. Ebbene si, Yii2 nello skeleton ha già la gestione del login, e persino del recupero password !

Generazione automatica del codice

Abilitare gii

Entriamo dal prompt nella cartella htdocs e usiamo composer

composer require --prefer-dist yiisoft/yii2-gii "*"

Quindi accediamo a gii da qui:

http://localhost/advanced/frontend/web/index.php?r=gii/default/index

oppure

http://localhost/advanced/backend/web/index.php?r=gii/default/index

oppure, nella versione base, semplicemente

http://localhost/basic/web/index.php?r=gii/default/index
Generazione dei model

Una volta che gii è abilitato, possiamo tranquillamente usarlo per creare i model.

E' necessario tenere a mente che, mentre nella versione base dell'applicazione c'è una unica cartella models, nella versione avanzata ce ne sono ben tre: frontend\models, backend\models e common\models.

Quando specificate il nome del modello come app\models\, nella versione base i modelli vengono creati ovviamente in models, invece nella versione advanced 'app' prende come significato frontend o backend a seconda dell'indirizzo da cui avete lanciato gii; se desiderate, come spesso è buona pratica, creare i modelli in common\models, allora usate common\models\<nome classe> invece della suggerita app\models\<nome classe>

Abilitare i pretty url

Per prima cosa creiamo dentro ciascuna directory /web il seguente file denominandolo .htaccess

Options +FollowSymLinks
IndexIgnore */*

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

Quindi dentro a ciascun config/main.php inseriamo la configurazione del componente 'urlManager'. Ricordiamoci che la seguente configurazione va inserita 'dentro' all'array components, e non sullo stesso livello

'urlManager' => [
   'class' => 'yii\web\UrlManager',
   'enablePrettyUrl'   => true,
   'showScriptName'    => false,
]
0 0
2 followers
Viewed: 27 865 times
Version: 2.0
Category: Tutorials
Written by: realtebo
Last updated by: realtebo
Created on: Apr 27, 2014
Last updated: 8 years ago
Update Article

Revisions

View all history

Related Articles