Point de départ : aucun !!
J'avais tenté - sans succès - d'uploader mon application Symfony qui tournait en local (Mac OSX, Apache 2, MAMP Pro) sur un Serveur Privé. Outre le fait que je n'y suis pas arrivé, le transfert de TOUS les petits fichiers de Symfony était extrèmement long ...
Aujourd'hui, je me suis dit : installons une appli Symfony DIRECTEMENT sur le serveur distant par SSH !
Configuration côté Plesk
Mon Serveur privé a une interface Plesk 9, CentOs, php 5.1.6.
Je crée un compte client, dans lequel je crée mon domaine toto.net.
Si je vais à l'URL : http://www.toto.net, je vois la "Default Plesk Page". Normal.
Configuration côté SSH : php à jour
J'ouvre ma console SSH et me connecte en administrateur à mon Serveur Privé 1and1.
Si YUM était installé, ce serait cool, je pourrais upgrader mon php ! Je tente :
[root@ip-vds ~] yum upgrade
= listing !! Yum est installé !!
Hmm... après avoir testé "php -v", la version est toujours à 5.1.6... je crois que j'ai upgradé ce qui était déjà sur le Serveur. il faut donc que j'importe la dernière version de php.
[root@ip-vds ~]# wget -q -O - http://www.atomicorp.com/installers/atomic.sh | sh
j'obtiens :
Atomic Archive installer, version 1.1
Configuring the [atomic] yum archive for this system
Installing the Atomic GPG key: OK
Downloading atomic-release-1.0-10.el5.art.noarch.rpm: OK
Would you like to add the Plesk yum repository to the system?
Enable Plesk repository? (y/n) [Default: n]: n
Nota : j'ai répondu "non" à la question du Plesk Repository.
De nouveau : yum upgrade
= un long listing puis "Complete!"
php -v
= 5.2.11
Parfait, j'ai la dernière version de php :-)
Installation côté SSH : télécharge et installe Symfony
je me place dans le repertoire httpdocs :
[root@ip-vds /]# cd var/www/vhosts/toto.net/httpdocs/
[root@ip-vds
je crée une suite de répertoires :
[root@ip-vds
je me place dans le rep. vendor pour télécharger puis décompresser l'archive Symfony :
[root@ip-vds
= super rapide !!
je décompresse :
[root@ip-vds
Je vérifie que j'ai bien DEUX fichiers (le fichier et son archive)
[root@ip-vds vendor]# ls
= symfony-1.2.9 symfony-1.2.9.tgz
= symfony-1.2.9 symfony-1.2.9.tgz
je renomme le fichier décompressé :
[root@ip-vds
je vire l'archive :
[root@
= rm: remove regular file `symfony-1.2.9.tgz'? y
il ne reste plus qu'UN DOSSIER symfony qui servira à générer une application
[root@
= symfony
Installation côté SSH : Crée un projet Symfony puis une application Symfony
Le dossier Symfony est en bonne place pour créer un projet Symfony.
Après avoir vérifié que mon fichier /etc/php.ini a bien le safe_mode=Off, je génère mon projet :
[root@ip-vds app_symfony]# php lib/vendor/symfony/data/bin/symfony generate:project toto
[root@ip-vds
Nota : Un raccourci "symfony" a été créé à la racine de mon projet pour les commandes futures !! Comme par exemple :
[root@ip-vds app_symfony]# php symfony -V
= symfony version 1.2.9 (/var/www/vhosts/toto.net/httpdocs/app_symfony/lib/vendor/symfony/lib)
puis je génère la structure de mon application Symfony:
[root@ ip-vds app_symfony]# php symfony generate:app --escaping-strategy=on --csrf-secret="Unique$ecret" frontend
[root@ip-vds
= symfony version 1.2.9 (/var/www/vhosts/toto.net/httpdocs/app_symfony/lib/vendor/symfony/lib)
puis je génère la structure de mon application Symfony:
[root@
A ce stade, tous les fichiers de mon application Symfony sont créés. Si je veux transférer mon application qui tourne en local, je n'aurais qu'à transférer seulement :
- les dossiers de /apps
- les fichiers de config
- /web
- éventuellement des plugins ajoutés
MAIS : je n'aurai pas à transférer tous les fichiers /dossiers du dossier /lib :-)
Apache : pointe vers mon site !
Mon application est créée mais Apache ne le sait toujours pas !! Il pointe désespérement vers httpdocs ... Il faut maintenant modifier le DocumentRoot :
Dans le dossier /var/www/vhosts/toto.net/conf, je crée - à côté de "httpd.include" - le fichier "vhost.conf".
Contenu de ce fichier :
DocumentRoot /var/www/vhosts/toto.net/httpdocs/app_symfony/web
ServerName toto.net
<Directory /var/www/vhosts/toto.net/httpdocs/app_symfony/web>
AllowOverride All
Allow from All
<ifModule sapi_apache2.c>
php_admin_value open_basedir none
</IfModule>
<IfModule mod_php5.c>
php_admin_value open_basedir none
</IfModule>
</Directory>
Alias /sf /var/www/vhosts/toto.net/httpdocs/app_symfony/lib/vendor/symfony/data/web/sf
<Directory /var/www/vhosts/toto.net/httpdocs/app_symfony/lib/vendor/symfony/data/web/sf>
AllowOverride All
Allow from All
</Directory>
La première partie va faire pointer Apache vers le dossier "web" de mon application "app_symfony".
La seconde crée un alias pour que Symfony aille chercher images et Css pour afficher les éléments de son interface de développement.
Nota : je n'ai pas encadré ce code avec car ce fichier va être inclus dans httpd.include à l'intérieur de ces balises.
Il ne faut rien rajouter "à la main" dans le fichier "httpd.include" car Plesk le regénère à chaque nouveau domaine, alias rajouté ... Il faut donc lui demander de rajouter un Include lui-même :
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=toto.net
puis on redémarre le serveur :
/etc/init.d/httpd restart
puis on redémarre le serveur :
/etc/init.d/httpd restart
On tape alors http://www.toto.net et la page par défaut de Symfony s'affiche : Symfony Project created !!
Ne pas oublier les autorisations !
Dès que l'on va vouloir modifier les CSS, le dossier /apps, ... on va s'apercevoir que l'on ne peut rien transférer par ftp !!
Pourquoi ?
....
Parce que l'on a installé Symfony par SSH, donc en mode root, donc : tous les fichiers/dossiers de "app_symfony" ont les droits de root et appartiennent au groupe root !
Par conséquent, on ne va pas pouvoir transférer en ftp avec les droits de du groupe psaserv (=groupe de Plesk).
Vérifions cela en demandant les droits du répertoire "app_symfony" :
Modifions RÉCURSIVEMENT (= le répertoire et ses sous-répertoires) les droits du dossier "app_symfony" :
[root@ip-vds httpdocs]# chown -R user.groupe app_symfony/
dans mon cas : chown -R tintin45vu.psaserv app_symfony/
=
On peut maintenant transférer nos fichiers par ftp.
Nota : on n'oubliera pas ensuite de vider le cache :
[root@ip-vds app_symfony]# php symfony cc
Dès que l'on va vouloir modifier les CSS, le dossier /apps, ... on va s'apercevoir que l'on ne peut rien transférer par ftp !!
Pourquoi ?
....
Parce que l'on a installé Symfony par SSH, donc en mode root, donc : tous les fichiers/dossiers de "app_symfony" ont les droits de root et appartiennent au groupe root !
Par conséquent, on ne va pas pouvoir transférer en ftp avec les droits de
Vérifions cela en demandant les droits du répertoire "app_symfony" :
[root@ip-vds httpdocs]# ls -l app_symfony/
=drwxr-xr-x 3 root root 4096 nov 13 02:31 apps
drwxrwxrwx 3 root root 4096 nov 13 03:01 cache
drwxr-xr-x 2 root root 4096 nov 13 02:29 config
drwxr-xr-x 3 root root 4096 nov 13 03:01 data
drwxr-xr-x 2 root root 4096 nov 13 02:29 doc
drwxr-xr-x 3 root root 4096 nov 13 02:24 lib
drwxrwxrwx 2 root root 4096 nov 13 02:29 log
drwxr-xr-x 2 root root 4096 nov 13 02:29 plugins
-rwxrwxrwx 1 root root 446 nov 13 02:29 symfony
drwxr-xr-x 5 root root 4096 nov 13 02:29 test
drwxr-xr-x 6 root root 4096 nov 13 02:31 web
Modifions RÉCURSIVEMENT (= le répertoire et ses sous-répertoires) les droits du dossier "app_symfony" :
[root@ip-vds
vérifions que "user.groupe" a bien été appliqué aux éléments :
[root@ip-vds httpdocs]# ls -l app_symfony/ =
drwxr-xr-x 3 tintin45vu psaserv 4096 nov 13 02:31 apps
drwxrwxrwx 3 tintin45vu psaserv 4096 nov 13 03:01 cache
drwxr-xr-x 2 tintin45vu psaserv 4096 nov 13 02:29 config
drwxr-xr-x 3 tintin45vu psaserv 4096 nov 13 03:01 data
drwxr-xr-x 2 tintin45vu psaserv 4096 nov 13 02:29 doc
drwxr-xr-x 3 tintin45vu psaserv 4096 nov 13 02:24 lib
drwxrwxrwx 2 tintin45vu psaserv 4096 nov 13 02:29 log
drwxr-xr-x 2 tintin45vu psaserv 4096 nov 13 02:29 plugins
-rwxrwxrwx 1 tintin45vu psaserv 446 nov 13 02:29 symfony
drwxr-xr-x 5 tintin45vu psaserv 4096 nov 13 02:29 test
drwxr-xr-x 6 tintin45vu psaserv 4096 nov 13 02:31 web
On peut maintenant transférer nos fichiers par ftp.
Nota : on n'oubliera pas ensuite de vider le cache :
[root@ip-vds
1 commentaires:
Hi!
If you plan to put more than one SF app on your server, each one of course in a different vhost, you should install symfony in a more global directory.
With pear, just type :
pear channel-discover pear.symfony-project.com
then
pear install symfony/symfony
and it will be installed in /usr/local/PEAR and the symfony command will be available in your environment.
Enregistrer un commentaire