Symfony2 - Jobeet - Jour 01 - Démarrage du projet

1 1 1 1 1 1 1 1 1 1 Rating 4.75 (2 Votes)
Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn

Aujourd'hui, est votre premier jour, vous n'allez pas écrire de code. Au lieu de cela, vous allez mettre en place un environnement de travail de développement pour Symfony2.

Configuration de l'environnement de développement

Tout d'abord, vous devez vérifier que votre ordinateur dispose d'un environnement de travail convivial pour le développement web. Nous allons utiliser Debian 7 Wheezy. Au minimum, vous avez besoin d'un serveur web (Apache, par exemple), un moteur de base de données (MySQL) et PHP.

 Ensuite exécutez le code ci-dessous :

# Se connecter en root
su

# Installer Apache
apt-get install apache2

# Et activer le module mod-rewrite
a2enmod rewrite

# Installer MySQL Serveur
apt-get install mysql-server mysql-client

# Installer PHP
apt-get install php5 libapache2-mod-php5 php5-mysql

# Installer l'extension Intl
apt-get install php5-intl

# Redémarrer le service Apache
service apache2 restart

Télécharger et installer Symfony 2.5

Pour télécharger et installer Symfony 2.5, il faut préalablement installer curl et Composer. Composer est le gestionnaire de paquet utilisé par des applications PHP modernes et la méthode recommandée pour installer Symfony2.

# Installer curl
apt-get install curl

# Télécharger composer
curl -s https://getcomposer.org/installer | php

# Déplacer composer dans le dossier /usr/local/bin/
mv composer.phar /usr/local/bin/composer

# Connaître la version de Composer
composer --version

Maintenant installer et créer un projet Symfony. La première chose à faire est de préparer un répertoire sur votre serveur web où vous voulez installer le nouveau projet :

cd /var/www

Créer le projet Jobeet :

composer create-project symfony/framework-standard-edition jobeet/ "2.5.*"

Le générateur va vous poser quelques questions avant de générer le projet Jobeet :

Would you like to install Acme demo bundle? [y/N] y
Installing the Acme demo bundle.
Creating the "app/config/parameters.yml" file
Some parameters are missing. Please provide them.
database_driver (pdo_mysql): pdo_mysql
database_host (127.0.0.1): 127.0.0.1
database_port (null): 
database_name (symfony): jobeet
database_user (root): root
database_password (null): root
mailer_transport (smtp): smtp
mailer_host (127.0.0.1): 127.0.0.1
mailer_user (null): 
mailer_password (null): 
locale (en): fr
secret (ThisTokenIsNotSoSecretChangeIt): V5LyMQ3e9Ln9qgfHvyW3cdj988D946ED
debug_toolbar (true): true
debug_redirects (false): false
use_assetic_controller (true): true

Configuration du serveur Web

Une bonne pratique web est de mettre sous le répertoire racine du site Web que les fichiers qui doivent être accessibles par un navigateur Web, comme les feuilles de style, JavaScripts et des images. Par défaut, il est recommandé de stocker ces fichiers sous le répertoire web/ sous-répertoire d'un projet symfony. 

Pour configurer Apache pour votre nouveau projet, vous allez créer un hôte virtuel. Pour ce faire, tapez la commande suivante :

vi /etc/apache2/sites-available/jobeet.local

Maintenant, le fichier jobeet.local est créé. Copier les lignes ci-dessous dans ce fichier :

<VirtualHost *:80>
    ServerName jobeet.local
    DocumentRoot /var/www/jobeet/web
    DirectoryIndex app.php
    ErrorLog /var/log/apache2/jobeet-error.log
    CustomLog /var/log/apache2/jobeet-access.log combined
    <Directory "/var/www/jobeet/web">
        AllowOverride All
        Allow from All
     </Directory>
</VirtualHost>

Le nom de domaine jobeet.local utilisé dans la configuration d'Apache doit être déclaré localement dans le fichier /etc/hosts

 echo "127.0.0.1 jobeet.local" >> /etc/hosts

Remplacez 127.0.0.1 par l'adresse IP de votre serveur web si vous travaillez sur un serveur distant.

Si vous voulez que cela fonctionne, vous devez activer l'hôte virtuel nouvellement créé et redémarrez votre Apache. Alors, tapez:

a2ensite jobeet.local
service apache2 restart

Symfony est livré avec un testeur de configuration de serveur visuel pour vous aider à vous assurer que votre serveur Web et PHP sont correctement configurés pour utiliser Symfony. Utilisez l'URL suivante pour vérifier votre configuration : http://jobeet.local/config.php

01-jobeet-config

Si vous ne lancez pas à partir de votre localhost, vous devez modifier le fichier web/config.php et commenter les lignes qui limitent l'accès extérieur :

vi web/config.php

Puis commentez les lignes ci-dessous (de 6 à 14) :

<?php

if (!isset($_SERVER['HTTP_HOST'])) {
    exit('This script cannot be run from the CLI. Run it from a browser.');
}
/*
if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
    '127.0.0.1',
    '::1',
))) {
    header('HTTP/1.0 403 Forbidden');
    exit('This script is only accessible from localhost.');
}
*/
require_once dirname(__FILE__).'/../app/SymfonyRequirements.php';

 Faites la même chose pour le web/app_dev.php :

