Dernière modification 2 février 2013
Vous devez récupérer préalablement les sources d' Apache à l'URL httpd.apache.org , on récupère ensuite PHP à l'URL http://www.php.net /, et enfin MySQL , à l'URL www.mysql.com
Pour l'installation de MySQL reportez vous
à la page Apache
1.3.37+PHP 5.2.1+MySQL 5.0.33
Pour la configuration du lancement automatique d'Apache, des
pages webs utilisateur, des alias, des pages protégées,
des hôtes virtuels, des scripts CGI, de la gestion de MySQL
(avec
installation phpMyAdmin) et de LDAP, reportez vous
à la page Apache
1.3.37+PHP 5.2.1+MySQL 5.0.33
tar xvfz httpd-2.4.3.tar.gz
Cela va créer le répertoire httpd-2.4.3. Avant d'aller plus loin, si Apache est déjà installé sur votre système on va le supprimer, on va d'abord supprimer les modules PHP, pour vérifier :
rpm -qa | grep -i php
Si vous obtenez par exemple
php-gd-version
php-ldap-version
mod_php-version
php-common-version
php-version
On supprime en tapant rpm -e nom-du-package
Maintenant on va supprimer Apache, pour vérifier s'il est présent :
rpm -qa | grep -i apache
Si on obtient par exemple
apache-version
apache-conf-version
apache-modules-version
apache-common-version
Supprimez éventuellement les répertoires suivants /var/www, /var/log/httpd et /etc/httpd
http://apr.apache.org/
tar xvfz apr-1.4.6.tar.gz
apr-1.4.6
./configure
make
make install
Dans le répertoire d'Apache httpd-2.4.3 , on tape alors:
./configure --prefix=/usr/local/apache2 --enable-module=most --enable-shared=max
Par prefix on indique que les
répertoires d'Apache
contenant entre autre le fichier de conf se trouveront sous
/usr/local/apache2 c'est utile dans le cas où vous voulez
faire coexister deux versions d'Apache sur votre système.
J'ai du préalablement installer le
package db2-devel, on tape maintenant:
make
Et enfin en tant que root:
make install
Rajoutez la ligne /usr/local/apache2/lib dans le fichier /etc/ld.so.conf puis tapez
ldconfig
Pour lancer maintenant Apache, il faut taper:
/usr/local/apache2/bin/apachectl start
Maintenant votre navigateur préféré dans le champ URL taper http://localhost ou http://nomdelamachine et là la page d'accueil d'Apache apparaît, pour info celle-ci se trouve sous /usr/local/apache2/htdocs.
NOTE Si vous upgradez d'une ancienne version, vos fichiers de conf ne seront pas écrasés.
Pour un lancement automatique sous Mandriva
Pour un lancement automatique on prendra le fichier apachectl se trouvant sous /usr/local/apache2/bin et on le placera sous /etc/rc.d/init.d, et on le renommera httpd2
cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd2
On rajoutera en début de fichier juste après #!/bin/sh
#!/bin/sh
# Startup script for the Apache Web Server
#
# chkconfig: 345 85 15
# description: Apache is a World Wide Web server. It is used
to serve \
#
HTML files and CGI.
# processname: httpd
Pour un lancement automatique à l'état de marche 3,4 et 5 on doit normalement taper:
chkconfig --level 345 httpd2 on
Et pour un arrêt à l'état de marche 0, 1, 2 et 6
chkconfig --level 0126 httpd2 off
Pour lancer le serveur, il suffira maintenant de taper:
/etc/rc.d/init.d/httpd2 start
Pour un lancement automatique sous Ubuntu
Voilà un script de lancement, il faut l'appeler httpd2 et le placer sous /etc/init.d
#!/bin/bash
#
# apache Start the apache2 HTTP server.
#
# The variables below are NOT to be changed. They are there to make the
# script more readable.
NAME=apache
DAEMON=/usr/local/apache2/bin/httpd
PIDFILE=/usr/local/apache2/logs/httpd.pid
CONF=/usr/local/apache2/conf/httpd.conf
APACHECTL=/usr/local/apache2/bin/${NAME}ctl
# note: SSD is required only at startup of the daemon.
SSD=`which start-stop-daemon`
ENV="env -i LANG=C PATH=/bin:/usr/bin:/usr/local/bin"
trap "" 1
# Check that we're not being started by inetd
if egrep -q -i "^[[:space:]]*ServerType[[:space:]]+inet" $CONF
then
exit 0
fi
test_config() {
if [ ! -x $APACHECTL ]; then
echo "$APACHECTL is not executable, exiting"
exit 0
fi
# ensure we don't leak environment vars into apachectl
APACHECTL="$ENV $APACHECTL"
if ! $APACHECTL configtest 2> /dev/null
then
printf "Configuration syntax error detected. Not reloading.\n\n"
$APACHECTL configtest
exit 1
fi
}
should_start() {
if [ ! -x $DAEMON ]; then
echo "apache is not executable, not starting"
exit 0
fi
}
case "$1" in
start)
should_start
test_config
echo -n "Starting web server: $NAME"
$ENV $SSD --start --pidfile $PIDFILE --exec $DAEMON > /dev/null
;;
stop)
echo -n "Stopping web server: $NAME"
start-stop-daemon --stop --pidfile $PIDFILE --oknodo
rm -rf /var/lib/apache/mod-bandwidth/link/*
;;
reload | force-reload)
test_config
echo -n "Reloading $NAME configuration"
start-stop-daemon --stop --pidfile $PIDFILE --signal USR1
;;
restart)
test_config
echo -n "Restarting $NAME"
if ! start-stop-daemon -q --stop --pidfile $PIDFILE --signal HUP; then
$ENV $SSD --start --pidfile $PIDFILE --exec $DAEMON > /dev/null
fi
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart}"
exit 1
;;
esac
if [ $? -eq 0 ]; then
echo .
exit 0
else
echo " failed"
exit 1
fi
On donne les droits d'exécution
chmod 755 /etc/init.d/httpd2
Pour le lancer automatique au démarrage il faudra taper
update-rc.d httpd2 defaults
tar xvfz php-5.2.1.tar.gz
Cela va créer un répertoire php-5.2.1. A présent dans ce répertoire on tape:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/apache2/conf --enable-versioning --with-mysql --with-ftp --enable-bcmath=yes --enable-debug=no --enable-memory-limit=yes --enable-tracks-vars --with-gd --with-zlib --with-kerberos --enable-mbstring --with-mcrypt
Notes - Vous avez besoin du package flex contenant lex
- les options--with-gd --with-zlib --with-kerberos sont utiles pour l'utilisation des mods freeplayer de la freebox
- les options --enable-mbstring --with-mcrypt sont nécessaires pour phpMyAdmin elles requièrent l'installation des packages libmcrypt-dev et mcrypt
Taper ensuite:
make
Puis en tant que root
make install
Cette dernière commande va installer le module PHP
sous /usr/local/apache2/modules et modifier le fichier httpd.conf en rajoutant
LoadModule php5_module modules/libphp5.so
Dans le cas d'une ancienne installation avec PHP4, pensez à
mettre en commentaire la ligne suivante pour éviter les conflits
LoadModule php4_module modules/libphp4.so
On modifiera maintenant
manuellement le fichier httpd.conf pour qu'Apache prenne
en
compte PHP, à la suite des lignes
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
On rajoute
AddType application/x-httpd-php .php .php .php4 .phtml
AddType application/x-httpd-php-source .phps
Par ailleurs à la ligne
DirectoryIndex index.html index.html.var
On rajoutera
DirectoryIndex index.html index.htm index.php index.php index.php4
A présent on va copier le fichier php.ini-dist se trouvant dans le répertoire de PHP php-5.2.1 pour le mettre sous /usr/local/apache2/conf et en le renommant php.ini
cp ./php-5.2.1/php.ini-dist /usr/local/apache2/conf/php.ini
Dans le cas d'une ancienne installation de php, vous avez tout
intérêt à repartir du nouveau fichier php-dist.ini fourni et de
le remodifier.
Dans le répertoire /usr/local/apache/htdocs on
trouve les fichiers qui seront accessibles à partir de la page
d'accueil de votre serveur Apache.
On doit cependant renommer le fichier suivant.
mv index.html.fr index.html
On relance Apache
/usr/local/apache2/bin/apachectl restart
Créer maintenant le fichier infophp.php contenant
<?
phpinfo();
?>
Que vous placerez sous /usr/local/apache2/htdocs, dans l'URL de votre navigateur préféré, taper http://localhost/infophp.php ou http://nommachine/infophp.php et là magique devrait s'afficher des info sur la configuration de PHP sur votre système.

ATTENTION Si comme moi vous utilisez des URL du style http://www.funix.org/fr/linux/index.php?ref=apache&page=menu
c'est
à dire avec passage d'arguments cela risque de ne pas marcher,
pour plus d'info voir ici.
Le répertoire de log contient essentiellement deux fichiers:
- access_log listant les accès au serveur
- error_log listant les erreurs en tout genre
Le répertoire de modules modules contient les modules utilisables par Apache, pour info un module est une extension logicielle à Apache, lui permettant par exemple d'interpréter le PHP (module libphp5.so). Ce ne sont que les modules chargés dynamiquement qui sont dans ce répertoire.
Le répertoire /usr/local/apache2/conf contient:
- le fichier de configuration d'Apache http.conf
- mime.types fixe le type de fichier suivant l'extension du dit
fichier (.doc=msword, .ps=postscript, ...), ça
permet au client qui se connecte sur le serveur, de savoir comment
interpréter le fichier suivant son extension.
- magic sert pour le module mod_mime_magic
Vous trouverz également le fichier de config en cas de
serveur sécurisé SSL.
-ssl.conf
-ssl-std.conf
Et des fichiers de conf pour une configuration optimisée
haute performance
- highperformance.conf
- highperformance-std.conf
(...)
# Répertoire racine d'Apache
ServerRoot "/usr/local/apache"
(...)
#
# Timeout: The number of seconds before receives and sends time out.
#
# définition du timeout
Timeout 300
# nombre de serveurs à lancer au départ et
d'instances à lancer
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept
spare
# MaxSpareServers: maximum number of server processes which are kept
spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process
serves
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept
spare
# MaxSpareThreads: maximum number of worker threads which are kept
spare
# ThreadsPerChild: constant number of worker threads in each server
process
# MaxRequestsPerChild: maximum number of requests a server process
serves
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
(...)
# définition de l'adresse IP du port du serveur
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
# avec un deuxième serveur apache, vous pouvez indiquer un port
8080
# dans l'url du navigateur il faudra mettre http://url:8080
Listen 80
(...)
# On lance initialement httpd en tant que root, puis
immédiatement
# c'est l'utilisateur nobody (groupe nobody) qui en devient le
proprio
# ainsi s'il y a une faille dans Apache, le hacker au lieu de
devenir root
# devient nobody avec les droits qui vont avec
# pour vérifier que nobody est bien le proprio
# ps aux | grep httpd
User nobody
Group #-1
# ServerAdmin: Your address, where problems with the
server
should be
# e-mailed. This address appears on some server-generated
pages, such
# as error documents.
# En cas de problème un email sera envoyé au
webmaster, mettez donc
# ici l'adresse email du webmaster
ServerAdmin olivier@asterix.kervao.fr
(...)
# DocumentRoot: The directory out of which you will serve
your
# documents. By default, all requests are taken from this directory,
but
# symbolic links and aliases may be used to point to other locations.
# C'est dans ce répertoire qu'on va trouver la page d'accueil
d'Apache
DocumentRoot "/usr/local/apache/htdocs"
(...)
# UserDir: The name of the directory which is appended
onto a
user's home
# directory if a ~user request is received.
# Chaque utilisateur pourra mettre ses pages dans sa homedirectory
# dans un répertoire public_html, les pages seront
accessibles à l'URL
UserDir public_html
(...)
# Définition des fichiers d'entrée
DirectoryIndex index.html index.html.var index.htm index.php
index.php index.php4
# défintion des fichiers de protection des pages
AccessFileName .htaccess
(...)
# nom du fichier d'erreur
ErrorLog logs/error_log
# niveau de log
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
(...)
# ordre de préférence des langues
# LanguagePriority allows you to give precedence to some languages
# in case of a tie during content negotiation.
#
# Just list the languages in decreasing order of preference. We have
# more or less alphabetized them here. You probably want to change
this.
#
LanguagePriority fr en da nl et de el it ja kr no pl pt pt-br
ltz ca
es sv tw
Dans l'hypothèse où vous utilisez deux serveurs Apache (versions 1.3 et 2 par
exemple), vous pouvez spécifier le port 80 pour Apache 1.3 et le port 8080 pour Apache 2 en fixant dans le fichier
de configuration Listen
à 8080. Au niveau de la déclaration des hôtes
virtuels il faudra mettre quelque chose comme ça
NameVirtualHost 192.168.13.11:8080
<VirtualHost 192.168.13.11:8080>
ServerName tosh.kervao.fr
DocumentRoot /usr/local/apache2/htdocs
ErrorLog logs/tosh-error_log
TransferLog logs/tosh-access_log
</VirtualHost>
| [Retour page d'accueil FUNIX] | [retour haut de la page ] |