<!doctype linuxdoc system>
<article>
<title> PhpCompta Installation</title>
<author>
<name>originally written by Dany De Bontridder </name>
</author>
<date>$Revision: 1.22 $   $Date: 2005/10/30 21:19:30 $</date>
<abstract>
Ce document décrit l'installation complète de PhpCompta et explique comment 
ont été installés les programmes dont PhpCompta dépend. 
PhpCompta <url url="http://www.alchimerys.be/FR/phpcompta"  name="PhpCompta">, 
site savannah 
<url url="http://savannah.nongnu.org/projects/phpcompta/" name="PhpCompta Savannah">
<!-- Table of contents -->
<toc>
<sect>Avertissement 
<p> Si vous installez sur Linux, l'installation d'apache, postgres et php peut se
faire avec les "packages" standards 
fournis; ces "packages" sont largement suffisants. Les explications
données ici sur l'installation de ces produits sont destinées à ceux 
préfèrant le faire manuellement.

<p>Si vous installez sous Windows, il est assez compliqué de recompiler. 
Il est préférable d'utiliser les programmes fournis sur <url url="http://www.postgresql.org" 
name="Postgres"> et <url url="http://www.easyphp.org/" name="EasyPhp">.


<p> Cependant, les configurations des différents produits sont importantes
et devraient être lues avant d'appeler à l'aide.
</sect>

<sect>Postgresql (version 8.0.1 minimum)
<sect1>Installation
<p>
Soit avec des binaires préparés, soit à partir du code source
</p>
<p> Le plus simple est d'utiliser les binaires de votre distribution, ne
compiler ces programmes que si vraiment vous devez le faire ou que vous préfèrez
avoir la dernière version disponible.
</p>
<p>
Si vous décidez de le compiler vous-même, les
options suivantes fonctionnent
<verb>
./configure -with-tk --with-python --with-perl --prefix=/ou_vous_voulez
</verb>
</p>
</sect1>
<sect1>Configuration et démarrage de PostgreSql <label id="configuration">
<p>
Comme d'habitude pour postgres, il faut tout d'abord définir, créer
l'utilisateur postgres puis initialiser l'endroit où seront stocké vos données 
(variable env. PGDATA),
exemple
<tscreen><verb>
root#mkdir /data/psql
root#chown postgres /data/psql
root#su - postgres
postgres#initdb -D /data/psql
postgres#pg_ctl -D /data/psql -o '-i' start
</verb></tscreen>
</p>
<p>
Il est impératif que dans le fichier postmaster.conf vous ayez les options 
<verb>
tcpip_socket = true
port=5432
</verb>
D'autres options sont conseillées pour l'optimisation de Postgresql
</p>
<p>
ne pas oublier d'ajouter dans le PATH, l'endroit où se trouve les
binaires de postgres
<verb>
ex:
export PATH=$PATH:/opt/psql732/bin
</verb>
</p>
<p>
Il est impératif d'avoir soit l'option -i soit la directive tcpip_socket=true 
, sinon le server HTTP ne pourra pas contacter PostgreSql.
</p>
<P>
Dans PGDATA,vous trouverez le fichier nommé pg_hba.conf qui
vous permettra de régler la sécurité<newline>

Ce fichier doit au moins contenir la ligne:
<verb>
# TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK           METHOD
host    all         phpcompta   172.16.30.0         255.255.255.0   local
</verb>
Il vaut mieux remplacer 172.16.30.0 par l'adresse du server HTTP, dans
le cas où vous utilisez un VirtualHost avec une adresse IP, c'est
cette adresse qu'il vous faudra mettre
</p>
</sect1>
<sect1>Optimisation
<p> Posgresql est une base de données très rapide, cependant, il vous faudra configurer
pour pouvoir en bénéficier. Les paramètres par défaut sont prévus pour une machine qui n'a
que 16 Mb de RAM... Donc, aller voir la documentation sur Postgresql.org, chapitre 
Run-time Configuration.

<p> Les paramètres que vous pouvez utiliser si vous avez une machine d'au moins 256 Mb:
<itemize>
<item> Augmenter la zone mémoire pour les tri (dans postgres.conf) sort_mem = 8192; cette
zone mémoire est important car elle a trait à la mémoire utilisée pour les tris et les
jointures! attention ce paramètre donne la consommation mémoire par session !
 </item>
<item> Faites tourner régulièrement vacumdb -a -z grâce au crontab(une fois par jour)</item>
<item> Dans postgres.conf, les shared_buffers: calculées en page de 8Kb, 
la valeur par défaut
est de seulement 64, ce qui correspond à 512Kb, une meilleure valeur est 640 </item>

</itemize>
</sect1>
<sect1> Pour la sécurité
<p>Vous pouvez ajouter la sécurité à votre server Postgresql en changeant
dans pg_hba.conf. Mais avant de faire cela, ajoutez un mot de passe à
vos utilisateurs avec la commande remplacer .1. par le nom de l'utilisateur
et .2. par son mot de passe
<verb>
changement mot de passe 
alter user .1. password '.2.'
</verb>