vi web/app_dev.php

Puis commentez les lignes ci-dessous (de 12 à 20) :

<?php

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Debug\Debug;

// If you don't want to setup permissions the proper way, just uncomment the following PHP line
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
//umask(0000);

// This check prevents access to debug front controllers that are deployed by accident to production servers.
// Feel free to remove this, extend it, or make something more sophisticated.
/*
if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}
*/
$loader = require_once __DIR__.'/../app/bootstrap.php.cache';

Probablement, que vous obtiendrez toutes sortes de problèmes ou de recommendations quand vous allez sur la page http://jobeet.local/config.php. Ci-dessous, une liste de choses à faire pour ne pas avoir tous ces avertissements.

Installez ACL :

apt-get install acl

Changez les permissions de app/cache et app/logs :

cd jobeet/
chmod -R 777 app/cache
chmod -R 777 app/logs

Réglez la valeur date.timezone dans le fichier php.ini :

 vi /etc/php5/apache2/php.ini

Modifier la valeur date.timezone :

date.timezone = Europe/Paris

Modifier la valeur short_open_tag off dans le même fichier php.ini :

short_open_tag = Off

Installez et activez un accélérateur PHP (APC recommandé) :

apt-get install php-apc
service apache2 restart

Après le redémarrage d'Apache, ouvrez une fenêtre de navigateur et tapez http://jobeet.local/app_dev.php. Vous devriez voir la page suivante :

01-jobeet-app dev

Console de Symfony2

Symfony2 est livré avec l'outil console que vous allez utiliser pour différentes tâches. Pour voir une liste des choses qu'il peut faire, tapez à l'invite de commande :

php app/console list

Création d'un bundle

Qu'est-ce qu'un bundle ?

Un bundle est, pour faire simple, un ensemble de fichiers et répertoires permettant d'implémenter une ou des fonctionnalités (si possible réutilisables dans divers projets). Ils sont assez similaires au plugins dans Symfony 1.x, sauf que tout le code est stocké dans ces derniers : vues, modèles, config...

Création d'un bundle de base

Exécutez la commande suivante pour démarrer le générateur de bundle de Symfony :

php app/console generate:bundle --namespace=Erlem/JobeetBundle

Le générateur va vous poser quelques questions avant de générer bundle. Voici les questions et réponses (tous, sauf une, sont les réponses par défaut) :

Bundle name [ErlemJobeetBundle]: ErlemJobeetBundle
Target directory [/var/www/jobeet/src]: /var/www/jobeet/src
Configuration format (yml, xml, php, or annotation) [yml]: yml
Do you want to generate the whole directory structure [no]? yes
Do you confirm generation [yes]? yes
Confirm automatic update of your Kernel [yes]? yes
Confirm automatic update of the Routing [yes]? yes

 Videz le cache après avoir créé le nouveau bundle avec :

php app/console cache:clear --env=prod
php app/console cache:clear --env=dev
chmod -R 777 app/cache

Le nouveau paquet de Jobeet peut être maintenant trouvé dans le répertoire src de votre projet (src/Erlem/JobeetBundle). Le générateur de bundle fait une defaultController avec une action index. Vous pouvez accéder dans votre navigateur : http://jobeet.local/hello/jobeet ou http://jobeet.local/app_dev.php/hello/jobeet

Comment faire pour supprimer AcmeDemoBundle

Le Symfony 2.5 Standard Edition est livré avec une démo complète qui est à l'intérieur du bundle appelé AcmeDemoBundle. Vous voudrez probablement le supprimer. Pour cela, tapez la commande pour supprimer le répertoire Acme :

rm -rf /var/www/jobeet/src/Acme

Editez le fichier /var/www/jobeet/app/AppKernel.php :

vi /var/www/jobeet/app/AppKernel.php 

Et supprimez :

// ...
 
$bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
 
// ...

Maintenant éditez le fichier app/config/routing_dev.yml :

vi /var/www/jobeet/app/config/routing_dev.yml

Et supprimez :

# ... 
 
# AcmeDemoBundle routes (to be removed)
_acme_demo:
    resource: "@AcmeDemoBundle/Resources/config/routing.yml"

 Pour finir, videz le cache :

php app/console cache:clear --env=prod
php app/console cache:clear --env=dev
chmod -R 777 app/cache

Les environnements

Symfony 2.5 a des environnements différents. Si vous regardez dans le répertoire web du projet, vous verrez deux fichiers php: app.php et app_dev.php. Ces fichiers sont appelés contrôleurs frontaux; toutes les demandes de l'application se font par leur intermédiaire. Le fichier app.php est pour l'environnement de production et app_dev.php est utilisé par les développeurs Web quand ils travaillent sur l'application dans l'environnement de développement. L'environnement de développement sera très pratique car il vous montrera toutes les erreurs et les avertissements et le Web Debug Toolbar - le meilleur ami du développeur.

C'est tout pour aujourd'hui. Rendez-vous le demain, nous parlerons de ce qu'est exactement Jobeet.


< Symfony2 - Jobeet avec Symfony 2.5 [Sommaire] Symfony2 - Jour 02 - Le projet >


Pour ce tutoriel, je me suis inspiré du tutoriel Symfony2 Jobeet du site IntelligentBee

Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn