Installation d’un serveur Web avec les sources Apache 2.4.3 et PHP 5.4.8
Installation de Apache et PHP uniquement. MySQL n’est pas installé sur ce serveur.
Cette installation prévoit donc un serveur de base de données externe (mysql).
Installation du serveur Debian
Installation Debian Squeeze en « netinstall« . (noyau 2.6.32-5-amd64).
# Proposition de partitionnement du disque dur (ext3) pour un disque de 20Gb : # /boot primaire 100 Mb # / primaire 5Gb # /usr logique 12.8Gb # swap logique 3Gb Choix d'installation de base, sans interface graphique
Paquets à installer
apt-get install linux-headers-2.6.32-5-amd64 openssh-server rssh ntpdate #on synchronise l'heure ntpdate-debian apt-get install make
Configuration de SSH
Changement de port : sécurité accrue.
- Dans fichier /etc/ssh/sshd_config
- changement du port d’écoute (défaut = 22) à :
- Se renseigner sur les ports non assignés (par précaution) et en choisir un … (ici, 28, 30 ou 32 par exemple)
# What ports, IPs and protocols we listen for Port 28
Désactivation de la connexion en root
PermitRootLogin no
Désactivation du X11 forwarding
X11Forwarding no
- Indiquer à sshd où se trouve sftp-server: sftp-server est appelé par sshd, et gère les requêtes sftp. Généralement, le chemin est déjà renseigné …
Subsystem sftp /usr/lib/openssh/sftp-server
Configuration RSSH
L’intérêt de rssh est de donner à chaque utilisateur du serveur un shell réduit. Dans notre cas, ce shell sera réduit à sftp, c’est à dire aux commandes :
{cd lcd chgrp chmod chown help get lls ln lmkdir lpwd ls lumask mkdir put exit quit rename rmdir rm symlink version ! command ! ? }
- On fait une copie du fichier original provisoirement …
cp /etc/rssh.conf /etc/rssh.conf.ori
- Dans /etc/rssh.conf
logfacility = LOG_USER allowscp # module à décommenter allowsftp # module à décommenter umask = 022
Attention !
- Redémarrer le service ssh pour que tous les paramétrage soient pris en compte.
/etc/init.d/ssh restart
Installation des paquets Apache
# Serveur HTTPd Apache Version 2.4.3
# Documentation : http://httpd.apache.org/docs/2.4/
HTTPd
cd /home wget http://apache.websitebeheerjd.nl//httpd/httpd-2.4.3.tar.gz gzip -d httpd-2.4.3.tar.gz tar xvf httpd-2.4.3.tar
APR
- à mettre ensuite dans /home/httpd-2.4.3/srclib/apr :
cd /home wget http://apache.crihan.fr/dist//apr/apr-1.4.6.tar.gz gzip -d apr-1.4.6.tar.gz tar xvf apr-1.4.6.tar
APR-Util
- à mettre ensuite dans /home/httpd-2.4.3/srclib/apr-util :
cd /home wget http://apache.crihan.fr/dist//apr/apr-util-1.5.1.tar.gz gzip -d apr-util-1.5.1.tar.gz tar xvf apr-util-1.5.1.tar
Les développeurs qui téléchargent une version non officielle de l’arborescence des sources d’Apache HTTPd devront disposer de autoconf et libtool et exécuter buildconf avant de passer à l’étape suivante. Comme c’est une Debian et que les paquets sont des rpm, {je suppose mais je peux me tromper qu’}il ne s’agit pas de version officielle, donc par précaution, je fais à la mano … . Ca ne coûte rien et on est rassuré ! ou alors on peut essayer avec alien, mais ce n’est pas le cas ici.
apt-get install libtool autoconf
cd /home cp -r apr-1.4.6 /home/httpd-2.4.3/srclib/ cp -r apr-util-1.5.1 /home/httpd-2.4.3/srclib/ cd /home/httpd-2.4.3/srclib mv apr-1.4.6/ apr # enlever les numeros de version avant la compilation mv apr-util-1.5.1/ apr-util # enlever les numeros de version avant la compilation cd /home/httpd-2.4.3/ ./buildconf
La configuration se construit …
Sélection des modules Apache
- Les modules disponibles sont listés sur le site web de APACHE ci-dessous :
http://httpd.apache.org/docs/2.2/programs/configure.html
- Commande pour activer les modules à la main :
./configure [OPTION]... [VAR=VALUE]...
Dans mon cas,
- Les modules dont j’ai besoin pour cette installation, qui font partie des modules non activés par défaut, et doivent donc être activés à la main sont :
- –prefix=/usr/local/apache2 # par défaut
- –enable-cache
- –enable-deflate
- –enable-session
- –enable-expires
- –enable-file-cache
- # Ces headers doivent etre ensemble
- –enable-headers
- –enable-logio
- –enable-info
- –enable-mem-cache
- –enable-rewrite
- –enable-so # à activer en static
- –enable-charset_lite
- –with-apr=DIR|FILE
- –with-apr-util=DIR|FILE
- –with-z=DIR # module zlib à installer pour le –enable-mod-deflate
- Si zlib doit être utilisé pour compresser les pages web (mod_deflate), installer les paquets zlib et zlib-dev
apt-get install zlib1g libghc6-zlib-dev
# Pour les modules sélectionnés ci-dessus, libpcre3-dev est requis, donc : apt-get install libpcre3-dev
Compilation de APACHE SERVER
- Un script potentiellement valable listant les modules dont j’ai besoin ci-dessous :
./configure \ --with-mpm=worker \ --enable-cache=shared \ --enable-deflate=shared \ --enable-session=shared \ --enable-expires=shared \ --enable-file-cache=shared \ --enable-headers=shared \ --enable-logio=shared \ --enable-info=shared \ --enable-mem-cache=shared \ --enable-rewrite=shared \ --enable-charset_lite=shared \ --enable-so=static
- –with-z est activé automatiquement car deflate est dans la liste des modules à activer
- –with-apr est activé automatiquement car le dossier a été placé dans les sources de httpd ( /home/httpd-2.4.3/srclib/apr/ )
- de même pour –with-apr-util, ( /home/httpd-2.4.3/srclib/apr-util/ ) donc pas besoin de les mentionner ici
- –prefix n’est pas utile ici, si le répertoire d’installation est /usr/local/apache2 .
- La commande se résume à :
cd /home/httpd-2.4.3
./configure --with-mpm=worker
--enable-mods-shared="cache deflate session expires file-cache headers logio info mem-cache rewrite charset_lite" --enable-so=static
Compilation
make
Installation
make install
Personnalisation avec httpd.conf
cd /usr/local/apache2 nano conf/httpd.conf # Décommenter la ligne ci-dessous et indiquer le nom du serveur, ainsi que le port # Evite le message "could not reliably determine the server's fully qualified domain name for servername..." ServerName localhost:80 # Si un fichier .htaccess est utilisé (déconseillé), # Modifier l'option AllowOverride None à : AllowOverride All
Pour plus de détails, voir Paramétrage du serveur Apache HTTPd 2.4.3 avec httpd.conf
Commandes de démarrage / arrêt du serveur Web Apache2
/usr/local/apache2/bin/apachectl -k start
/usr/local/apache2/bin/apachectl -k stop
Voir aussi : automatiser le démarrage et arrêt du serveur Apache2 avec un script
Installation des paquets PHP
PHP5
Pour plus de détails : http://fr2.php.net/manual/fr/install.unix.apache2.php
cd /home wget http://fr2.php.net/get/php-5.4.8.tar.bz2 bzip2 -d php-5.4.8.tar.bz2 tar xvf php-5.4.8.tar
- Installation de la bibliothèque libxml++22.6-dev
apt-get install libxml++2.6-dev
Compilation de PHP
cd /home/php-5.4.8
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-zlib=/home/php-5.4.8/ext/zlib --with-pear=/home/php-5.4.8/pear
make
make test
make install
cp php.ini-development /usr/local/lib/php.ini # ou cp php.ini-production /usr/local/lib/php.ini
Httpd.conf
- Éditer le fichier httpd.conf pour charger le module PHP. Le chemin spécifié à droite de la chaîne LoadModule, doit correspondre au chemin système du module PHP. L’étape « make install » ci-dessus devrait avoir réalisé cette opération. (cf. fr2.php.net)
LoadModule php5_module modules/libphp5.so
- Indiquer à Apache d’analyser ces extensions comme étant des scripts PHP,
ajouter :
<FilesMatch "\.ph(p[2-6]?|tml)$"> SetHandler application/x-httpd-php </FilesMatch>
<Files *.php> SetOutputFilter PHP SetInputFilter PHP LimitRequestBody 9524288 </Files> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
- Ajouter index.php dans la section dir_module
<IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
Php.ini
- Si on utilise les short open tags, il convient ensuite de modifier le php.ini (situé dans /usr/local/lib/php.ini)
;;;;;;;;;;;;;;;;;;;; ; language options ; ;;;;;;;;;;;;;;;;;;;; short_open_tag = On
- Modifier la taille max de fichier pour l’upload si nécessaire
Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 64M
;;;;;;;;;;;;;;;;;;; ; Module Settings ; ;;;;;;;;;;;;;;;;;;; [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Europe/Paris
- Démarrer le serveur Web.
/usr/local/apache2/bin/apachectl start
- Le serveur devrait être accessible depuis son adresse IP, dans un navigateur …
ifconfig # pour récupérer son adresse, car le serveur est en dhcp pour l'instant ...
Installer l’accès FTP
Voir l’article Installer un serveur FTP avec vsftpd