Ceci est une ancienne révision du document !
Serveur HTTP Apache 2
Apache est l'un des serveurs web les plus utilisés. Il est produit par la « Apache Software Foundation ». C'est un logiciel libre fourni sous la licence spécifique Apache, licence (en).
Les références à prendre en compte pour comprendre la configuration d'Apache, sont la documentation officielle et les ressources présentes sur votre système : /usr/share/doc/apache2/README.Debian.gz notamment ainsi que les pages de manuel.
Pré-requis
- Quelques connaissances de base des protocoles HTTP, les noms de domaine et le DNS et les réseaux IP ;
- Un réseau local en état de marche (IP attribuées, connexion à l'Internet) ;
- Un nom de domaine pleinement qualifié (ou à défaut la possibilité de gérer un pseudo domaine localement).
Introduction : HTTP
Qu'est-ce que le Web ?
Le Web est un des nombreux services disponibles sur Internet. Il s'agit de l'ensemble des documents accessibles par le protocole HTTP (par un navigateur Web). Une caractéristique essentielle du Web est la capacité de passer d'un document à un autre par des liens hypertexte. Un site Web est quant à lui un ensemble de pages Web, liées entre elles.
Un site Web a une adresse, comme celle du site Ubuntu-fr : http://ubuntu-fr.org.
La page Web principale de ce site propose des liens hypertexte vers d'autres pages et d'autres sites, par exemple : http://ubuntu-fr.org/telechargement.
Attention à ne pas faire de confusion entre Web (service HTTP) et Internet (le réseau mondial). Dans ce domaine les imprécisions sont monnaie courante et l'on parle systématiquement à tort de navigateur ou de site internet, alors qu'il s'agit de navigateur web , ou site web.
HTTP et navigation
Pour accéder à un site Web, il vous faut utiliser un client Web, communément appelé navigateur web, par exemple : Firefox, Lynx, Chromium, etc.
Pour visiter un site web, vous devez saisir son URI (adrresse web) dans la barre d'adresses de votre navigateur.
Une URI, ou adresse web se décompose ainsi :
protocole://nom_de_domaine/dossier/page.html
- le Protocole_réseau : http, https, ftp…
- lenom_de_domaine : example.com
- éventuellement un chemin d'accès à une ressource spécifique : /dossier/page.html
Les nom de domaines sont délivrés par les registraires qui sont autorisés à les déléguer
Vous pouvez louer un nom de domaine chez un prestataire qui a reçu cette délégation.
Le protocole qui nous intéresse ici est HTTP1) qui est l'acronyme anglais de Protocole de Transfert HyperTexte.
Un document hypertexte est un document contenant des hyperliens.
Ceux-ci permettent de lier les pages les unes avec les autres. Ainsi, vous pouvez naviguer grâce à des liens sur les pages.
Cet ordinateur, auquel vous vous connectez pour lire cette documentation, héberge à cette adresse un logiciel qui fournit les pages demandées. Apache est le plus utilisé.
Il existe une version sécurisée du HTTP : le HTTPS2).
Afin de différencier quel protocole on utilise, on leur réserve un port3), par défaut le 80 pour le mode non sécurisé et le 443 pour le mode sécurisé.
Il faut toutefois noter que les conventions ci-dessus peuvent ne pas être respectées si le client et le serveur sont cohérents entre eux et que le nouveau numéro choisi n'est pas, par ailleurs, déjà utilisé.
Mode de fonctionnement sommaire
Au moment de son démarrage, Apache charge les fichiers de configuration de la machine locale et se met en attente de requêtes sur les interfaces réseaux.
Lorsque vous utilisez votre navigateur Web (un client HTTP), que vous cliquiez sur un lien ou que vous rentriez directement l'adresse dans la barre d'adresse, vous effectuez une requête :
- Le client détermine et se connecte au serveur (voir documentation DNS) ;
- Le client effectue une requête HTTP sur le serveur, par la méthode GET du protocole HTTP : il lui demande une page ;
- Après l'analyse de la requête, le serveur renvoie la page concernée sous forme de code dont on peut spécifier le format de données (pour ceux qui connaissent les balises <meta> de l'en-tête des documents servis, le fameux "content-type" des pages html) ;
- Une fois toutes les données envoyées, le serveur ferme la connexion ;
- Parallèlement, le client analyse et construit l'affichage à partir du code reçu.
Voilà, comment fonctionnent le protocole HTTP et APACHE2 (sans entrer dans les détails ).
Pour installer un serveur HTTP, nous allons utiliser une application bien connue des administrateurs réseaux : Apache2.
Installation
Apache est composé de plusieurs paquets…
Installation de base
À la suite de cette installation votre serveur doit fonctionner et être accessible à l'adresse suivante http://localhost (à partir de la même machine).
Un beau message va s'afficher dans votre navigateur It Works, c'est le contenu du fichier /var/www/html/index.html (configuration par défaut)
Configuration
Tous les fichiers de configuration de Apache2 sont dans le dossier /etc/apache2.
/etc/apache2
Rendez-vous dans le répertoire /etc/apache2/, et regardez les fichiers le composant :
apache2.conf ports.conf envvars mods-available mods-enabled conf-available conf-enabled sites-available sites-enabled
La plupart de ces fichiers sont plus ou moins spécifiques à Debian/Ubuntu et nous permettent de séparer la configuration en plusieurs parties.
envvars
est utilisé pour définir des variables d'environnement propres à Apache ;ports.conf
contient la directive listen qui spécifie les adresses et les ports d'écoute ;apache2.conf
est le fichier principal de configuration c'est à partir de lui que tous les autres fichiers sont chargés ;conf-available
contient un ensemble d'éléments de configuration globale (charset, security, etc.) ;conf-enabled
contient les éléments de configuration globale activés ;mods-available
contient la liste des modules d'apache installés ;mods-enabled
celle des modules activées ;sites-available
contient la liste des hôtes virtuels installés ;sites-enabled
celle des hôtes virtuels activées.
Normalement les fichiers de configuration globale apache2.conf, envars et ports.conf n'ont pas à être modifiés. Toute la configuration devrait se faire dans les sous dossiers xxx-available.
Les dossiers xxx-available contiennent les éléments de configuration disponibles. Les dossiers xxx-enabled contiennent les éléments de configurations activés sous forme de liens symboliques pointant vers les fichiers correspondant dans le dossier xxx-available.
Il est fortement déconseillé d'intervenir dans les dossiers xx-enabled. Les fichiers doivent être crées ou modifiés dans les dossiers xxx-available et les configurations activées ou désactivées comme suit :
sudo a2enconf charset.conf
sudo a2disconf charset.conf
pour activer ou désactiver un élément de configuration globale.
sudo a2enmod rewrite
sudo a2dismod rewrite
pour activer ou désactiver un module Apache.
sudo a2enconf monhote.conf
sudo a2disconf monhote.conf
pour activer ou désactiver un hôte virtuel.
Configuration des interfaces
La spécification des interfaces sur lesquelles Apache2 écoutera les requêtes se fait dans ports.conf avec la directive Listen.
La configuration par défaut indique que le serveur est en écoute sur le port 80 pour toutes les interfaces réseau, et sur le port 443 si le module SSL ou GNUTLS est activé :
Listen 80 <IfModule ssl_module> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule>
Pour restreindre l'utilisation à une ou plusieurs interfaces il suffit de les spécifier, suivies du port. Il faut une directive Listen par interface.
- Si le serveur est connecté avec une IP Internet et que l'on souhaite écouter sur cette interface on ajoute la directive Listen IP.Internet .
- Si le serveur est connecté avec une IP locale et que l'on souhaite écouter sur cette interface on ajoute la directive Listen IP.Locale .
- Si l'on souhaite écouter sur un certain port on rajoute :Le_Port . Il est aussi possible de ne spécifier que le port Listen Le_Port.
Éditez le fichier /etc/apache2/ports.conf.(remplacer les X.X.X.X par l'ip de l 'interface d'écoute )
#interface (local ou internet) connectée sur port standard Listen X.X.X.X:80
Configurer un site web
Pour configurer un ou plusieurs sites web différents, il faut utiliser les hôtes virtuels (ou vhosts). Chaque hôte virtuel a son propre fichier de configuration. Ceci permet de définir plusieurs sites sur une même machine avec des noms de domaines différents (www.domain.tld, machin.domain.tld, autredomain.tld…).
Ouvrez le fichier /etc/apache2/sites-available/000-default.conf (le seul hôte virtuel existant pour le moment).
# Le vhost proprement dit : il est compris dans un bloc <VirtualHost>, # Ces blocs définissent la "portée" de la validité des directives qui y sont définies. # Le * derrière VirtualHost définit ici que le vhost est valable pour toutes les IP sur lesquelles apache écoute. <VirtualHost *:80> # ServerName définit le nom de domaine pleinement qualifié utilisé pour le vhost. Mettez le nom de l'hôte du domaine ServerName www.domain.tld # ServerAlias définit les autres domaines pour lesquels le serveur répondra. ServerAlias domain.tld *.domain.tld # ServerAdmin vous permet de spécifier un email à utiliser en cas de problème, sur une page d'erreur 404 par exemple. ServerAdmin administrateur.web@domain.tld # DocumentRoot définit le dossier racine dans lequel seront stockés les fichiers du site. DocumentRoot /srv/web/domain.tld/www # Directory définit les options par défaut du répertoire <Directory /srv/web/domain.tld/www> # Active les options : # FollowSymLinks permet de suivre les liens symboliques. # Indexes autorise le listage de fichiers d'un répertoire qui ne contient pas d'index (désactivé ici). Options -Indexes +FollowSymLinks +MultiViews # AllowOverride permet de surcharger certaines options en utilisant des fichiers .htaccess dans le répertoire du site. AllowOverride all # Droits d'accès (on autorise tout le monde) Require all granted </Directory> # Où sont enregistré les logs. Il est important d'avoir des logs séparés pour chaque hôte virtuel. ErrorLog /var/log/apache2/error.domain.tld.log CustomLog /var/log/apache2/access.domain.tld.log combined </VirtualHost>
Enregistrez les changements sous un autre nom (ex: nomduvhost.conf).
Il faut maintenant activer le vhost. Pour cela il faut créer un lien symbolique du fichier de sites-available/ vers sites-enabled/.
En utilisant :
sudo a2ensite nomduvhost.conf
Pour désactiver un site, utiliser
sudo a2dissite nomduvhost.conf
Si vous n'avez pas de nom de domaine pleinement qualifié, vous pouvez utiliser un nom de votre choix, par exemple : projet1 comme valeur de la directive ServerName. Il faudra ensuite ouvrir le fichier /etc/hosts et ajouter une ligne avec le nom que vous avez choisi :
127.0.0.1 projet1
Cela permettra à votre système de faire la correspondance entre le nom de l'hôte et votre machine locale, et votre site sera accessible localement avec http://projet1
Sécuriser Apache
- Voir la documentation http://www.cgsecurity.org/Articles/apache.html
Sécurité des pages
Afin de modifier les pages nous allons créer un utilisateur webadmin le seul à pouvoir en créer, en supprimer et en modifier.
En faisant de webadmin le propriétaire et de www-data le groupe, tous les autres utilisateurs du système ne pourront accéder aux fichiers grâce aux droits appliqués ensuite.
Nous interdirons à apache2 de modifier les pages en autorisant seulement la lecture au groupe www-data (l'utilisateur sous lequel tourne apache et qui est aussi son groupe), et en donnant tous les droits au propriétaire.
Création de l'utilisateur webadmin:
sudo adduser webadmin
Modification des propriétaires de tous les fichiers et dossiers du répertoire :
sudo chown -Rf webadmin:www-data /var/www
RÉPERTOIRES lecture et exécution pour le group www-data et écriture pour le propriétaire 750 :
sudo find /var/www -type d -exec chmod 750 {} \;
FICHIERS lecture pour www-data et creation pour le propriétaire 640 :
sudo find /var/www -type f -exec chmod 640 {} \;
alternativement, pour modifier les droits (mais pas les propriétaires), il est possible d'utiliser les deux commandes suivantes:
sudo chmod -R 644 /var/www
l'interet est de ne pas lancer une multitude de commandes pour changer les droits (find lance la commande à chaque fois qu'il trouve un fichier correspondant) qui a pour effet de mettre le propriétaire comme étant le seul avec droit de lecture et
sudo chmod a+X /var/www
qui ajoute le droit x aux dossiers uniquement (droit de traverser)
Pare-Feu
Sachant que :
- HTTP est un protocole utilisant TCP,
- Le serveur reçoit sur le port 80 ou 443 ( si SSL est utilisé Sécuriser Apache2 avec SSL ) les requêtes, venant d'un port supérieur à 1024 inclus, d'un client,
- Qu'il répond à ces requêtes sur ces même ports vers les même ports.
Nous allons pouvoir construire les règle de base qui autorise les entrées et la sortie du serveur vers ces ports.
Le serveur est :
- connecté directement à internet :
ext_if="eth0" srv_www_ip="SRV_WWW.INTERNET.IP.NUMBER" # iptables -[A:ajoute] -[i:interface d'entree|o:interface de sortie] if_interface -[s:source] ip --[sport:port source] port -[d|destination] ip --[dport:destination port] port -J [ACCEPT:accepter|REJECT:rejeter] iptables -A INPUT -p tcp -i $ext_if --sport 1024: -d $srv_www_ip --dport 80, 443 -J ACCEPT iptables -A OUTPUT -p tcp -o $ext_if -s $srv_www_ip --sport 80,443 -d --dport 1024: -J ACCEPT done
- sur le réseau local :
Le mode forwarding et les règles NAT doivent être activées.
ext_if="eth0" srv_www_ip_local="SRV.local.IP.address" iptables –I PREROUTING –t nat –p tcp –i $ext_if –s -–dport 80 –j DNAT –to $srv_www_ip_local:80 iptables –I PREROUTING –t nat –p tcp –i $ext_if -–dport 443 –j DNAT –to $srv_www_ip_local:443 iptables –I FORWARD –p tcp –i $ext_if –d $srv_www_ip_local –-dport 80 –j ACCEPT iptables –I FORWARD –p tcp –i $ext_if –d $srv_www_ip_local –-dport 443 –j ACCEPT
Utilisation
sudo service apache2 start | stop | restart | status
Il existe des interfaces graphiques pour utiliser Apache. De la plus simple à la plus complète : localhost-indicator cassé et rapache
Erreur au démarrage
Au démarrage d'Apache, il est possible que celui-ci ne soit pas capable de déterminer un nom de domaine. Ce message sera affiché dans le terminal :
Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
Pour corriger l'erreur :
Première solution
On doit éditer le fichier /etc/apache2/apache2.conf
Par défaut ce fichier est vide, il faut donc ajouter la ligne suivante:
ServerName localhost
On enregistre, on quitte et on redémarre Apache :
Deuxième solution
On doit éditer le fichier /etc/hosts
Sur la première ligne, on trouve habituellement ça :
127.0.0.1 localhost
Comme Apache2 ne sait pas extrapoler, il faut la modifier ainsi :
127.0.0.1 localhost.localdomain localhost
Vous pouvez toujours mettre le nom réel de votre serveur, mais toujours sous un format FQDN
127.0.0.1 Mon_Super_Serveur.maison localhost
Le nom doit correspondre avec celui contenu dans /etc/hostname
Redémarrer Apache2
sudo /etc/init.d/apache2 restart
ou
sudo service apache2 restart
Il est aussi possible de redémarrer apache2 sans "tuer" les requêtes en cours :
apache2ctl graceful
Cette solution est plus élégante sur un serveur en production.
Nous pouvons maintenant passer à la phase de vérification.
S'il y a des messages d'erreurs regarder les fichiers suivants :
tail -f /var/log/syslog tail -f /var/log/apache2/access.log tail -f /var/log/apache2/error.log
Activer les fichiers .htaccess
Les .htaccess permettent de créer des zones administrateur protégées très facilement ou aussi d'activer des configurations de façon localisées pour des serveurs auxquels vous n'avez pas accès au fichier de configuration principale.
éditez le fichier /etc/apache2/sites-enabled/000-default.conf
Selon la doc Apache : En général, vous ne devriez jamais utiliser les fichiers .htaccess à moins que vous n'ayez pas accès au fichier principal de configuration du serveur. Il y a, par exemple, une conception erronée qui prévaut selon laquelle les droits des utilisateurs doivent toujours être gérés dans le fichier .htaccess. Cela n'est simplement pas le cas. Vous pouvez placer les configurations des droits dans la configuration principale du serveur, et cela est, en fait, la manière favorisée de le faire.
"In general, you should never use .htaccess files unless you don't have access to the main server configuration file. There is, for example, a prevailing misconception that user authentication should always be done in .htaccess files. This is simply not the case. You can put user authentication configurations in the main server configuration, and this is, in fact, the preferred way to do things.
.htaccess files should be used in a case where the content providers need to make configuration changes to the server on a per-directory basis, but do not have root access on the server system." cf: http://httpd.apache.org/docs/2.2/howto/htaccess.html#when
Ajoutez ces lignes à la fin du fichier :
<Directory /var/www/le_rep_ou_vous_voulez_activer_le_.htaccess> AllowOverride all </Directory>
Redémarrer ensuite apache et les .htaccess sont activés
Si vous souhaitez autoriser les fichiers .htaccess partout (et pas uniquement dans un unique répertoire) il vous faudra remplacer "AllowOverride none" par "AllowOverride All" entre les balises <Directory />…</Directory> et <Directory /var/www/>…</Directory> du fichier /etc/apache2/sites-enabled/000-default.conf .
Modules
Il est possible d'ajouter des modules à apache, ajoutant des fonctionnalités à votre serveur web. Tous les modules sont répertoriés ici : /etc/apache2/mods-available
Activer l'URL rewriting
Chargez le module rewrite :
a2enmod rewrite
Ensuite, deux possibilités s'offrent à vous suivant vos capacités de gestion de votre serveur :
- pour un serveur mutualisé par exemple : placer un fichier .htaccess avec des règles de rewriting à la racine de votre site. Pour cela les fichiers .htaccess doivent être autorisés : Activer les fichiers .htaccess
- pour un serveur dédié ou un serveur personnel (sur votre propre distribution) il est conseillé d'ajouter les règles de rewriting directement dans le fichier de configuration d'Apache2 : /etc/apache2/apache2.conf en recopiant les lignes suivantes à la fin dudit fichier.
Un petit exemple :
Options +FollowSymlinks RewriteEngine on # Lorsque l'on tape dans la barre d'adresse www.votre_domaine.net/page-1 c'est la page www.votre_domaine.net/page.php?id=1 qui s'affiche # [L]=[last] signifie que si cette règle s'applique on n'en cherche pas d'autre RewriteRule ^page-1$ /page.php?id=1 [L]
Encore mieux avec les expressions régulières :
Options +FollowSymlinks RewriteEngine on # Lorsque l'on tape dans la barre d'adresse www.votre_domaine.net/page-* c'est la page www.votre_domaine.net/page.php?id=* qui s'affiche # ^ et $ signifie respectivement le début et la fin d'une expression régulière RewriteRule ^page-([0-9]+)$ /page.php?id=$1 [L]
Mod_bw - Limiter la bande passante
Il existe un module compatible avec apache2 permettant de limiter la bande passante.
Installation du module : libapache2-mod-bw
Charger le module bandwidth : sudo a2enmod bw
Configuration du module :
Pour cela il faut ajouter quelques lignes dans les Vhost de vos domaines :
cd /etc/apache2/sites-enabled
sudo vim votredomaine.tls.conf
Juste avant </VirtualHost>, ajouter :
- Limiter tous les utilisateurs à 10Kb/s :
BandwidthModule On ForceBandWidthModule On Bandwidth all 10240
- Limiter tous les utilisateurs à 50Kb/s pour les fichiers supérieurs à 8000Kb :
BandwidthModule On ForceBandWidthModule On LargeFileLimit * 8000 50000
- Limiter les fichiers .avi et .mpg à 20Kb/s :
BandwidthModule On ForceBandWidthModule On LargeFileLimit .avi 1 20000 LargeFileLimit .mpg 1 20000
Redémarrer Apache2
sudo /etc/init.d/apache2 restart
Mod_deflate - Compression gzip
Le mod_deflate sur apache2 permet de gagner en rapidité et en bande passante grâce à la compression des données qui transitent entre le serveur et les clients. La compression utilisée est gzip. L'installation ci-dessous permet de compresser les fichiers texte (html, css,…).
Activation des modules deflate et headers :
sudo a2enmod headers sudo a2enmod deflate
Configuration de deflate :
Créez ou modifiez le fichier /etc/apache2/conf.d/mod_deflate.conf et ajoutez-y :
<Location /> # Insérer le filtre SetOutputFilter DEFLATE # Netscape 4.x rencontre quelques problèmes... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 rencontre encore plus de problèmes BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE se fait passer pour Netscape, mais tout va bien BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Ne pas compresser les images SetEnvIfNoCase Request_URI \ \.(?:gif|jpe?g|png)$ no-gzip dont-vary # S'assurer que les serveurs mandataires délivrent le bon contenu Header append Vary User-Agent env=!dont-vary </Location>
Redémarrage de apache2:
sudo /etc/init.d/apache2 restart
Les pages seront compressées quand le client le supporte.
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName.
Voir ici
mod_userdir gérer les dossiers utilisateur
Cette partie est déjà documentée sur la page xampp mais reprenons le ici.
Certaines personnes aimeraient faire en sorte à ce que chaque utilisateur du serveur puisse avoir son site web perso.
Ce site peut être accessible par : http://mondomaine.com/~nom_du_user
Permettre à chaque utilisateur d'avoir son propre site dans public_html
Créer un répertoire public_html et lui donner les droits de lecture et d'exécution
mkdir ~/public_html echo '<?php echo "PHP est actif dans votre public_html"; ?>' > ~/public_html/index.php chmod -R 755 ~/public_html
Activer l'exécution en php pour le module userdir (à partir de Ubuntu 10.04 (Lucid))
Editer /etc/apache2/mods-enabled/php5.conf et commenter les lignes correspondantes (avec ##) dans le fichier php5.conf qui se trouve dans /etc/apache2/mods-enabled.
<FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch ".+\.phps$"> SetHandler application/x-httpd-php-source # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Order Deny,Allow Deny from all </FilesMatch> # Deny access to files without filename (e.g. '.php') <FilesMatch "^\.ph(p[345]?|t|tml|ps)$"> Order Deny,Allow Deny from all </FilesMatch> # Running PHP scripts in user directories is disabled by default # # To re-enable PHP in user directories comment the following lines # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it # prevents .htaccess files from disabling it. ##<IfModule mod_userdir.c> ## <Directory /home/*/public_html> ## php_admin_flag engine Off ## </Directory> ##</IfModule>
(Pour mémoire) Ancienne version de php5.conf
<IfModule mod_php5.c> <FilesMatch "\.ph(p3?|tml)$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> # To re-enable php in user directories comment the following lines # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it # prevents .htaccess files from disabling it. ##<IfModule mod_userdir.c> ## <Directory /home/*/public_html> ## php_admin_value engine Off ## </Directory> ##</IfModule> </IfModule>
Optionnel : Personnaliser votre répertoire de site
Il est possible de changer le dossier par défaut (public_html) de votre site par un autre répertoire.
Éditer le fichier de configuration de userdir
Modifier la variable «UserDir public_html» dans le fichier /etc/apache2/mods-available/userdir.conf :
<IfModule mod_userdir.c> UserDir public_html UserDir disabled root <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Require all granted </Limit> <LimitExcept GET POST OPTIONS> Require all denied </LimitExcept> </Directory> </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Activer le module userdir
sudo a2enmod userdir sudo /etc/init.d/apache2 reload
Dans le navigateur web rendez-vous à l'adresse http://127.0.0.1/~nom_du_user et vérifier que le message «PHP est actif dans votre public_htm» s'affiche.
mod_proxy ou comment rediriger certains domaines vers certaines machines
Mon problème était le suivant :
routeur :
- renvoi du port 80 sur la machine 192.168.0.10
machine 192.168.0.10 :
- virtualhosts renvoyant vers plusieurs dossiers
- toto.mondomaine.com va vers /home/toto/www
- titi.mondomaine.com va vers /home/titi/www
- etc…
- et 000-default va vers /var/www
machine 192.168.0.11 :
- virtualhosts renvoyant vers plusieurs dossiers
- tata.mondomaine.com va vers /home/tata/www
- tutu.mondomaine.com va vers /home/tutu/www
- etc…
- et 000-default va vers /var/www
Sauf que si on met http://tata.mondomaine.com dans son navigateur on se retrouve avec le site par defaut de 192.168.0.10….
Donc, il faut appeller mod_proxy à la rescousse.
sur 192.168.0.10 : activer le module proxy avec :
a2enmod proxy
créer un virtualhost /etc/apache2/sites-available/tata.mondomaine.com qui contient :
<VirtualHost 192.168.0.10:80> ProxyRequests Off ProxyPreservehost on ServerName tata.mondomaine.com ProxyPass / http://192.168.0.11/ ProxyPassReverse / http://192.168.0.11/ <Proxy> Order Allow,Deny Allow from all </Proxy> </VirtualHost>
Activer ce fichier :
sudo a2ensite tata.mondomaine.com
Redémarrer apache
Et c'est tout :)
Si ca veut pas, activer aussi les modules proxy_http et proxy_connect
bien sûr on peut rajouter dans /etc/hosts:
192.168.0.11 tata.mondomaine.com
comme ça, dans ProxyPass et ProxyPassReverse on peut utiliser les noms de domaine à la place des adresses
et comme c'est un proxy, beaucoup d'autres options sont envisageables mais je n'irai pas plus loin pour aujourd'hui.
Optimiser votre serveur apache2
Il est possible d'optimiser votre serveur apache.
Accélérateurs PHP
Permet de mettre en cache le code PHP déjà compilé. Ceci évitera de recompiler les fichiers PHP à chaque fois, ce qui augmente de façon considérable les performances de votre serveur et donc de vos sites.
Voici un comparatif de ce qui existe actuellement :
XCache
Plus moderne et a été réécrit de zéro récemment. Il assure un meilleur support des versions récentes de PHP, au contraire des anciens eaccelerator and co.
eAccelerator
Empêcher le démarrage automatique d'apache
Pour les amoureux de l'écologie c'est de l'énergie gaspillée sans raison valable.
Pour les machines à faibles ressources, apache diminue la vitesse de démarrage
Autant de raisons valables pour démarrer manuelle apache quand nous en avons besoin et enlever le «daemon»/service de démarrage automatique !
Modifier le service apache avec upstart
Se reporter à l'exemple : Upstart
====
Restaurer le démarrage automatique d'apache avec update-rc.d
user@PCMachine:~$ sudo update-rc.d apache2 default
Désinstallation
Pour supprimer cette application, il suffit de :
- supprimer les paquets. Vous devez supprimer tous les paquets que vous avez installés. La configuration de l'application sera conservée ou supprimée selon la méthode de désinstallation que vous choisirez ('sudo apt-get purge [paquet]' pour virer les configs et les fichiers, 'sudo apt-get remove [paquet]' pour garder la config.)