Chapitre: Configurer le serveur
« Créer une application | ^ Mise en route |
− Table des matières
Configuration de PHP ¶
- magic_quotes_gpc et magic_quotes_runtime doivent être à
Off
. Si ce n'est pas le cas, il faut activer le plugin magicquotes livré avec jelix. - session.auto_start doit être à 0
- safe_mode doit être à
Off
(À cause des nombreux fichiers temporaires créés par jelix, il peut être difficile de configurer une installation avec Jelix avec le safe_mode activé)
Il est également recommandé de mettre ces valeurs :
- register_globals = off
- asp_tags = off
- short_open_tag = off
Un phpinfo() peut vous permettre de vérifier votre configuration. Par défaut la configuration se trouve dans un fichier nommé php.ini
.
Sur un serveur OVH mutualisé ¶
Si votre serveur de production est chez OVH, vous devez spécifier que vous utilisez PHP 5 (par défaut c'est PHP 4), sinon il y a des parse error. Ça se fait via le fichier ".htaccess" qui sera à la racine publique du site (www/) et vous devez indiquer :
SetEnv PHP_VER 5 SetEnv SESSION_USE_TRANS_SID 0
La seconde ligne indique qu'il ne faut pas passer le cookie de session dans l'URL.
Configuration du serveur ¶
Voici ce qu'il faut configurer au niveau du serveur.
Note : À chaque fois que vous modifiez la configuration du serveur web pour votre site, il faut supprimer les fichiers temporaires de jelix (dans temp/myapp
etc par ex), afin que Jelix prenne en compte la nouvelle configuration.
Exemple :
sudo rm -rf temp/myapp/*
Si vous pouvez spécifier le document root ¶
Si vous pouvez spécifier la racine du site en modifiant les fichiers de configuration du serveur web ou via une interface d'administration comme le proposent certains hébergeurs, indiquez alors le répertoire myapp/www/
comme étant la racine du site.
Par exemple, avec apache, vous indiquerez dans le fichier httpd.conf
, quelque chose comme :
<VirtualHost *>
ServerName www.monsite.com
DocumentRoot /home/monsite/myapp/www/
</VirtualHost>
<Directory "/home/monsite/myapp/www/">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Vous devez indiquer aussi un alias vers le répertoire lib/jelix-www/
, en le nommant jelix :
<VirtualHost *>
ServerName www.monsite.com
DocumentRoot /home/monsite/myapp/www/
Alias /jelix/ "/home/monsite/lib/jelix-www/"
</VirtualHost>
<Directory "/home/monsite/myapp/www/">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/home/monsite/lib/jelix-www/">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Note : vous pouvez indiquer un autre nom que "jelix" pour l'alias. Vous devez alors l'indiquer dans l'option jelixWWWPath dans le fichier de configuration de l'application myapp/var/config/defaultconfig.ini.php
, section urlengine
.
Et enfin dans ce même fichier vous ajusterez l'option basePath, en indiquant le chemin jusqu'au index.php (ici donc, /) :
basePath="/"
Vous pouvez laisser cette option vide, Jelix la devinera tout seul, sauf pour des applications dans lesquelles vous avez plusieurs points d'entrée dans des répertoires différents.
Ainsi, en tapant http:www.monsite.com vous accédez à votre site, et http:www.monsite.com/jelix/, à jelix-www/
, qui contient un certain nombre de scripts javascript utiles, des ressources XUL etc..
Si vous ne pouvez pas spécifier le document root ¶
Dans ce cas, il est préférable de déplacer le contenu du répertoire monsite/myapp/www
à la racine de votre site, monsite/
.
Vous devriez donc obtenir une arborescence comme ceci :
monsite/ myapp/ lib/ temp/ index.php
Ici dans notre exemple, index.php
est un point d'entrée jelix de l'application. Il faut le modifier pour changer les chemins relatifs qu'il contient, et faire de même pour le fichier myapp/application.init.php
. Par exemple, après modification, le fichier index.php
devrait ressembler à ceci dans notre exemple :
require_once ('myapp/application.init.php');
require_once (JELIX_LIB_CORE_PATH.'request/jClassicRequest.class.php');
$config_file = 'index/config.ini.php';
$jelix = new jCoordinator($config_file);
$jelix->process(new jClassicRequest());
Il faut aussi modifier le fichier myapp/project.xml
pour modifier le chemin de chaque répertoire déplacé (les chemins doivent être relatifs au chemin du fichier project.xml
) :
<project xmlns="http://jelix.org/ns/project/1.0">
<!-- ... -->
<directories>
<config>./var/config/</config>
<log>./var/log/</log>
<var>./var/</var>
<www>../</www>
<temp>../temp/myapp/</temp>
</directories>
<entrypoints>
<!-- ... -->
</entrypoints>
</project>
Il faut ensuite déplacer le répertoire lib/jelix-www/
à la racine et le renommer en "jelix". Vous obtiendrez :
monsite/ myapp/ jelix/ lib/ temp/ index.php
Note : vous pouvez indiquer un autre nom que "jelix" pour ce renommage. Vous devez alors l'indiquer dans l'option jelixWWWPath dans le fichier de configuration de l'application, myapp/var/config/defaultconfig.ini.php
, section urlengine
.
- *Attention : il est fortement recommandé de ne pas mettre vos propres scripts et css dans ce répertoire jelix copié.**
Sinon les futures mises à jour risquent d'être plus compliquées, et vos successeurs ou collègues risquent d'être un peu
perdu, en ne sachant pas ce qui vient de jelix et ce qui vient de votre appli. Bref, ne touchez pas au contenu de
jelix-www ou du répertoire qui est la copie de jelix-www. Mettez vos propres scripts dans un autre répertoire, par
exemple dans
monsite/js/
.
Dans le fichier myapp/application.init.php
(et dans tous les autres fichiers *.init.php
qui sont dans myapp/
), vous devez modifier la constante JELIX_APP_WWW_PATH :
define ('JELIX_APP_WWW_PATH', realpath(JELIX_APP_PATH.'../').'/');
Vous pouvez alors taper l'adresse de votre site (http:www.monsite.com par exemple, ou http:localhost/)
Spécifier une extension de fichier autre que .php ¶
Sur certains serveurs, il vous est proposé PHP4 et PHP5 à la fois. En général, les fichiers .php sont des fichiers PHP4, et les fichiers .php5, des fichiers PHP5. Il vous faut donc faire des modifications pour que votre application jelix fonctionne avec PHP5. Deux façons avec Apache, selon les possibilités.
Par le .htaccess ¶
Dans le répertoire www
de votre application rajoutez un fichier .htaccess
et mettez y :
AddHandler php5-script .php
Pour d'autres hébergeurs comme OVH, les serveurs fonctionnent par défaut en php 4. Il suffit de rajouter la ligne suivante dans le fichier .htaccess
.
SetEnv PHP_VER 5
Et vous n'avez rien d'autre à faire. Si ça ne fonctionne pas, lisez la documentation de votre hebergeurs, ou essayez la solution suivante.
En renommant l'extension ¶
Renommer le fichier index.php
en index.php5
. Par contre, vous n'avez pas besoin de renommer les fichiers php des autres répertoires de jelix !
Dans le fichier de configuration var/config/defaultconfig.ini.php
, indiquez l'extension dans la partie urlengine
:
entrypointExtension = .php5
Configuration pour les urls "cools" ¶
Pour pouvoir utiliser des urls significatives avec le système d'url automatique de jelix, il faut activer dans apache (au niveau de la configuration serveur ou dans le .htaccess
si cela est permis) :
Options +Multiviews
Et pour Apache 2, rajouter :
AcceptPathInfo on
Pour vérifier que cela fonctionne, créez sur votre site web un fichier test.php
qui affiche phpinfo()
et essayez l'url : monsite.com/test/foo/bar
. Le phpinfo devrait s'afficher, et vous devriez avoir dans $_SERVER['PATH_INFO'] la chaine "/foo/bar" (voir tout en bas de l'affichage de phpinfo).
Droits sur les répertoires ¶
Vous devez donner le droit en écriture à l'utilisateur exécutant votre serveur web (apache ou autre) au moins sur le répertoire myapp/var/log/
, ainsi que tous les répertoires dans le répertoire temp/
.
Exemple, sur un serveur debian/ubuntu :
sudo chown www-data:www-data temp/myapp* myapp/var/log
sudo chmod g+w temp/myapp* myapp/var/log
Peut être que pour certaines applications, il y a d'autres répertoires à configurer de la sorte dans myapp/var/
. Renseignez-vous dans la procédure d'installation spécifique à cette application si il y en a une.