Lighttpd et apache sur le même serveur I
16 messages
• Page 1 sur 2 • 1, 2
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
-

Ron56 - WRInaute impliqué

- Messages: 708
- Inscription: 20 Nov 2005
Lighttpd et apache sur le même serveur I
-- en fait il y a bien mieux comme optimisation , nouvel article bientot
--
Voir http://www.webrankinfo.com/forums/viewtopic_95826.htm
Bonjour,
Je vais vous expliquer comment alleger la charge de votre serveur en servant les fichiers statiques (.ico, .jpeg, .css...) avec lighttpd et en continuant a utiliser apache pour le dynamique et le frontend (les htacess marcheront toujours avec cette méthode ...)
J'ai fait la manip sur un serveur Gentoo (release OVH) d'un ami mais je vais vous expliquer la méthode pour debian aussi ...
Je conseille de quand même maitriser un minimum avant de se lancer dans cette optimisation
Pour ce tuto il faut au moins une IP failover (dispo sur tout les serveurs dédiés ovh et même sur les RPS ..)
Déjà pour configurer l'ip failover le vous conseille d'aller visiter ce guide : http://guides.ovh.com/ConfigurerIpSupplementaire
C'est bon vous avez deux IP qui pointent vers votre serveur ?
On peut passer a la suite...
On va forcer apache a écouté sur l'ip classique (ici XX.XX.XX.XX) et lighttpd sur l'ip failover (ici YY.YY.YY.YY)
Pour ca on va éditer le fichier de configuration d'apache
debian :
gentoo
Ensuite dans le virtualhost du site on ajoute
ATTENTION, nous utilisons le mode proxy ici, il faudra peut etre recompiler apache ou activer le module proxy
Mais il faut aussi indiquer a apache de passer seulement par notre ip principale
On sauvegarde mais sans redémarrer httpd (car lighttpd n'est pas en place encore
On install lighttpd
debian :
gentoo
Note : on peut enlever toute les option (USE="-ssl..." emerge lighttpd) en laissant juste "pcre)
On édite le fichier de conf de lighttpd
on doit ajouter/editer les paramètres suivants :
Si vous avez des question ...
Voir http://www.webrankinfo.com/forums/viewtopic_95826.htm
Bonjour,
Je vais vous expliquer comment alleger la charge de votre serveur en servant les fichiers statiques (.ico, .jpeg, .css...) avec lighttpd et en continuant a utiliser apache pour le dynamique et le frontend (les htacess marcheront toujours avec cette méthode ...)
J'ai fait la manip sur un serveur Gentoo (release OVH) d'un ami mais je vais vous expliquer la méthode pour debian aussi ...
Je conseille de quand même maitriser un minimum avant de se lancer dans cette optimisation
Pour ce tuto il faut au moins une IP failover (dispo sur tout les serveurs dédiés ovh et même sur les RPS ..)
Déjà pour configurer l'ip failover le vous conseille d'aller visiter ce guide : http://guides.ovh.com/ConfigurerIpSupplementaire
C'est bon vous avez deux IP qui pointent vers votre serveur ?
On peut passer a la suite...
On va forcer apache a écouté sur l'ip classique (ici XX.XX.XX.XX) et lighttpd sur l'ip failover (ici YY.YY.YY.YY)
Pour ca on va éditer le fichier de configuration d'apache
debian :
- Code: Tout sélectionner
vim /etc/apache/httpd.conf
gentoo
- Code: Tout sélectionner
vim /etc/httpd/httpd.conf
Ensuite dans le virtualhost du site on ajoute
- Code: Tout sélectionner
RewriteEngine On
RewriteRule (.*\.(ico|css|jpg|gif|png))$ http://YY.YY.YY.YY/USER/www/$1 [P,NC]
ATTENTION, nous utilisons le mode proxy ici, il faudra peut etre recompiler apache ou activer le module proxy
Mais il faut aussi indiquer a apache de passer seulement par notre ip principale
- Code: Tout sélectionner
Listen XX.XX.XX.XX:80
On sauvegarde mais sans redémarrer httpd (car lighttpd n'est pas en place encore
On install lighttpd
debian :
- Code: Tout sélectionner
apt-get install lighttpd
gentoo
- Code: Tout sélectionner
emerge -av lighttpd
Note : on peut enlever toute les option (USE="-ssl..." emerge lighttpd) en laissant juste "pcre)
On édite le fichier de conf de lighttpd
- Code: Tout sélectionner
vim /etc/lighttpd/lighttpd.conf
on doit ajouter/editer les paramètres suivants :
- Code: Tout sélectionner
var.basedir = "/home/"
...
"mod_redirect",
...
server.bind = "YY.YY.YY.YY"
...
#si lighttpd recoit une requete autre qu'une image ou un feuille de style on redirige la requete vers le apache
$HTTP["url"] !~ "\.(ico|css|jpg|gif|png)$" {
url.redirect = (
"^/(.*)" => "url.du.domaine"
)
}
Si vous avez des question ...
Dernière édition par Ron56 le Jeu Juin 26, 2008 17:15, édité 4 fois.
-

Ron56 - WRInaute impliqué

- Messages: 708
- Inscription: 20 Nov 2005
Re: [Article] Apache pour le dynamique, lighty pour le stati
moktoipas a écrit:Ron56 a écrit:Si vous avez des question ...
Ca sert a quoi ?
A servir les fichier statique avec lighttpd (processus leger) et a ne pas utiliser des processus lourds (apache compilé avec php) pour le faire
Au final tu réduit la RAM utilisée
-

Bool - WRInaute passionné

- Messages: 1290
- Inscription: 26 Fév 2004
Bah disons que si on a un seul Apache bien lourd en front end, ça sert effectivement à rien : les fichiers servis par lighty transitent malgré tout par la couche "Apache PHP".... et c'est toujours notre Apache lourdingue qui gère le KeepAlive quasi obligatoire des images.
Le reverse proxy, j'ai adopté il y a quelques mois et je suis vraiment fan. Mais pour moi le but c'est justement de mettre quelque chose de plus efficace en front, pas le contraire.
Le reverse proxy, j'ai adopté il y a quelques mois et je suis vraiment fan. Mais pour moi le but c'est justement de mettre quelque chose de plus efficace en front, pas le contraire.
-

Ron56 - WRInaute impliqué

- Messages: 708
- Inscription: 20 Nov 2005
Et a propos de ca : http://www.linux.com.cn/modcache/
Bool tu peux expliquer un peu plus en détail ta solution ?
Bool tu peux expliquer un peu plus en détail ta solution ?
-

Bool - WRInaute passionné

- Messages: 1290
- Inscription: 26 Fév 2004
Bah il s'agit de faire le contraire : en front end tu mets un reverse-proxy ou serveur web très rapide et léger, qui se contentera de servir le contenu statique et de maintenir la connexion keepalive.
Du coup Apache quant à lui ne gèrera plus que le dynamique et éventuellement le rewriting.
Selon le contenu du site, l'économie en CPU et mémoire peut être énorme.
Mais ça demande une certaine rigueur dans l'organisation du site, les fichiers .htaccess étant généralement ignorés par le serveur web "frontal".
Du coup Apache quant à lui ne gèrera plus que le dynamique et éventuellement le rewriting.
Selon le contenu du site, l'économie en CPU et mémoire peut être énorme.
Mais ça demande une certaine rigueur dans l'organisation du site, les fichiers .htaccess étant généralement ignorés par le serveur web "frontal".
-

Ron56 - WRInaute impliqué

- Messages: 708
- Inscription: 20 Nov 2005
Bool a écrit:Bah il s'agit de faire le contraire : en front end tu mets un reverse-proxy ou serveur web très rapide et léger, qui se contentera de servir le contenu statique et de maintenir la connexion keepalive.
Du coup Apache quant à lui ne gèrera plus que le dynamique et éventuellement le rewriting.
Selon le contenu du site, l'économie en CPU et mémoire peut être énorme.
Mais ça demande une certaine rigueur dans l'organisation du site, les fichiers .htaccess étant généralement ignorés par le serveur web "frontal".
Bon jvais tenté un apache leger devant et un lourd derrière ...
-

Bool - WRInaute passionné

- Messages: 1290
- Inscription: 26 Fév 2004
Pour le coup ça n'engage que moi (la dernière fois j'ai cru comprendre que certains n'étaient pas d'accord...) mais si c'est pour avoir deux Apache je trouve que ça ne sert à rien non plus.
Un seul Apache2 avec le MPM event et un PHP en FastCGI consommera encore moins de ressources et sera plus performant.
Un seul Apache2 avec le MPM event et un PHP en FastCGI consommera encore moins de ressources et sera plus performant.
-

Ron56 - WRInaute impliqué

- Messages: 708
- Inscription: 20 Nov 2005
Bool a écrit:Pour le coup ça n'engage que moi (la dernière fois j'ai cru comprendre que certains n'étaient pas d'accord...) mais si c'est pour avoir deux Apache je trouve que ça ne sert à rien non plus.
Un seul Apache2 avec le MPM event et un PHP en FastCGI consommera encore moins de ressources et sera plus performant.
Et un apache hyper allégé en front qui forward tout a un lighttpd ?
Juste pour que le htacess marche ...
edit : que penser de http://www.linux.com.cn/modcache/ ?
-

