Existe-t-il un serveur Web léger qui diffusera du contenu dynamique?


21

Je construis une image avec un serveur Nagios. L'un des problèmes du Raspberry Pi est que la mémoire est assez petite sur le Raspberry Pi. Je vais donc utiliser une interface légère basée sur php-apc au lieu de l'interface standard.

Je me demandais quel serveur Web léger est recommandé d'utiliser?

J'envisageais un serveur Web minimum capable de faire du php et de fournir SSL. Je pensais à Apache2 ou Nginx. Bien que je pense qu'Apache surpassera toujours Nginx car le contenu est dynamique.


1
Nginx surpassera facilement Apache.
Alex Chamberlain

@AlexChamberlain sur le contenu statique, mais pas sur le contenu dynamique.
Lucas Kauffman

5
Prétendre. Cela dépend de ce que vous entendez par performance. Nginx utilisera moins de mémoire, moins de fuites et servira les fichiers (statiques) plus rapidement. Dans mon expérience (limitée, mais technique), le contenu dynamique est servi plus ou moins rapidement qu'Apache. Compte tenu du profil de mémoire de Nginx, il fonctionnera beaucoup mieux sur un Raspberry Pi. L'avantage d'Apache - mais pas ici - est qu'il est plus stable et qu'il y a des techniciens plus expérimentés.
Alex Chamberlain

Je ne considérerais même pas Apache en 256 Mo sauf si vous avez une configuration très compliquée que nginx ou lighttpd ne peut pas gérer
John La Rooy

Réponses:


17

La vraie question ici est "Avez-vous besoin de toutes les fonctionnalités d'Apache?" (ou plus important encore, "Êtes-vous prêt à utiliser de la mémoire pour ces fonctionnalités?") - Vous pouvez compiler de façon personnalisée un Apache + mod_perl ou un mod_php TRÈS dépouillé pour exécuter votre interface Web Nagios (ou un apache Über-Stripped qui exécute simplement les CGI perl), mais même sous une forme minimaliste, Apache prendra probablement plus de mémoire que nginx pour faire le même travail - Il n'a tout simplement pas été conçu pour être petit.

Pour être sûr à 100%, vous voudrez peut-être faire un bake-off (compiler à la fois nginx et Apache et voir lequel mange moins de RAM), mais mon expérience sur les serveurs "normaux" me dit que nginx est probablement le meilleur choix pour une mémoire faible configuration: Vous abandonnez une partie de la flexibilité d'Apache, mais si vous n'en avez pas besoin de toute façon (et la plupart des sites ne le font pas ), vous ne remarquerez jamais la différence.


En termes de performances (temps), je doute que votre serveur Web vous limite - Tous les repères artificiels mis à part, si vous faites suffisamment de volume là où les performances du moteur de serveur distribuant les pages sont si critiques que vous allez probablement pour cuire votre Raspberry Pi (et vraiment, combien de personnes vont regarder vos données de surveillance en même temps? :-).
C'est à peu près un axiome que vous pouvez optimiser un système pour l'espace ou le temps, mais jamais les deux - et sur un espace Raspberry Pi est probablement votre contrainte limitante.


Je suis sceptique sur le fait qu'Apache est beaucoup plus puissant que Nginx de nos jours.
Alex Chamberlain

@AlexChamberlain Si vous lisez attentivement mon article, vous remarquerez que je n'ai jamais utilisé le mot powerful(car c'est un terme non défini). J'ai dit flexible(en faisant référence au nombre de façons dont le serveur principal sans système d'exploitation peut être configuré pour répondre à un besoin). Cela n'est pas censé mal se refléter sur les deux serveurs: les deux sont d'excellents morceaux de code, mais ils ont des objectifs de conception très différents. Apache est conçu pour être tout pour tout le monde - un camion dans lequel vous pouvez emballer toute votre maison. nginx est conçu pour être petit et rapide - une voiture de sport, mais vous ne pouvez pas emmener femme, enfants, beaux-parents et chien de famille avec vous.
voretaq7

Je pense que Nginx grandit ... c'est maintenant au moins un hayon et grandit tout le temps. Il peut prendre en charge toutes les principales langues dynamiques d'une manière ou d'une autre, prend en charge SSL et SPDY est actuellement en version bêta.
Alex Chamberlain

15

Nginx

J'ai de bonnes expériences avec Nginx en tant que serveur Web. Je ferais équipe avec un framework wsgi léger comme une bouteille ou un flacon pour un développement rapide d'application en Python.

Ne vous attendez pas à ce qu'il gère plus d'une dizaine de requêtes par seconde :)

Installation

