Ceci est une ancienne révision du document !
Cette page est juste un mémo
Voici les paquets standards à installer
ii apache2 2.2.16-6+squeeze4 Apache HTTP Server metapackage ii apache2-mpm-worker 2.2.16-6+squeeze4 Apache HTTP Server - high speed threaded model ii apache2-utils 2.2.16-6+squeeze4 utility programs for webservers ii apache2.2-bin 2.2.16-6+squeeze4 Apache HTTP Server common binary files ii apache2.2-common 2.2.16-6+squeeze4 Apache HTTP Server common files ii mysql-client-5.1 5.1.49-3 MySQL database client binaries ii mysql-common 5.1.49-3 MySQL database common files, e.g. /etc/mysql/my.cnf ii mysql-server 5.1.49-3 MySQL database server (metapackage depending on the latest version) ii mysql-server-5.1 5.1.49-3 MySQL database server binaries and system database setup ii mysql-server-core-5.1 5.1.49-3 MySQL database server binaries ii php5 5.3.3-7+squeeze3 server-side, HTML-embedded scripting language (metapackage) ii php5-cgi 5.3.3-7+squeeze3 server-side, HTML-embedded scripting language (CGI binary) ii php5-cli 5.3.3-7+squeeze3 command-line interpreter for the php5 scripting language ii php5-common 5.3.3-7+squeeze3 Common files for packages built from the php5 source ii php5-curl 5.3.3-7+squeeze3 CURL module for php5 ii php5-gd 5.3.3-7+squeeze3 GD module for php5 ii php5-mcrypt 5.3.3-7+squeeze3 MCrypt module for php5 ii php5-mysql 5.3.3-7+squeeze3 MySQL module for php5 ii php5-suhosin 0.9.32.1-1 advanced protection module for php5 ii postfix 2.7.1-1+squeeze1 High-performance mail transport agent
Pour que php5 marche avec la version worker, il est indispensable d’installer le paquet
libapache2-mod-fcgid
Il faut ajouter les lignes suivantes dans le fichier /etc/apache2/httpd.conf
# pour faire marcher php5 avec apache2-mpm-worker AddHandler fcgid-script .php FCGIWrapper /usr/lib/cgi-bin/php5 .php Options ExecCGI
il faut aussi activer les modes suivant :
a2enmod cache a2enmod fcgid a2enmod headers a2enmod rewrite
Très important aussi, pour le php5, il faut configurer le fichier /etc/php5/cgi/php.ini mais il ne faut surtout pas négliger /etc/apache2/mods-available/fcgid.conf
Toutes les options ici http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxrequestlen
Problème rencontré et solution.
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Il suffit de modifier le fichier /etc/hosts et de rajouter un localhost.localdomain avant le localhost
Avant
127.0.0.1 localhost swp.localhost rdlaptop.rdomain
Après
127.0.0.1 localhost.localdomain localhost swp.localhost rdlaptop.rdomain
Votre fichier peut aussi ressembler à ca
127.0.0.1 localhost.localdomain localhost 77.77.77.77 p2pfr
Remplacez par ca
127.0.0.1 localhost.localdomain localhost 77.77.77.77 p2pfr.localdomain p2pfr
Surtout ne faite pas l’erreur de mettre
127.0.0.1 localhost.localdomain localhost 77.77.77.77 p2pfr.com p2pfr
Sinon apache ne prendra pas en compte la config de votre site avec comme nom de domaine p2pfr.com, il passera directement par la config default
Tous les logs d’apache se trouvent dans /var/log/apache2.
Dans mon cas, j’ai décidé de créer un répertoire par site web afin d’y stocker les logs access.log et error.log. Et c’est dans ce cas précis qu’il faut faire attention à logrotate !!
En effet, la config de logrotate pour apache est la suivante :
/var/log/apache2/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 640 root adm sharedscripts postrotate /etc/init.d/apache2 reload > /dev/null endscript }
Logrotate ne gère donc que le répertoire /var/log/apache2 mais pas ces sous répertoire !
Modifiez alors ce fichier en ajoutant le répertoire de destination /var/log/apache2/*/*.log.
/var/log/apache2/*.log /var/log/apache2/*/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 640 root adm sharedscripts postrotate /etc/init.d/apache2 reload > /dev/null endscript }
Si vous avez des sous-sous répertoire, ajoutez /var/log/apache2/*/*/*.log etc…
Pour ceux qui utilise awstats ou tout autre script qui doit lire les fichiers de log, pensez à modifier la ligne
create 640 root adm
par
create 644 root adm
J’ai constaté que lorsque apache est installé dans un LAN et que les connexions HTTP passent par un reverse proxy (ici pound) la variable PHP $_SERVER[REMOTE_ADDR] renvoie l’adresse ip du serveur proxy.
La 1ère solution aurait été de recoder le code de vos script php en remplacant $_SERVER[REMOTE-ADDR] par $_SERVER[X_FORWARDED_FOR] mais ce n’est pas pratique et pas très recommandable.
Il existe donc un module apache nommé rpaf ( voir http://stderr.net/apache/rpaf/ ) dispo dans les dépots debian.
Installé le via la commande
aptitude install libapache2-mod-rpaf
Ajoutez un petit de code dans votre config apache /etc/apache2/httpd.conf
<IfModule mod_rpaf.c> RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1, xx.xx.xx.xx </IfModule>
Remplacez les xx.xx.xx.xx par l’ip public de votre serveur proxy.
Activez le module et rechargez apache
a2enmod rpaf service apache2 reload
et voila ;)
Les log de php sont par défaut un truc de ouf… Si vous regardé les log error.log d’apache vous trouverez des milliers de ligne de mod_fcgid: stderr: PHP Notice: et il convient de modifier php.ini pour éviter toutes ses lignes qui ne servent à rien et qui remplit/fait ramer votre serveur pour rien.
/etc/php5/cgi/php.ini
Remplacez ca
error_reporting = E_ALL & ~E_DEPRECATED
par ca
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
Ensuite on recharge apache2
service apache2 reload
— auteur edmc73