Table of Contents

Installer un serveur de développement

Il s'agit d'installer un envirronnement de développement pour un projet statoFramework sur un poste local. Si vous disposez d'un serveur correctement configuré pour utiliser stato vous pouvez sauter cette étape. Vous devez au minimum avoir PHP 5.1, avec les extensions dom, simplexml, pcre, session, spl, mbstring et mcrypt (seules les 2 dernières ne sont en général pas installées par défaut). La version ligne de commande de PHP (PHP-CLI) est également nécessaire pour utiliser les scripts d'administration. Le mod_rewrite d'Apache devra être activé.

Le serveur ne doit pas être utilisé tel que décrit ici en production. J'ai délibérément chosi de ne pas utiliser WAMP ni EasyPHP qui sont en fin de compte plus pénible à configurer.

Installer apache 2

ou en lien direct ici http://mirrors.linhub.com/apache/httpd/binaries/win32/apache_2.2.11-win32-x86-openssl-0.9.8i.msi

Activer le mode rewrite : Rechercher modRewrite, décommenter la ligne :

 LoadModule rewrite_module modules/mod_rewrite.so

Cela permet à Stato de réécrire les URL proprement sans cela Stato ne fonctionnera pas.

Maintenant, on va teste que apache fonctionne: Il faut ouvrir un navigateur et taper localhost dans la barre d'adresse. Une page affichant “It works.” doit s'afficher. Si ce n'est pas le cas, appelez Damien!!!

Installer PHP5

http://www.php.net/get/php-5.2.9-2-win32-installer.msi/from/a/mirror

Choisir le web serveur Apache 2.x Choisir le répertoire 'conf' d'apache quand l'installer le demande.

Prendre soin de sélectionner les extensions suivante pour l'installation :

  * program
   * tout cocher
  * extension
   * bzip2
   *dba
   * exif
   * gd2
   * Multy-byte string
   * mcrypt
   * mysql
   * mysqlLi
  * openSSL
  * PDO
   * PDO-MYSQL
   * ODBC
  * SOAP
  * sockets
  * XML-RPC
  * zip
  * Extra
   * tout cocher

A ce stade il est très préférable de redémarrer, sans quoi il se peut que les extensions de PHP ne soient pas prises en comptes.

Les deux lignes suivantes devraient être ajoutées automatiquement au fichier httpd.conf d'apache :

PHPIniDir "C:/Program Files/PHP/"
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"

Configurer apache et PHP

