Hébergement d’un site CakePHP chez OVH (mutualisé)
Ce tutorial est valable pour les offres d’hébergement mutualisé suivantes :
- 20 GP
- 60 GP
- 300 GP
- 90 PLAN
- 240 PLAN
- 720 PLAN
- MEDIA PLAN
- XXL PLAN
Nous considérons que les offres inférieures au 20 GP sont trop faibles pour accueillir un site CakePHP qui espère attirer un minimum de visiteurs.
1. Arborescence distante
Lors de la première connexion sur l’espace FTP, l’arborescence à la racine de l’hébergement est la suivante :
cgi-bin/
requetes/
sessions/
www/
Le répertoire www/ est la racine du nom de domaine. Tout ce qui se trouve en dehors de www/ est inaccessible par http.
1.1 Le cœur de CakePHP
Nous téléchargeons la dernière version de CakePHP sur le site officiel (actuellement, la 1.2.0.6311-beta), la décompressons et l’uploadons à la racine de l’hébergement. On obtient l’arborescence suivante :
cake_1.2.0.6311-beta/
cgi-bin/
requetes/
sessions/
www/
Nous allons maintenant créer un “lien symbolique”, une sorte de raccourci, vers le cœur de CakePHP en nous connectant à notre hébergement par SSH. Nous suivons les instructions indiquées ici : SSH sur un serveur mutualisé OVH. Une fois parvenus sur l’invite de commande, nous tapons :
ln -s cake_1.2.0.6311-beta cakephp
Si nous rafraîchissons le FTP, l’arborescence fait maintenant apparaître :
cake_1.2.0.6311-beta/
cakephp/
cgi-bin/
requetes/
sessions/
www/
L’intérêt de créer ce lien symbolique est double :
- En cas de mise à jour de la version de CakePHP, il n’est pas nécessaire de mettre à jour le fichier
{app}/www/index.phpavec le nouveau chemin, à condition que dans ce fichier nous ayons bien indiqué le chemin vers le lien symbolique et non vers le répertoire réel. - Si la mise à jour du cœur de CakePHP ne se passe pas bien, il suffit de recréer le lien symbolique vers l’ancienne version pour que tout refonctionne.
1.2 Les fichiers de l’application
Retournons dans le FTP et uploadons les dossiers de notre application à la racine de l’hébergement, nous devons obtenir l’arborescence suivante :
cake_1.2.0.6311-beta/
cakephp/
cgi-bin/
config/
controllers/
locale/
models/
plugins/
requetes/
sessions/
tests/
tmp/
vendors/
views/
www/
app_controller.php
app_model.php
Nous plaçons ensuite le contenu de notre répertoire webroot/ dans le répertoire www/ après en avoir supprimé le contenu d’attente mis par défaut par OVH :
cake_1.2.0.6311-beta/
[...]
views/
www/
- css/
- files/
- img/
- js/
- .htaccess
- css.php
- favicon.ico
- index.php
- test.php
app_controller.php
app_model.php
2. Configuration distante
2.1. Le fichier /config/core.php
Une seule ligne à modifier dans ce fichier, la 43 :
43 | Configure::write('debug', 2); |
Devient :
43 | Configure::write('debug', 0); |
Ainsi les messages d’erreurs et les avertissements n’apparaissent pas au visiteur, évitant ainsi de donner de précieuses informations à une personne mal intentionnée.
2.2. Le fichier /config/database.php
Après avoir créé une nouvelle base de données sur l’hébergement en nous connectant au Manager v3 d’OVH, nous récupérons les 4 paramètres de connexion (nom de l’hôte MySQL, nom de la base, login et mot de passe) pour les inscrire dans la variable $default du fichier, ligne 73 :
73 74 75 76 77 78 79 80 81 82 83 84 | var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'nom_de_l_hote', 'port' => '', 'login' => 'notre_login', 'password' => 'notre_mot_de_passe', 'database' => 'notre_base_de_donnees', 'schema' => '', 'prefix' => '', 'encoding' => '' ); |
2.3. Le fichier /www/index.php
C’est dans ce fichier que nous devons renseigner CakePHP sur son répertoire de travail et le chemin vers les fichiers du cœur. Nous changeons uniquement la ligne 57 :
57 | define('CAKE_CORE_INCLUDE_PATH', 'C:/Program Files/CakePHP/cake_1.2.0.6311-beta'); |
Devient :
57 | define('CAKE_CORE_INCLUDE_PATH', '/home/[notre_login_ftp]/cakephp'); |
Exception sur les 20 GP : le nom du répertoire après ‘home’ n’est pas le login FTP mais un autre nom, que vous pouvez déterminer avec la fonction phpinfo().
2.4. Le fichier /www/.htaccess
Le fichier par défaut fourni par CakePHP est le suivant :
1 2 3 4 5 6 | <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule> |
Nous le modifions pour obtenir :
1 2 3 4 5 6 7 | SetEnv PHP_VER 5
SetEnv SESSION_USE_TRANS_SID 0
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L] |
La première ligne force l’exécution des scripts PHP en version 5, la deuxième évite de faire transiter les id de sessions dans les url.
Nous supprimons la condition IfModule pour deux raisons :
- le module d’apache mod_rewrite ne s’appelle pas comme ça chez OVH, ils ont un module fait maison qui le remplace ;
- la réécriture d’url est activée par défaut chez OVH (attention : sauf sur les 20 GP, encore eux !).
Note : surtout bien penser au / devant index.php à la dernière ligne, sinon tous les liens seront cassés et nous n’aurons ni images ni feuilles de style.
Pierre-Emmanuel Fringant
Bonjour,
Dans le .htaccess on peut se servir de la règle :
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
chez OVH, ça sert souvent, je pense à SPIP par exemple.
Le coup du lien symbolique, chapeau !
4 février 2008 à 20:56
Auteur : pluriels