Débuter avec Yii2 sur un WAMP Portable

Auteur : Jonathan KALFA
Date : 25/11/2014 | Mis à jour : 17/12/2014
Mots clés : yii2, composer, template, xampp, usb
Article vu 5901 fois

Hey Jonathan, c'est quoi Yii ? Une marque de bière nippone ?

Yii est framework PHP performant et modulaire pour développer rapidement des applications Web modernes. Le nom Yii (prononcé Yee ou [ji:]) signifie « simple et évolutif » en chinois. Il peut également être considéré comme un acronyme pour Yes It is!

Personnellement, j'utilise Yii depuis sa version 1.1.x pour faire des proofs of concept (POC pour les intimes). Totalement satisfait de mon expérience j’ai décidé de baser de vrai projet sur la version 2.0 du framework qui est une entière réécriture de la première mouture.

Et Yii2 alors, ça permet de faire quoi au juste ? Je vais éviter de paraphraser le guide fourni avec le framework (je déteste la duplication de code inutile) alors : http://www.yiiframework.com/doc-2.0/guide-intro-yii.html

Pour ma part voici - entre autres - ce qui m'a séduit dans Yii2 c'est :

Mais revenons à nos moutons avec cet article où je vais vous présenter ma manière de déployer, d’installer le framework sur un environnement nomade (clé usb) de type Windows.



Prérequis

Installer un package de type Windows, Apache, MySQL, PHP and/or Perl (WAMP). Celui-ci devra avoir PHP en version 5.4.0 ou supérieur : le validateur de Yii vous indiquera ensuite, si besoin, ce qu’il vous manquera en terme de librairie.
Pour ma part, j’utilise du XAMPP portable : http://portableapps.com/apps/development/xampp


1. Installer Composer

Composer est un outil de gestion de la dépendance pour PHP. Il vous permet de déclarer les bibliothèques dont votre projet a besoin et va les installer pour vous. Utiliser Composer est la manière "recommandée" d'installer le Yii framework (et ses extensions). Instruction ici : https://getcomposer.org/doc/00-intro.md#installation-windows

Je vais vous laisser l'installation automatique et vais plutôt vous décrire le déploiement manuel afin de l’installer sur clé usb. Je n’ai bien sûr pas php dans mon path (xampp sur clé usb) et n'ai pas fait de scripts .bat pour faire joliment les choses (je souis oune barbare) mais n’hésitez pas à vous faciliter la vie (set path=%path%;e:\xampp\php\).

Je me place donc dans mon répertoire php mobile et récupère à distance composer :
cd E:\xampp\php> 
php -r "readfile('https://getcomposer.org/installer');" | php