Bool - WRInaute passionné

- Messages: 1290
- Inscription: 26 Fév 2004
Il ne faut pas déballer du lighty juste par effet de mode, il faut aussi s'en servir.
Il faut voir ce qui te pose problème à la base. Pour moi un Apache classique a ces soucis :
- avec des modules gourmands (PHP) il consomme beaucoup de mémoire
- dans ses versions prefork et worker sa gestion du keepalive est très consommatrice de mémoire également (ce sont les mêmes threads/processus qui gèrent une connexion active et une connexion "endormie")
- c'est sûrement dû à toutes ses fonctions, mais il n'est pas très rapide même pour du statique. Une version "légère" et threadée reste d'après mes (maigres) tests 2 fois moins rapide qu'NginX.
- il gère assez mal les grand nombre de connexions simultanées
Pour le premier point, l'idéal à mon avis est d'isoler PHP grâce à FastCGI. En plus on y gagne en sécurité. Mais de manière générale il faut évidement virer tout ce qu'on utilise pas.
D'un autre coté si il y a un reverse-proxy en front qui traite tout ce qui est statique, et donc que notre Apache ne serve plus que pour les pages dynamiques, ce n'est pas bien grave que PHP soit embarqué avec chaque connexion.
Pour le deuxième point je vois deux solutions : utiliser la version "event" d'Apache2 qui est la seule à gérer de manière spécifique le keepalive, ou bien mettre en place un reverse-proxy qui lui gèrera ça correctement.
Le troisième point n'est pas forcément génant selon le site. Pour le régler l'idéal à mon avis est de mettre directement les images sur un serveur/cdn dédié à cela en utilisant un ou des sous demaines spécifiques.
L'autre solution est là encore le reverse proxy en front, qui se chargera de ça de manière très rapide.
Pour le dernier point, mis a part la mise en cluster le fait de déléguer le keepalived et les fichiers statiques à un autre serveur web améliore grandement les choses. Sans oublier que seules les requêtes valides et complètent arriveront jusqu'à Apache, ce qui évite également les problèmes avec les internautes aillant des connexions lentes.
====
En considérant ces points, j'ai deux solutions de prédilection :
- l'utilisation d'Apache MPM event + PHP en FastCGI. C'est sans doute le plus simple à mettre en place et on ne perd pas ses petites habitudes (les fichiers .htaccess sont traités comme d'habitude quoi, pas de modification d'IP, pas de configuration supplémentaire).
- la mise en place d'un reverse proxy (j'ai opté pour NginX) devant Apache, qui se charge donc du keepalived, de la compression à la volée et des fichiers statiques. Pour les quelques rares dossiers qui auraient besoin d'être traitées par Apache (à cause d'un .htaccess vraiment tordu) je mets simplement en place une exception pour indiquer à NginX de transmettre à Apache.
====
Pour ce qui est des caches (via Apache, Lighty, ou des softs spécialisés tels que varnish), le but est de rendre complètement statiques certaines pages du site. Ce sera toujours plus rapide que des pages traitées par PHP, mais ça ne règle pas les soucis enoncés ci dessus.
Pour ma part je ne suis pas fan, j'aurais tendance à procéder autrement mais pourquoi pas.
Après chacun a ses petites habitudes, mais perso je ne vois pas l'intérêt de mettre Apache en reverse proxy.
Il faut voir ce qui te pose problème à la base. Pour moi un Apache classique a ces soucis :
- avec des modules gourmands (PHP) il consomme beaucoup de mémoire
- dans ses versions prefork et worker sa gestion du keepalive est très consommatrice de mémoire également (ce sont les mêmes threads/processus qui gèrent une connexion active et une connexion "endormie")
- c'est sûrement dû à toutes ses fonctions, mais il n'est pas très rapide même pour du statique. Une version "légère" et threadée reste d'après mes (maigres) tests 2 fois moins rapide qu'NginX.
- il gère assez mal les grand nombre de connexions simultanées
Pour le premier point, l'idéal à mon avis est d'isoler PHP grâce à FastCGI. En plus on y gagne en sécurité. Mais de manière générale il faut évidement virer tout ce qu'on utilise pas.
D'un autre coté si il y a un reverse-proxy en front qui traite tout ce qui est statique, et donc que notre Apache ne serve plus que pour les pages dynamiques, ce n'est pas bien grave que PHP soit embarqué avec chaque connexion.
Pour le deuxième point je vois deux solutions : utiliser la version "event" d'Apache2 qui est la seule à gérer de manière spécifique le keepalive, ou bien mettre en place un reverse-proxy qui lui gèrera ça correctement.
Le troisième point n'est pas forcément génant selon le site. Pour le régler l'idéal à mon avis est de mettre directement les images sur un serveur/cdn dédié à cela en utilisant un ou des sous demaines spécifiques.
L'autre solution est là encore le reverse proxy en front, qui se chargera de ça de manière très rapide.
Pour le dernier point, mis a part la mise en cluster le fait de déléguer le keepalived et les fichiers statiques à un autre serveur web améliore grandement les choses. Sans oublier que seules les requêtes valides et complètent arriveront jusqu'à Apache, ce qui évite également les problèmes avec les internautes aillant des connexions lentes.
====
En considérant ces points, j'ai deux solutions de prédilection :
- l'utilisation d'Apache MPM event + PHP en FastCGI. C'est sans doute le plus simple à mettre en place et on ne perd pas ses petites habitudes (les fichiers .htaccess sont traités comme d'habitude quoi, pas de modification d'IP, pas de configuration supplémentaire).
- la mise en place d'un reverse proxy (j'ai opté pour NginX) devant Apache, qui se charge donc du keepalived, de la compression à la volée et des fichiers statiques. Pour les quelques rares dossiers qui auraient besoin d'être traitées par Apache (à cause d'un .htaccess vraiment tordu) je mets simplement en place une exception pour indiquer à NginX de transmettre à Apache.
====
Pour ce qui est des caches (via Apache, Lighty, ou des softs spécialisés tels que varnish), le but est de rendre complètement statiques certaines pages du site. Ce sera toujours plus rapide que des pages traitées par PHP, mais ça ne règle pas les soucis enoncés ci dessus.
Pour ma part je ne suis pas fan, j'aurais tendance à procéder autrement mais pourquoi pas.
Après chacun a ses petites habitudes, mais perso je ne vois pas l'intérêt de mettre Apache en reverse proxy.
16 messages
• Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- [Article] Lighttpd et apache sur le même serveur II
- Apache et Lighttpd sur le même port
- Serveur Apache ralenti
- Port Serveur Apache
- prob serveur dédié et apache ?
- [Serveur dédié] Pb avec Apache
- configuration serveur dedie apache 2 bind
- Problème de fontes ttf sur serveur apache
- Redirection 301 d'une page avec serveur non Apache
- Requête http connect sur serveur web Apache 2
Consultez la description détaillée des produits ou services de Google suivants : Google Web Accelerator, Google Web Toolkit, Google Talk
- Analyser la classe C de l'adresse IP
Cet outil vous permet de vérifier si plusieurs sites sont hébergés sur la même classe C (adresse IP du serveur). - Test HTTP header
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
