Sujet : Apache Web Server Internals
Description : Le Serveur Web Apache est devenu le logiciel le plus utilisé au mondepour servir les pages internet et intranet. Son utilisation très variée, du petit site familial au site d’entreprise avec systèmes de balance de charge et architecture objet, fait que sa structure est peu connue ainsi que ses différentes configurations.
Conférenciers : Neil Armstrong, élève ingénieur chez Neotion et futur ingénieur Polytech’Nice-Sophia, spécialisé en Logiciels Embarqués et technologies Open-Source.
Date : 10 juin 2008
Lieu : Amphithéâtre Edison, CICA, Sophia Antipolis, FRANCE
préparation à la certification LPIC2 version 3.5 en français
Chapitre 8 : Topic 208 : Services Web
Configuration de Apache2 et Squid
Partie 1 : mise en place d'un serveur web
Introduction au serveur web Apache2
Présentation, installation, configuration
Amazon web services fonctionnement de quelques servicesPape Moussa SONKO
Ce document contient la description et le fonctionnement de quelques Services d'Amazon Web Services(AWS). Ce n'est pas un guide complet mais plutôt une aide pour tous débutants qui cherche à avoir dles bases avec AWS.
08 02 mise en place de serveurs virtuels apache 2Noël
préparation à la certification LPIC2 version 3.5 en français
Chapitre 8 : Topic 208 : Services Web
Configuration de Apache2 et Squid
Partie 2 : mise en place de serveurs virtuels apache 2
Topic 208.2 partie 1
Supports créées par Noël Macé sous Licence Creative Commons BY-NC-SA.
préparation à la certification LPIC2 version 3.5 en français
Chapitre 8 : Topic 208 : Services Web
Configuration de Apache2 et Squid
Partie 1 : mise en place d'un serveur web
Introduction au serveur web Apache2
Présentation, installation, configuration
Amazon web services fonctionnement de quelques servicesPape Moussa SONKO
Ce document contient la description et le fonctionnement de quelques Services d'Amazon Web Services(AWS). Ce n'est pas un guide complet mais plutôt une aide pour tous débutants qui cherche à avoir dles bases avec AWS.
08 02 mise en place de serveurs virtuels apache 2Noël
préparation à la certification LPIC2 version 3.5 en français
Chapitre 8 : Topic 208 : Services Web
Configuration de Apache2 et Squid
Partie 2 : mise en place de serveurs virtuels apache 2
Topic 208.2 partie 1
Supports créées par Noël Macé sous Licence Creative Commons BY-NC-SA.
Comment prévoir et supporter la montée en charge des applications web PHP ? Par la mise en place d'un environnement haute disponibilité performant, tolérant à la panne ! Dans le cadre de la performance, nous parlerons des différents niveaux de cache, des stratégies de distribution de charge, des extensions PHP. Côté haute disponibilité et tolérance de panne, nous aborderons les stratégies de failover, le load balancing, le sharding. Le tout basé sur le stack LAMP.
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Aurelien Navarre
Ce n'est pas vraiment du Drupal mais ça peut servir à tous les drupalistes ! Pour le meetup Drupal Lyon de juillet 2016 j'ai voulu parler des containers mais surtout de l'orchestration. Que ce soit LXC, ou Docker peu importe en fait. Tout dépend de vos besoins. Mais pour l'orchestration, ma préférence va clairement à Ansible qui est facile d'apprentissage et si pratique au quotidien, que ce soit pour vos environnements de dév ou prod.
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
Présentation par Nicolas Lalevée des modèles de gestion de dépendances Maven, Ivy et OSGi au Toulouse Jug du 26 Mai 2011.
Abstract:
La gestion des dépendances, sac de noeuds presque par définition, on va essayer de démêler tout ça.
Après avoir fait un état des lieux avec Maven car il est l'incontournable du moment, nous irons voir comment Ivy peut décrire assez finement et gérer avec souplesse des dépendances. Nous verrons ensuite comment le modèle de dépendances d'OSGi est original et apporte encore de nouveaux concepts. Deux mondes s'affrontent alors, celui de Maven et Ivy face à celui d'OSGi; on tentera enfin d'esquisser un meilleur des deux mondes.
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8Aurelien Navarre
Retour d'expérience de la migration de la base de connaissance docs.acquia.com de Drupal 6 à Drupal 8 au DrupalCamp Nantes 2016. Les thèmes principaux abordés sont : comment auditer et préparer sa migration, comment utiliser les nouvelles commandes Drush à notre disposition pour facilement mettre en place les conditions d'une migration réussie et quelques astuces glanées par l'expérience acquise au cours de cette migration somme toute assez complexe.
- Définition d’une architecture à haute disponibilité
- Mise en cluster de deux serveurs Red Hat via RHCS
- Installation de JBoss EAP
- Hébergement de services et création des failoverdomains
- Configuration du load balanceur
- Configuration de JBoss Clustring
- Déploiement de l’application Hello world
- Test
Comment prévoir et supporter la montée en charge des applications web PHP ? Par la mise en place d'un environnement haute disponibilité performant, tolérant à la panne ! Dans le cadre de la performance, nous parlerons des différents niveaux de cache, des stratégies de distribution de charge, des extensions PHP. Côté haute disponibilité et tolérance de panne, nous aborderons les stratégies de failover, le load balancing, le sharding. Le tout basé sur le stack LAMP.
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...Aurelien Navarre
Ce n'est pas vraiment du Drupal mais ça peut servir à tous les drupalistes ! Pour le meetup Drupal Lyon de juillet 2016 j'ai voulu parler des containers mais surtout de l'orchestration. Que ce soit LXC, ou Docker peu importe en fait. Tout dépend de vos besoins. Mais pour l'orchestration, ma préférence va clairement à Ansible qui est facile d'apprentissage et si pratique au quotidien, que ce soit pour vos environnements de dév ou prod.
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
Présentation par Nicolas Lalevée des modèles de gestion de dépendances Maven, Ivy et OSGi au Toulouse Jug du 26 Mai 2011.
Abstract:
La gestion des dépendances, sac de noeuds presque par définition, on va essayer de démêler tout ça.
Après avoir fait un état des lieux avec Maven car il est l'incontournable du moment, nous irons voir comment Ivy peut décrire assez finement et gérer avec souplesse des dépendances. Nous verrons ensuite comment le modèle de dépendances d'OSGi est original et apporte encore de nouveaux concepts. Deux mondes s'affrontent alors, celui de Maven et Ivy face à celui d'OSGi; on tentera enfin d'esquisser un meilleur des deux mondes.
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8Aurelien Navarre
Retour d'expérience de la migration de la base de connaissance docs.acquia.com de Drupal 6 à Drupal 8 au DrupalCamp Nantes 2016. Les thèmes principaux abordés sont : comment auditer et préparer sa migration, comment utiliser les nouvelles commandes Drush à notre disposition pour facilement mettre en place les conditions d'une migration réussie et quelques astuces glanées par l'expérience acquise au cours de cette migration somme toute assez complexe.
- Définition d’une architecture à haute disponibilité
- Mise en cluster de deux serveurs Red Hat via RHCS
- Installation de JBoss EAP
- Hébergement de services et création des failoverdomains
- Configuration du load balanceur
- Configuration de JBoss Clustring
- Déploiement de l’application Hello world
- Test
Cette session vous montrera comment déployer une application PHP dans le cloud. Nous verrons les différents types de cloud, les problèmes spécifiques et leurs solutions, ainsi que les techniques de montée en charge à maîtriser. Nous toucherons aussi un mot des nouvelles versions de PHP. Au menu : du PaaS, du IaaS, un peu de chef et de puppet, une touche de Git, et un peu de Microsoft.
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
Votre mission, si vous l'acceptez : collecter chez chaque client 500 métriques par seconde sur un réseau Modbus, stocker plusieurs jours de données localement, et pousser des métriques sous échantillonnées dans le cloud. Les contraintes incluent la remontée des contextes de défaut, l’envoi de commande sécurisée depuis le cloud, l’isolation des données entre clients, la connexion temps réel via websocket, la gestion des coupures de courant et d’internet. Le système tourne sur une PINE64, avec une base de donnée open source française !
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-apache-le-guide-complet-de-ladministrateur
Cette formation a pour but de vous présenter une version d’apache, et de différents modules.
Sans forcément rentré dans les détails de chaque module nous allons voir un ensemble de points de configuration.
Introduction aux Technologies Web élaborée par Marouan OMEZZINEMarouan OMEZZINE
Une introduction / ébauche aux technologies Web (Web, évolution, web 2.0, php, ajax...) faite dans le cadre des formations inter-membres du club Junior ENSI (http://www.junior-ensi.org/) de l'école nationale des sciences de l'informatique (http://www.ensi.rnu.tn/).
Ostech war story using mainline linux for an android tv bspNeil Armstrong
Android TV is a relatively recent Google Initiative to use the Android Operating System for TV Set-top-boxes, reusing the Phone Operating System architecture.
In the last years, the Android Hardware Abstraction Libraries were adapted/rewritten to use the modern and recent Linux APIs like DRM/KMS, V4L2 for Video Decode, ... allowing Android to boot and work with mainline Linux.
During last year, Neil was involved into an upstream-first open Android TV BSP, aiming to fully support AOSP for TV running on a Low-Cost generally available ARM based System-on-Chip designed for TV application. Neil will overview the requirements and struggles in term of system support, upstreaming & Android tweaking to enable AOSP to boot on such device, including the whole trusted boot chain, to graphical Linux with multimedia features enabled.
The document discusses Linux's clock framework, which defines a common struct clk and clock API for managing clocks across platforms. It introduces a common hardware-independent struct clk and struct clk_ops along with implementations of clock functions like enable/disable. Platforms can define hardware-specific clock structures that wrap struct clk_hw. The clock framework provides clock registration, lookup, and management functions. Device trees can describe clock topology and relationships between clocks, oscillators, and devices to enable dynamic clock configuration.
ELC North America 2021 Introduction to pin muxing and gpio control under linuxNeil Armstrong
In the last 10 years, the GPIO and PINCTRL subsystem matured to support almost every possible handling of Programmable Input/Outputs and more generally multiplexing of multiple functions on single "Pins" or group of "Pins". However, what is a "Pin"? What is a multiplexed "Function"? How programmable I/Os and pin functions are designed on the majority of System-On-Chips? Neil will describe this from the Hardware design Point-Of-View, the constraints and the requirements. Then Neil will explain how this particular subject was handled over the years in the Linux kernel, to finally get to the current GPIO & PINCTRL subsystems, and how it articulates with the Device Tree and other Firmware based protocols.
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...Neil Armstrong
This document summarizes the status of porting and maintaining bootloader software for Amlogic multimedia system-on-chips (SoCs). It discusses the open source support for the Linux kernel, U-Boot bootloader, and Trusted Firmware-A. While mainline Linux support is good, U-Boot and TF-A support remains partial, lacking features like secure boot, NAND support, and testing. The document also outlines the fragmented and closed nature of Amlogic's binary boot firmware and packaging tools.
ELC-NA 2020: War story - Using mainline linux for an Android TV bspNeil Armstrong
The document summarizes the process of using mainline Linux for an Android TV BSP on new Amlogic SoCs. It discusses:
- Android's history with mainline Linux and recent efforts to use a common kernel
- The need to push SoC support upstream and backport patches between Android and mainline trees
- Challenges with hardware abstraction layers originally written for proprietary kernels
- Issues integrating the Mali GPU using the drm-hwcomposer HAL
- Supporting multiple Android boot flows in a single codebase
- Other integration problems with audio and WiFi HALs, and display modes
- That Android is becoming more mainline-friendly but full integration remains a long process.
Since the switch of the ARM Linux support from the stable PowerPC Device Tree support, it became an important piece of software used to describe all sorts of devices based on very different hardware architectures.
Currently, BSD* Unixes and even the Zephyr RTOS has switched to Device Tree to describe the hardware. U-boot has also a file format using the Device Tree blob format.
Neil will present you the history of Device Tree from its origins, how it has been used for ARM and now RISC-V from the PowerPC codebase, all the very different current usage and an overview of its future application and evolutions.
Linux Conference Australia 2018 : Device Tree, past, present, futureNeil Armstrong
Since the switch of the ARM Linux support from the stable PowerPC Device Tree support, it became an important piece of software used to describe all sorts of devices based on very different hardware architectures.
Currently, BSD* Unixes and even the Zephyr RTOS has switched to Device Tree to describe the hardware. U-boot has also a file format using the Device Tree blob format.
Neil will present you the history of Device Tree from its origins, how it has been used for ARM from the PowerPC codebase, all the very different current usage and an overview of its future application and evolutions.
Linux Conf Australia 2018 - Kernel Miniconf - Mainline Linux on Amlogic SoCsNeil Armstrong
Inexpensive set-top boxes are everywhere and many of them are powered by AmLogic SoCs. These chips provide 4K H.265/VP9 video decoding and have fully open source Linux kernel and U-boot releases.
Unfortunately most of the products based on these devices are running an ancient 3.10 Android kernel. Thankfully AmLogic has put a priority on supporting their chips in the mainline Linux kernel.
Neil will present the challenges and benefits to pushing support for these SoCs upstream, as well as the overall hardware architecture in order to understand the Linux upstreaming decisions and constraints.
Neil will also detail the future development plans aiming to offer a complete experience running an Upstream Linux kernel.
Embedded Recipes 2017 - Mainline Linux on Amlogic SoCsNeil Armstrong
Inexpensive set-top boxes are everywhere and many of them are powered by AmLogic SoCs. These chips provide 4K H.265/VP9 video decoding and have fully open source Linux kernel and U-boot releases.
Unfortunately most of the products based on these devices are running an ancient 3.10 Android kernel. Thankfully AmLogic has put a priority on supporting their chips in the mainline Linux kernel.
Neil will present the challenges and benefits to pushing support for these SoCs upstream, as well as the overall hardware architecture in order to understand the Linux upstreaming decisions and constraints.
Neil will also detail the future development plans aiming to offer a complete experience running an Upstream Linux kernel.
ELC North America 2017- Mainline Linux on Amlogic SoCsNeil Armstrong
Inexpensive set-top boxes are everywhere and many of them are powered by AmLogic SoCs. These chips provide 4K H.265/VP9 video decoding and have fully open source Linux kernel and U-boot releases.
Unfortunately most of the products based on these devices are running an ancient 3.10 Android kernel. Thankfully AmLogic has put a priority on supporting their chips in the mainline Linux kernel.
Neil will present the challenges and benefits to pushing support for these SoCs upstream, as well as the overall hardware architecture in order to understand the Linux upstreaming decisions and constraints.
Neil will also detail the future development plans aiming to offer a complete experience running an Upstream Linux kernel.
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...Neil Armstrong
You maintain or used to maintain a Linux based board or SoC off-tree ? Then there are plenty of reasons for you to push your changes to the mainline Linux. Some will say it’s too late, or too complex, or too expensive but the long-term benefits of regular upstreaming truly outpass these constraints especially it you have the right methods. In this presentation Neil will elaborate on this question.
Neil will then expose the various challenges about code upstreaming, like time constraints, copyright issues and the community aspect of the work. For example, vendor GPL code is generally lying on an obscure github repo, or in a hardly reachable tarball.
In parallel, Neil will present practical tips to easier your day to day upstream work and explicit this simple rule : the fastest the maximum patches are upstreamed, the less work you’ll have to actually maintain the port in the future.
Aujourd’hui, l’internet va bientôt atteindre les limites d’une technologie prévue à l’origine pour connecter quelques machines.
Depuis 1993, un groupe travaille afin de mettre en place une nouvelle technologie flexible et innovante pour combler les failles et les défauts d’IPv4, le protocole réseau le plus utilisé aujourd’hui.
Intellicore Tech Talk 10 - Apache Web Server Internals
1. Apache Web Server
Internals
Structure et Configuration
Neil Armstrong
10 juin 2008
2. Intellicore Tech Talks
• Des conférences pour partager son savoir
• Le mardi au CICA Sophia Antipolis
• http://techtalks.intellicore.net
• Aujourd’hui la 10ème conférence
• Vous voulez participer ?
• techtalks (at) intellicore.net
3. Neil Armstrong - Étudiant Ingénieur Polytech’Nice-Sophia
10 juin 2008 - CICA Sophia Antipolis
APACHE WEB SERVER INTERNALS
Structure et Configuration
4. APACHE ?
FTP, Gopher, POP/SMTP
NNTP
Tim Berners-Lee
Projet ATLAS
L’histoire commence en 1990 au CERN Détecteur de Particules
Invention de l’HTML et du protocole HTTP HyperText
Transfert
Protocol
Premiers Serveurs HTTP dont le : NCSA httpd
National Center for
Supercomputing
Formation du groupe de développeurs Apache Applications
Mais pourquoi ce nom ?
5. APACHE ?
A PAtCHy Server
Proche de la prononciation de Apache en anglais
Sources basées sur un ensemble de PATCHs
Aujourd’hui la base du NCSA httpd a disparu des
sources
Sauf dans la configuration
6. PART DE MARCHÉ
Dés la première version, un succès
Aujourd’hui, sert 49,41% des sites actifs
IIS de Microsoft : 34,37%
Google : 9,37% avec son serveur interne
les autres serveurs se partagent 6,75% des sites
7. PARTS DE MARCHÉ
34000000
33,5M
Apache
23,3M
17000000
Microsoft IIS
Google 6,4M
Autres
0
0 00 0 01 0 02 0 03 0 04 0 05 0 06 0 07 0 08
2 2 2 2 2 2 2 2 2
9. EVOLUTION INTERNE
Basé sur NCSA httpd inetd
Simple mais avec un processus unique
Sortie de Apache 1.0 en 1995 HTTP1.1
Suite a une profonde refonte depuis NCSA httpd
Sortie de Apache 2.0 en 2002
IPV6
Sortie de Apache 2.2 en 2005
10. ORGANISATION
INTERNE
Un coeur et des modules
Requête
Module
Apache Module
Core
Réponse
Module
11. MODULARITÉ
Le traitement d’une requête est découpé en une série
d’étapes traitées par les différents modules
URI Fichier
Authentification
Permissions
Type du fichier
Envoi vers un module si besoin
Réponse au client
Stockage des erreurs éventuelles
12. GESTION SIMPLE DE
RESSOURCES
Une corbeille de ressource est gérée dynamiquement
Gestion mémoire simplifiée
Efficacité de gestion
Lors d’une requête
une ressource est allouée
suivra les étapes pendant la vie de la requête
13. RÉPARTITION DU
TRAVAIL
Répartition du travail entre plusieurs tâches
Gestion de la politique par des modules spécifiques
MPM : Multi-processing Module
3 politiques possibles actuellement :
Prefork : Multi-Processus UNIX
Worker : Multi-Thread (Unix, Windows, ...)
Event : Pool de Processus et Threads, expérimental
14. TRANSIT DES DONNÉES
Les données de la requête sont stockées dans des
seau “Bucket”, l’ensemble est une “Brigade” équipe
Transitent entre les modules
Ils peuvent ajouter des informations (En-têtes, ...)
Ils peuvent en modifier (redirection, erreur, ...)
Une API offre aux modules des méthodes flexibles et
puissantes pour travailler avec les données
15. MODULES DE FILTRES
Modules de filtres
Utilisés pour faire des actions sur les données
Entrée : Décompresser, Décoder, ...
Sortie : Compresser, Coder, ...
16. MODULES DE FILTRES
Modules de filtres
Utilisés pour faire des actions sur les données
Entrée : Décompresser, Décoder, ...
Sortie : Compresser, Coder, ...
18. SITE PERSO
Site très simple
1 adresse = 1 site internet
Pas de scripts dynamiques (php, ...)
1 seul hôte virtuel -> “catch-all”
Typique des installations par défaut sous GNU/
Linux et Mac OS X
19. HÉBERGEMENT
Site internet dynamique avec sous-domaines
1 adresse IP = plusieurs nom de domaines et sites
Utilisation d’un certain nombre d’hôtes virtuels
1 par sous-domaine (produits.mon-domaines.fr, ...)
1 “catch-all” généralement www.mon-domaine.fr
Typique d’un site d’entreprise ou d’hébergement web
20. INFRASTRUCTURE WEB
Gros site d’entreprise dynamique
Plusieurs adresses IP, plusieurs sous-domaines
Utilisation de communications SSL
Beaucoup d’hôtes virtuels
Grosse infrastructure Java EE
Plusieurs serveurs pour redondance
21. SOLUTIONS
Gestion d’hôtes virtuels
Gestion de plusieurs sous-domaines sur le même
serveur
Gestion de “proxy”
Renvoi de la requête vers un autre serveur
Utilisé pour de la balance de charge
Renvoi vers un micro-serveur web embarqué en
Rails, Python, ...
22. BALANCE DE CHARGE
Utilise le module mod_proxy_balancer
2 algorithmes
Request Counting
Chaque serveur => même quantité de clients
Weighted Traffic Counting.
Chaque serveur => même quantité de données à
traiter
23. APACHE
WEB
SERVER
Comment une requête est
traitée ?
Comment configurer ?
24. MODULES UTILES
Interpréteurs
php, ruby, perl, python, ...
CGI : Common Gateway Interface
Texte
Server Sides Includes
URL Rewriting
Authentification (plain, ldap, mysql, ...)
Et beaucoup d’autres...
25. EXEMPLE SIMPLE
1 site internet en virtual host
monsite.mondomaine.com
La résolution du nom donne une adresse IP
L’adresse rentrée sur le navigateur
http://monsite.mondomaine.com/blog/index
26. REQUÊTE HTTP
Requête HTTP 1.1
1.0 obsolètes -> hôtes virtuels non pris en charge
GET /blog/index HTTP/1.1
Host : monsite.mondomaine.com
User-Agent : Mozilla/5.0 ...
Autres en-têtes facultatives (Accept, Cookies, ...)
27. TRAITEMENT
Traitement du Host
monsite.mondomaine.com
Transformation de /blog/index
Ex: /var/www/phpblog/index.php?p=index
Type MIME : application/x-httpd-php
Lancement de PHP
Envoi de la réponse au client
28. RÉPONSE HTTP
Simple code d’erreur suivi d’en-têtes
200 OK
404, ...
Type de contenu : Content-Type
Taille du contenu
Langage, Date de modification, Cookies, ....
29. CONFIGURATION
Configuration très modulable
Du simple fichier unique httpd.conf
A la structure complexe de répertoire
Chargement dynamique de modules
Syntaxe simple et puissante
Documentation claire
43. MODULES
Séparation du chargement et de la configuration
Chargement avec LoadModule
LoadModule php5_module /lib/apache2/libphp5.so
Configuration facultative
Exemple PHP
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
44. CONFIGURATION
CONDITIONNELLE
Permet d’exécuter des parties de configuration
Si un module est chargé
Si une variable est définie
Associé a l’inclusion de fichiers
Configuration puissante !
45. Des questions ?
MERCI DE VOTRE
PARTICIPATION
N’oubliez pas :
http://techtalks.intellicore.net