Si comme moi vous obtenez un magnifique :
Warning: readfile(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1
Warning: readfile(https://getcomposer.org/installer): failed to open stream: Invalid argument in Command line code on line 1

Exécutez plutôt (via http) :

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

Notez que vous pouvez aussi activer php_openssl.dll dans votre php.ini ca devrait résoudre le problème.

Créons maintenant le composer.bat basé sur le composer.phar généré précédemment :

E:\xampp\php>echo @php "%~dp0composer.phar" %*>composer.bat

Plus qu’à tester dans la console (potentiellement il faut fermer et rouvrir la console) :

E:\xampp\php>composer -V
Composer version 1.0-dev (a309e1d89ded6919935a842faeaed8e888fbfe37) 2014-10-20 19:16:14

2. Création du squelette d’application Yii2

Maintenant que nous avons Composer, nous allons pouvoir déployer une application Yii. Il existe actuellement deux templates "officiels" de création de squelettes d’application Yii :
Une version basique : http://www.yiiframework.com/doc-2.0/guide-start-installation.html
Une version avancée : http://www.yiiframework.com/doc-2.0/guide-tutorial-advanced-app.html

Cette dernière permet de gérer un frontend et un backend distinct, possiblement déployable sur des serveurs différents. Ce template contient aussi quelques fonctionnalités prêtes à l’emploi telles que la gestion des enregistrements des utilisateurs, la restauration de password et autres subtilités. C'est l'installation de ce dernier template que je vais décrire ici, car... qui peut le plus peut le moins.
Note : Les chemins de mes exécutables sont écrits en l'état puisque je n'ajoute pas "exprès" pour ce tutoriel, mes exécutables dans le path et que je n’ai pas créer de setter.bat tout prêt,

On va donc installer cela dans un répertoire web accessible (ex : htdocs) de XAMPP. Toujours dans le répertoire contenant PHP et Composer, lancer :
composer global require "fxp/composer-asset-plugin:1.0.0-beta4"
composer create-project --prefer-dist yiisoft/yii2-app-advanced ../htdocs/my-yii-application

Le script vous demandera vos identifiants github au cours de l’installation. Si vous n’avez pas de compte github, pensez à vous en créer un ^^ (sinon de mémoire il ira quand même prendre les packages de release chez packagist mais bon...)


3. Configurations de base et lancement

3.1. Initialiser l’application en mode développement

Lancer simplement :
E:\xampp\php>php ..\htdocs\my-yii-application\init

Renseigner 0 pour développement puis confirmer.


3.2. Création et paramétrage de la base de données

Via votre WAMP, lancez votre configurateur de base de données (chez moi phpMyAdmin) et créez une base de données dédiée. Puis éditez my-yii-application/common/config/main-local.php et renseignez-y vos informations de connexion.


Si vous le souhaitez vous pouvez définir un prefix personnalisé au niveau de cette configuration pour toutes vos tables :
'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=toto',
        'username' => 'root',
        'password' => 'xxx',
        'charset' => 'utf8',
        'tablePrefix' => 'xyz_',
],
Les tables automatiquement créées par Yii dans l'étape suivante seront alors préfixées par "xyz_", et cela indique à l'application dans sa globalité que toutes les tables que vous créez vous même sont préfixés. Vous pourrez alors utiliser le nom des tables sans prefix dans votre code : {{tablename}}.

3.3. Alimentation en données d’initialisation

Se placer dans le répertoire du projet et lancer : yii migrate
Note : si comme moi vous n’avez pas PHP dans votre path, éditez yii.bat du répertoire pour mettre le chemin relatif de php.exe (ex : ../../php/php.exe)
Si tout va bien vous avez un joli message à l’écran : Migrated up successfully


3.4. Départ pour la Lune

Normalement en lançant votre environnement WAMP (si ce n’est pas déjà fait) vous pouvez maintenant accéder aux deux parties de votre applicatif via les URL suivantes :
Frontend : http://localhost/my-yii-application/frontend/web
Backend : http://localhost/my-yii-application/backend/web

Et voilà, vous êtes maintenant prêt (et moi aussi) à bâtir une application complexe à l’aide de ce superbe framework.


Bonus : Templates alternatifs et Yii Tips

Template : Nenad advanced template

Ce qui est bien aussi avec Yii c’est que le templating est autorisé et même encouragé. Personnellement, je n’utilise pas le template de base mais celui de Nenad (http://www.freetuts.org). Pourquoi ? Et bien parce qu’il dispose de quelques particularités qui m’interessaient comme le déploiement sur hébergement mutualisé simplifié ou une gestion des rôles bien plus poussés que les templates de base.

Plus de détails :
http://www.yiiframework.com/extension/yii2-improved-advanced-template/
https://github.com/nenad-zivkovic/yii2-advanced-template

Je ne vais pas refaire le monde, mais pour installer c’est quasiment identique au template avancé décrit avec en plus une commande d’initialisation des rôles (RBAC). Voici un tutoriel d'installation de ce template si cela vous intéresse : Using Yii2 Improved Application Templates


Tips : Gestion des environnements

Plutôt que de remplir le main-local.php au niveau du 3.2 vous pouvez le faire directement dans environnements/dev/common/config et environnements/dev/common/config.

Il suffira alors de jouer les commandes :
PRODUCTION : php /path/to/yii-application/init --env=Production overwrite=All
DEVELOPPEMENT : php /path/to/yii-application/init --env=Development overwrite=All
Pour passer simplement d’une configuration à l’autre aisément.


Tips : Derrière un proxy ?

Un proxy qui vous pose problème avec Composer et les mises à jour distantes ? Une solution :
set HTTP_PROXY_REQUEST_FULLURI=1
set HTTPS_PROXY_REQUEST_FULLURI=0
set HTTP_PROXY=http://user:password@proxy.url.or.ip:port
En fonction des URL à accéder il faut jouer avec les valeurs, voire ajouter le HTTPS_PROXY également.

J'espère que tout cela vous servira autant qu'à moi. Pour l'instant impossible de commenter l'article (je suis en train de développer le widget de commentaire qui va bien). Mais n'hésitez pas à partager ou à me contacter en cas de problème.

Jonathan KALFA
[ @Jokabox | @Jokamax ]

Vous avez aimé ? Partager !

Commentaires

Ajouter un commentaire :


Liste des commentaires :

0
Raoul
6/1/2015 15:: - [ Répondre ]

très bon tuto pour commencer avec Yii2.

Perso, plutôt que d'utiliser un template alternatif je préfère rester dans le standard Yii2, et rajouter les extensions dont j'ai besoin (rbac, users, etc..). Mais bon, c'est une question de goût j'imagine ;)

ciao

1
Jokamax (Admin)
Raoul
6/1/2015 17:: - [ Répondre ]

Bonjour Raoul,

Merci pour ce gentils commentaire qui inaugure d'ailleurs mon nouveau système de gestion de commentaire. Ouf ça fonctionne ^^.

Bonne fin de journée

Créations

Vous connaissez Scribbook ? Non ? Scribbook vous aide à organiser, évaluer, sublimer vos projets d'écriture. Cette application en ligne s'adresse à vous, professionnel ou débutant, que vous soyez : romancier, noveliste, poète, ...

Social Feeling
Publicités
Derniers Commentaires
Jokamax dans Tutoriel - Créer un Widget avec Yii2 : Et pour finir, un petit commentaire pour simplement me permettre de poster un : CA FONCTIONNE :-)...
Jokamax dans Débuter avec Yii2 sur un WAMP Portable : Bonjour Raoul, Merci pour ce gentils commentaire qui inaugure d'ailleurs mon nouveau système de ge...
Raoul dans Débuter avec Yii2 sur un WAMP Portable : très bon tuto pour commencer avec Yii2. Perso, plutôt que d'utiliser un template alternatif je pr...