6

Installer Symfony 2 sur un NAS Synology

Linux, Synology

cross grey small Installer Symfony 2 sur un NAS SynologyCet article a été publié il y a 1 an 5 mois 25 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Symfony est un framework de développement PHP qui facilite et accélère la création d’applications Web de type MVC.

À l’heure où j’écris cet article, Symfony est en version 2.1.7, mais ce tutoriel devrait fonctionner sur toutes les versions 2.x.x.

Aujourd’hui nous allons voir comment l’installer sur notre NAS Synology et s’en servir comme un serveur web.

Prérequis : 

Tout d’abord, il nous faut activer le serveur web et le serveur de base de données, MySQL.

Pour cela, rendez-vous dans le « Panneau de configuration »

Et cliquez sur l’icône « Services Web »

sf2 synology 01 650x349 Installer Symfony 2 sur un NAS Synology

Dans la nouvelle fenêtre qui s’ouvre, cochez les cases « Activer Web Station » et « Activer MySQL »

sf2 synology 02 650x286 Installer Symfony 2 sur un NAS Synology

Ensuite, cliquez sur l’onglet « Paramètre PHP » et cocher la case « Personnaliser PHP open_basedir » et rajoutez « /root: » au début de la ligne.

sf2 synology 03 650x417 Installer Symfony 2 sur un NAS Synology

Vous pourrez décocher cette case à la fin de l’installation.

Pour installer Symfony, nous utiliserons « Composer », un gestionnaire de dépendances pour PHP. Pour cela, nous devons activer l’extension « phar » dans PHP.

Pour cela, cliquez sur « Sélectionner PHP extension » et cochez la case « phar ».

sf2 synology 04 Installer Symfony 2 sur un NAS Synology

Retournez ensuite dans le panneau de configuration et allez dans le menu « Terminal ».

Nous allons activer le service SSH afin de prendre la main en ligne de commande sur le NAS.

Pour cela, cochez la case « Activez le service SSH ».

sf2 synology 05 650x237 Installer Symfony 2 sur un NAS Synology

Vous pouvez maintenant vous rendre l’URL suivante : http://ip_du_nas/ et vous devriez avoir la page suivante :

sf2 synology 06 650x208 Installer Symfony 2 sur un NAS Synology

Nous allons maintenant pouvoir passer à l’installation de Symfony.

Installation :

Connectez-vous à votre NAS en SSH, pour cela :

  • Dans le terminal sous Mac et Linux : « ssh root@ip_du_nas »
  • Sous Windows, utilisez un logiciel tel que « Putty » et laissez vous guider.

Une fois connectés en SSH, nous devons tout d’abord installer GIT. Pour cela, vous devez au préalable avoir installé IPKG en suivant l’article suivant : Installer IPKG sur un NAS Synology

Une fois IPKG installé, il vous suffit de taper les commandes suivantes, afin de mettre à jour vos paquets IPKG et installer GIT :

  • ipkg update && ipkg upgrade
  • ipkg install git

Nous allons maintenant récupérer « Composer » et créer notre premier projet Symfony 2.

Nous allons faire une installation globale de « Composer », c’est-à-dire que la commande « composer » sera disponible dans tout le système du NAS, ce qui est plus pratique que d’appeler constamment le fichier « composer.phar ».

Pour cela, tapez la commande suivante :

  • curl -ks https://getcomposer.org/installer | php -- --install-dir=/usr/bin

Cette commande permet de récupérer le fichier « composer » et de l’installer dans le dossier /usr/bin pour qu’il soit disponible globalement.

sf2 synology 08 Installer Symfony 2 sur un NAS Synology

Pour créer notre premier projet, il suffit d’utiliser la commande suivante depuis le dossier /volume1/web (ou le dossier web que vous avez défini) :

  • composer create-project symfony/framework-standard-edition dossier_installation_sf2  version_sf2

Exemple :

  • composer create-project symfony/framework-standard-edition mySfProject  2.1.7

Cette ligne va m’installer Symfony 2.1.7 dans le dossier mySfProject.

Tapez ensuite la commande suivante depuis le « dossier_installation_sf2″ pour récupérer tous les composants de Symfony.

  • composer install

——————–

Si vous obtenez l’erreur suivante durant l’installation :

The php executable could not be found, add it to your PATH environment variable and try again

Il vous suffit de passer au travers en modifiant le fichier suivant :

  • dossier_installation_sf2/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Composer/ScriptHandler.php

Et modifiez la ligne 173 de la manière suivante :

  • $phpPath = "/usr/bin/php";

et relancez la commande « composer install »

——————–