Nous allons configurer apache pour préparer l'installation de stato : Dans le fichier httpd.conf (répertoire conf d'apache) remplacer la ligne DocumentRoot : (c'est l'endroit ou apache va chercher votre site quand vous taper http://localhost/monsite dans votre navigateur)

DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"

par le chemin vers votre répertoire de travail :

DocumentRoot "E:/www"

Chercher la ligne suivante :

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">

remplacez là par le chemin de votre répertoire de travail

<Directory "E:/www">

Vérifier que “IfModule dir_module” comporte bien les extensions dont vous avez besoin

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.shtml index.wml index.pwml index.php
</IfModule>

Il se peut qu'il soit nécessaire d'ajouter la ligne suivante si vous installez apache 2.2 :

AddType application/x-httpd-php .php

Pour les versions plus anciennes il suffit d'ajouter ”.php” à côté de la ligne contenant ”.html” Normalement l'installeur de PHP devrait prendre cela en charge, mais ce nefut pas le cas pour ma dernière installation

Pour tester le bon fonctionnement de php5 et apache il faut créer un fichier index.php, dans lequel il faut écrire :

<?php
phpinfo();
?>

Placer le fichier index.php dans le répertoire de travail ici “e:/www”

Redémarrer le serveur apache ; à cette à adresse http://localhost/index.php un tableau devrait s'afficher Si cela n'est pas le cas, il se pourrait bien qu'il soit nécessaire de redémarrer windows. Linuxiens ne riez pas, il a fallu redémarrer ubuntu Server de la même manière pour que PHP daigne fonctionner.

Dans le répertoire “c:/program files/PHP” se trouve un fichoer php.ini Vérifiez que les lignes suivantes soient présentes avec les bons paramètres et décommentées (sans le ”;”).

max_execution_time = 10     ; Maximum execution time of each script, in seconds
display_errors = on
error_prepend_string = "<font color=#fd036d>"
error_append_string = "</font>"

Mettez 10 ou une valeur bien inférieure à celle de votre serveur de production.

Activer mcrypt : il faut copier “libmcrypt.dll” qui se trouve dans “c:/Programm Files/PHP/” dans “c:/windows/system32/” Puis vérifier que les lignes suivante existent dans le PHP.ini (dans c:/programm Files/PHP/)*

[PHP_MCRYPT]
extension=php_mcrypt.dll

Installer MYSQL

Lien indirect : http://dev.mysql.com/downloads/mysql/5.1.html#downloads iniutile de se logger il y a un lien en dessous de la boite de loggin “no thank”, non merci je ne veux pas remplir de questionnaire. Lien direct http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.35-win32.msi/from/http://mir2.ovh.net/ftp.mysql.com/

* Installer MySQLServer en choisissant Complete installation * Configurer le serveur une fois l'installation finie

Installer Stato

Si tout fonctionne, vous pouvez créer votre application stato dans le répertoire de travail vérifiez les prérequis à l'aide du phpinfo. Vous devriez être prêt à installer stato ; je vous renvoie à la documentation de stato “installation” http://stato-framework.org/documentation/fr/installation

Dans le fichier C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-languages.conf, il faut ajouter la ligne suivante si elle n'y est pas.

AddDefaultCharset UTF-8

créer des alias

Quand vous aurez créé votre application vous aurez peut être besoin de créer des alias . A titre indicatif voici mon httpd.conf

Si vous créez des alias, pensez à bien vérifier que vous avez un fichier .htaccess dans le répertoire public de votre application. Voici ce qu'il doit contenir :

RewriteEngine On

# If your application is accessed via an Alias directive,
# then you MUST also set the RewriteBase in this htaccess file.
# ici mettez le nom de votre alias à la place de ilovebeer
RewriteBase /ilovebeer

#for google accelerator
#RewriteCond %{HTTP:x-moz} ^prefetch
#RewriteRule ^/*admin/.* - [F,L]
RewriteRule ^$ cache/index.html [QSA]
RewriteRule ^([^.]+)$ cache/$1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

A titre indicatif voici ma configuration d'apache, on note que j'ai ajouté un virtual host et un alias le documentRoot se trouve encadré dans le virtualHost. Je vous conseille de sauvegarder votre fichier httpd.conf puis de modifier le mien pour qu'il corresponde à vos besoins. Dans votre fichier final vous pouvez retirer les commentaires d'origine de manière à le rendre plus lisible.

  
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2"
Listen 80

LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>


User daemon
Group daemon

</IfModule>
</IfModule>


PHPIniDir "C:/Program Files/PHP/"
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.shtml index.wml index.pwml index.php
</IfModule>


<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>


ErrorLog "logs/error.log"
LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access.log" common
</IfModule>

<IfModule cgid_module>
</IfModule>

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
    AllowOverride All
    Options None
    Order allow,deny
    Allow from all
</Directory>

DefaultType text/plain

<IfModule mime_module>
  
    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

</IfModule>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

<Virtualhost *:80>

	ServerAdmin you@domain.com
	ServerName localhost:80
 
	DocumentRoot "E:/mes sites/www"
	<Directory />
		Options FollowSymLinks
		AllowOverride All
		Order deny,allow
		Deny from all
	</Directory>	

	<Directory "E:/mes sites/www">
		Options Indexes FollowSymLinks
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>  
</Virtualhost>

<IfModule alias_module>

  Alias /monApp "E:/chemin/vers/monApp/public"	
    <Directory "E:/chemin/vers/monApp/public">
        Options FollowSymLinks Indexes
        AllowOverride All
        Order deny,allow
	Allow from all
   </Directory>
</IfModule>

Attention :

il ne faut pas oublier de modifier le chemin d'instalation de stato dans : monApp/conf/boot.php

j'ai modifié mon fichier de configuration de manière à ce qu'il prenne en compte le chemin relatif de stato:

// Uncomment below to force Stato in production mode
// when you don't control web server
//$_SERVER['STATO_ENV'] = 'production';
// Dont't change code below. Configuration is done in conf/environment.php
define('STATO_CORE_PATH', str_replace("\\" ,"/",dirname(__FILE__)).'/../../../stato');
define('STATO_APP_ROOT_PATH', str_replace('\\', '/', realpath(dirname(__FILE__).'/..')));
define('STATO_ENV', ((isset($_SERVER['STATO_ENV'])) ? $_SERVER['STATO_ENV'] : 'development'));
require(STATO_CORE_PATH.'/common/lib/initializer.php');
SInitializer::boot();
?>

Attention il faut prendre pour acquis que stato se trouve trois répertoire au dessus en effet j'ai crée les répertoire suivant

* stato