Nginx est à la fois dans les référentiels Debian / Raspbian et Arch, il peut donc être installé avec une seule commande.

Cambre

sudo pacman -Sy nginx

Debian / Raspbian

sudo apt-get install nginx

Configuration

Il existe de nombreux exemples de configuration sur le Web et une explication détaillée dépasse probablement le cadre de cette question. Il existe de nombreux exemples sur le Wiki Nginx et la liste de diffusion est très utile.

Puisque vous avez mentionné PHP, vous serez très intéressé de savoir que le /etc/nginx/nginx.conffichier standard contient un exemple PHP.


J'adore Nginx. Très facile à étendre grâce à son système modulaire.
Alex Chamberlain

1
J'ai peut-être développé un peu votre réponse, j'espère que cela ne vous dérange pas?
Alex Chamberlain


1

node.js

Vous pouvez utiliser node.js pour créer un serveur Web léger. Voir l'exemple suivant sur le site de tutoriel node.js:

var http = require('http');
  http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write("Dynamic contents...");
      res.end('Hello World\n');
  }).listen(1337, "127.0.0.1");

console.log('Server running at http://127.0.0.1:1337/');

Le code ci-dessus est un script java afin que vous puissiez écrire votre logique de génération de code dynamique dans un script java et commencer à l'utiliser en un rien de temps.

Vous devrez télécharger et configurer node.js à partir du lien: http: //nodejs.org/ pour Windows ou la plate-forme que vous préférez utiliser.

Démarrez le serveur Web à l'aide de la commande:

node hello.js

Mais Node.js parle-t-il php?
Lucas Kauffman

Node.JS est utilisé dans d'autres contextes. Il ne fonctionne pas bien en tant que serveur autonome car tout le code est en C ++. MAIS! C'est génial car vous pouvez utiliser node pour accéder DIRECTEMENT à GPIO et au reste du matériel de bas niveau en utilisant +1 pour node.js pour la variété .. Mais vous avez toujours besoin d'un frontal comme apache / lighttpd / iis pour servir le contenu
Piotr Kula

@LucasKauffman Non - ce n'est pas vraiment un serveur Web, mais plutôt une application Web.
Alex Chamberlain

1
Bienvenue sur Stack Exchange. Belle réponse, mais je crains d'avoir voté en bas car je ne pense pas que cela résout la question. L'OP voulait PHP et les futurs lecteurs voudront probablement un serveur un peu plus performant.
Alex Chamberlain

1
J'utilise Nagios, je ne développe pas ma propre application: p
Lucas Kauffman

0

Vous pouvez peut-être jeter un œil à ce que d'autres personnes ont utilisé sur les boîtes bas de gamme .

Fondamentalement, c'est lighttpd + php-fcgi. Lighttpd est vraiment léger et php-fcgi peut être configuré pour utiliser juste un peu de mémoire. Je l'ai installé sur une boîte VPS de 64 Mo (pas nagios, mais CMS).

De plus, je ne sais pas si vous devez également optimiser MySQL pour utiliser le moins de mémoire possible .

Cela peut vous aider, peut-être pas. Je n'ai pas encore commencé à utiliser mon Raspi :)



0

J'utilise une combinaison de Nginx / Passenger pour exécuter le pi.gadgetoid.com basé sur Ruby 24/7 sur un Raspberry Pi de 512 Mo. Cela surpasse considérablement la configuration Thin / Apache que j'utilisais auparavant. Il s'agit d'un site Web public à fort trafic, même si j'ai beaucoup triché en utilisant Cloudflare (un proxy de mise en cache essentiellement) pour gérer la majeure partie de ce volume.

Je suis à peu près sûr que cette configuration serait également confortable sur un Pi de 256 Mo, mais j'ai eu du mal à compiler les modules Passenger et Nginx; courir dans les limites de mémoire.

Je sais que ce n'est pas une solution PHP, et je serai probablement réprimandé pour avoir suggéré une telle réponse tangentielle; mais si vous cherchez le Pi pour repousser les limites de vos connaissances, et que vous le faites pour quelques bricolages occasionnels, je vous suggère fortement de regarder Ruby et Sinatra. Vous aurez une haine bouillonnante pour PHP dans quelques semaines.

Dans l'ensemble, vous n'aurez pas beaucoup de mal à exécuter une pile Web PHP / Apache sur un serveur de 256 Mo. Je l'ai fait pour des sites beaucoup plus grands à titre professionnel sur l'hébergement cloud. C'est lorsque MySQL s'implique que les choses deviennent laides. L'exécution d'une pile LAMP complète sur 256 Mo est pour le moins pénible, mais pas impossible pour les faibles volumes de trafic.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.