Symfony devrait maintenant être installé, mais pour accéder a votre application, vous devez modifier les fichiers web/config.php et web/app_dev.php afin d’autoriser la connexion à votre NAS depuis une machine distante :

Pour cela vous avez le choix entre modifier les blocs de code suivant ou tout simplement les supprimer.

  • config.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',
 'ip_de_votre_PC'
 ))) {
 header('HTTP/1.0 403 Forbidden');
 exit('This script is only accessible from localhost.');
 }
  • app_dev.php
if (isset($_SERVER['HTTP_CLIENT_IP'])
 || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
 || !in_array(@$_SERVER['REMOTE_ADDR'], array('ip_de_votre_PC', '127.0.0.1', 'fe80::1', '::1'))
) {
 header('HTTP/1.0 403 Forbidden');
 exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}

 Vous pouvez maintenant vous rendre à l’adresse suivante pour configurer votre installation de Symfony :

  • http://ip_du_nas/Symfony/web/config.php

sf2 synology 09 650x360 Installer Symfony 2 sur un NAS Synology

 

Et laissez vous guider par l’installation de Symfony.

Renseignez vos informations de base de données :

sf2 synology 10 650x556 Installer Symfony 2 sur un NAS Synology

Modifiez le fichier dossier_installation_sf2/app/config/parameters.yml

sf2 synology 11 650x448 Installer Symfony 2 sur un NAS Synology

Vous arriverez enfin sur la page par défaut de Symfony.

sf2 synology 12 650x310 Installer Symfony 2 sur un NAS Synology

À partir de là, vous n’avez plus qu’à rajouter vos bundles, développer votre projet, en bref utiliser Symfony comme vous le faisiez jusqu’à maintenant.

 

Rédigé par

Tags: ,

6 Commentaires Voir les tweets

  1. Guillaume Bailleul - Le Mardi 12 mar 2013 à 0:34

    Bonjour,

    plutôt que toucher au code source du ScriptHandler; je te propose la solution suivante:
    vi ~/.profile

    et ajoute les lignes suivantes
    PHP_PATH=/usr/bin/php
    export PHP_PATH

    Cela te permettra d’entrer dans la condition:

    //Symfony\Component\Process\PHPExecutableFinder.php
    if ($php = getenv(‘PHP_PATH’)) {
    if (!is_executable($php)) {
    return false;
    }
    return $php;
    }

    Voilà

     
  2. Guimove - Le Mardi 12 mar 2013 à 9:16

    Bonjour Guillaume,

    J’avais testé cette manipulation durant mes tests et cela n’avait pas fonctionné.
    Surement un coup de pas de chance.
    En tout cas merci pour ton intervention

     
  3. geoffrey - Le Mercredi 13 mar 2013 à 18:35

    Ok il y a une petite erreur dans tes informations pour que cela ne fonctionne chez moi.

    Lors de l’installation de composer (que je ne connaissais pas) tu tapes ceci :
    curl -ks https://getcomposer.org/installer | php — –install-dir=/usr/bin

    ce qui installe dans le /usr/bin alors que sur ton screenshot ca te l installe sur /volume1/web très visiblement, étant dans le répertoire courant, il trouve composer et lance l installation quand tu rentres ceci :
    composer create-project symfony/framework-standard-edition mySfProject 2.1.7

    Il suffit simplement de remplacer « composer » par /usr/bin/composer.phar

    ce qui nous donnera:
    php /usr/bin/composer.phar create-project symfony/framework-standard-edition mySfProject 2.1.7

     
  4. geoffrey - Le Mercredi 13 mar 2013 à 20:10

    Si quelqu’un trouve la possibilité d’activer l’extension intl sur le synology je suis preneur ;)

    Je possède l’avertissement sur config.php que j’aimerais bien lever merci )

     
  5. Guimove - Le Mercredi 13 mar 2013 à 23:28

    Pour intl, je n’ai pas trouvé. Il semblerait que intl était disponible dans la liste des extensions PHP dans les versions 3.x de DSM, mais je n’ai rien trouvé depuis DSM 4.x.

    Merci pour la coquille, la procédure est toujours correcte, mais il suffit de faire correspondre « composer » à « chemin_d_instal/composer.phar »

    De plus, si « composer » est installé dans /usr/bin, il est possible d’utiliser la commande « composer » seul.

     
  6. geoffrey - Le Mercredi 13 mar 2013 à 23:56

    Merci pour votre réponse, je vais continuer à chercher également de mon côté. Si jamais ma recherche est fructueuse, je viendrai vous donner les infos. (concernant l extension intl)