<verb>
Sécurité
# TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK           METHOD
host    all         phpcompta   172.16.30.0         255.255.255.0   md5
local    all         phpcompta   172.16.30.0         255.255.255.0   md5
</verb>
Ensuite soit vous utilisez la variable d'environnement PGPASSWORD qui contient
votre mot de passe soit avec le fichier .pgpass dont la syntaxe est
<verb>
 host:port:database:username:password
</verb>
N'oubliez pas de mettre ce fichier en mode 600 !!!! Pour executer sans demande
de mot de passe host = localhost

</sect>

<sect> Apache
<sect1>Installation d'Apache
<p>
Si vous décidez de le compiler vous-même, les
options suivantes fonctionnent
<verb>
./configure --prefix=/opt/http2/ \
	    --enable-ssl \
	    --enable-http \
	    --enable-cgi \
            --enable-so \
            --enable-usertrack \
            --enable-headers \
            --enable-info
</verb>
</p>
</sect1>

<sect1> Configuration d'Apache
<P>
Le fichier httpd.conf doit au moins contenir. 
<verb>
LoadModule	php4_module	modules/libphp4.so
AddType application/x-httpd-php	.php4 .php3 .php .phtml
</verb>
Et si vous décidez d'avoir la même configuration que moi, mais ce
n'est pas obligatoire
<verb>
&lt; VirtualHost 172.16.30.150 &gt;
	ServerName site
	ErrorLog phpcompta-error.log
	TransferLog phpcompta-debug.log
	DocumentRoot /home/httpd/compta/html
&lt;/VirtualHost &gt;
</verb>

Apache se démarre avec apachectl start
</p>
<p>
Remarque : Pour plus d'information, voir le manuel d'Apache.

</sect1>
</sect>


<sect>PHP
<sect1>Installation de PHP 4.3.1
<p>
Il doit être compilé le dernier !!!
Si vous décidez de le compiler vous-même, les
options suivantes fonctionnent
<tscreen><verb>
./configure --prefix=/opt/php431 \
    --with-apxs2=/opt/http2/bin/apxs \
    --with-fastcgi \
    --with-zlib \
    --with-pgsql=/usr/local/psql \
    --with-mysql \
    --with-apache2=/software/httpd-2.0.44
</verb></tscreen>

le répertoire /software/httpd-2.0.44 est le répertoire ou vous installer
les sources d'apache
</p>
</sect1>

<sect1>Configuration de PHP :  Fichier php.ini
<P>
s'il n'existe pas, vous devez le créer, l'endroit
où vous le trouverez dépend des options de compilation. Dans le cas,
où vous avez compilé php de la même manière que moi, il se trouve
dans /opt/php431/lib.
Recopier simplement le fichier fourni à cet endroit.

Sinon, adaptez votre fichier, il doit avoir au minimum les options
suivantes
<verb>

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off


[Session]
session.save_handler      = files   ; handler used to store/retrieve data
session.save_path         = /tmp    ; argument passed to save_handler
                                    ; in the case of files, this is the
                                    ; path where data files are stored
session.use_cookies       = 1       ; whether to use cookies
session.name              = PHPSESSID
                                    ; name of the session
                                    ; is used as cookie name
session.auto_start        = 1       ; initialize session on request startup
session.cookie_lifetime   = 0       ; lifetime in seconds of cookie
                                    ; or if 0, until browser is restarted
session.cookie_path       = /tmp       ; the path the cookie is valid for

allow_call_time_pass_reference = on
register_argc_argv = on
session.bug_compat_42 = 1
session.bug_compat_warn = 0
session.use_trans_sid = 1
include_path=".:../include:addon"
</verb>
</p>
</sect1>
</sect>
<sect>Installation de PhpCompta 
<sect1>Première installation
<p>
On suppose que postgresql est installé correctement

<p>Etape
<itemize>
<item> Se connecter en tant que postgres et taper les commandes
<verb> 
createuser -h localhost -d  -P postgres phpcompta
createdb -h localhost -O phpcompta phpcompta
</verb>

<item>Décompacter le package dans le répertoire de votre choix, et configurer Apache pour qu'il
puisse accèder au sous-répertoire html. (voir plus haut la directive DocumentRoot)
<item>Eventuellement changer dans constant.php votre domaine (voir manuel : Domaine)
<item> 
Vous devez vous connecter sur http://votre_server/admin/setup.php
</itemize>
</sect1>
<sect1>Mise à jour
<p>Etape
<itemize>
<item> Faite un backup de toutes vos bases de données (cf pg_dumpall)
<item>Décompacter le package dans le répertoire de votre choix, 
et configurer Apache pour qu'il
puisse accèder au sous-répertoire html. (voir plus haut la directive DocumentRoot)
<item> 
Vous devez connecter sur http://votre_server/admin/setup.php
</itemize>
</sect1>
</sect>
<sect>Conclusion
<p>
En vous connectant à l'adresse
 http://votre_server/admin/setup.php; vous installerez
tout ce qu'il faut, testerez votre installation et surtout met à jour
les bases de données dans le cas d'une mise à jour. En cas de problème,
signalez-le nous.

<p>
IMPORTANT Vous devez effacer le répertoire html/admin après installation ou mise
à jour !!!!
</p>
</sect>


</article>
