Apache Web ServerApache Web Server
ArchitectureArchitecture
Chaitanya Kulkarni
chaitanya.kulkarni1@marist.edu
MSCS 521 23rd
April 2008
4/23/2008 1Apache Web Server Architecture
What is “the web”?
A collection of cross-linked “websites”
A set of “web” technologies
The consistent use of URIs to represent
resources
HTTP, HTML, and everything built
around them
Every person's cheap’n’easy client-
server computing
4/23/2008 2Apache Web Server Architecture
What is a Server?What is a Server?
A server is a computer or device on a networkA server is a computer or device on a network
that manages network resources. Mostthat manages network resources. Most
servers are dedicated. This means that theyservers are dedicated. This means that they
perform only one task rather than multipleperform only one task rather than multiple
tasks. On multiprocessing operating systems,tasks. On multiprocessing operating systems,
however, a single computer can executehowever, a single computer can execute
several programs at once. A server in thisseveral programs at once. A server in this
case could refer to the program that iscase could refer to the program that is
managing resources rather than the entiremanaging resources rather than the entire
computer.computer.
4/23/2008 3Apache Web Server Architecture
What is Web Server ?
A computer program that is responsible
for accepting HTTP requests from
clients, which are known as web
browsers, and serving them HTTP
responses along with optional data
contents, which usually are web pages
such as HTML documents and linked
objects (images, etc.).
4/23/2008 4Apache Web Server Architecture
A brief history of Apache (1)
First viable alternative to Netscape
Communications Corporation web
server
It is an open-source software with
cross-platform functionality.
First version was created by Robert
McCool
4/23/2008 5Apache Web Server Architecture
A brief history of Apache (2)
Named Apache because:-
 Out of respect for the Native American
Indian tribe of Apache
 due to the project's roots as a set of
patches to the codebase of NCSA HTTPd
1.3 - making it "a patchy" server.
Chief competitors include Microsoft’s IIS
and Sun Java Systems Web Server
4/23/2008 6Apache Web Server Architecture
A brief history of Apache (3)
Apache is used by giants like:-
 Google Web Servers
 Wikimedia
The Apache License allows for the
distribution of both open and closed
source derivations of the source code.
The name Apache is a registered
trademark.
4/23/2008 7Apache Web Server Architecture
Apache Server Architecture(1)
Apache supports a variety of features,
many implemented as compiled
modules which extend the core
functionality.
These can range from server-side
programming language support to
authentication schemes.
4/23/2008 8Apache Web Server Architecture
Apache Server Architecture(2)
Popular compression methods on Apache
include the external extension module,
mod_gzip, implemented to help with reduction
of the size (weight) of web pages served over
HTTP.
The core of a Apache Server implements the
basic functionality of the server. In addition it
implements a number of utility functions
4/23/2008 9Apache Web Server Architecture
Core Component (1)
Following are the components of the
Apache core:
 http_protocol.c
 http_main.c
 http_request.c
 http_core.c
4/23/2008 10Apache Web Server Architecture
Picture Depicting the Core Component
4/23/2008 11Apache Web Server Architecture
How Requests are Handled?
(1)
URI to filename translation.
Check access based on host address, and
other available information
Get an user id from the HTTP request and
validate it
Authorize the user
4/23/2008 12Apache Web Server Architecture
How Requests are Handled?(2)
Determine the MIME type of the
requested object (the content type, the
encoding and the language).
Fix-ups (for example replace aliases by
the actual path).
Send the actual data back to the client.
Log the request.
4/23/2008 13Apache Web Server Architecture
Architecture of an Apache
Module
Picture Depicting Apache Module Architecture.
4/23/2008 14Apache Web Server Architecture
The concept of a Handler
A handler is for Apache the action that
must be performed in some phase of
servicing the request
They are defined by modules. A module
might specify handlers for one, many or
none of the phases of the request
4/23/2008 15Apache Web Server Architecture
Persistent Server Processes
‘Persistent Server Processes’ is a concept
that explains the implementation of
Concurrency in Apache.
To handle large incoming requests to website
TCP/IP servers fork a new child to handle
new incoming request from clients.
However in the situation of a busy web site
the overhead of forking a huge number of
children will simply suffocate the machine.
4/23/2008 16Apache Web Server Architecture
Persistent Server Processes
contd..
To solve this problem Apache uses Persistent
Server Process.
It forks a fixed number of children, right from
the beginning. The children service incoming
requests independently (different address
spaces).
It is interesting that Apache server can
dynamically control the number of children it
forks (i.e. increasing or decreasing it), based
on current load.
4/23/2008 17Apache Web Server Architecture
Picture depicting concurrency in Apache.
4/23/2008 18Apache Web Server Architecture
Configure Apache Web Server
The configuration details are given at
this site .
We have to first configure the DNS.
Then configure the following file
/etc/httpd/conf/httpd.conf.
The root directory of Web server is
/etc/httpd, which is divided into three
parts.
4/23/2008 19Apache Web Server Architecture
Configure Apache Web Server
contd..
The three parts are:
 /etc/httpd/conf (where configuration files
stays)
 /etc/httpd/logs (where the logs of Web
server and site accessing stay)
 /etc/httpd/modules (where the module
stays, which enables the server side
programmer to do programming in the
languages supported by Web server)
4/23/2008 20Apache Web Server Architecture
Apache Usage.
Apache is primarily used to serve both static
content and dynamic Web pages on the World
Wide Web. Many web applications are
designed expecting the environment and
features that Apache provides.
Apache is the web server component of the
popular LAMP web server application stack,
alongside MySQL, and the PHP/Perl/Python
programming languages.
4/23/2008 21Apache Web Server Architecture
Apache License
The Apache License is a free License
authored by Apache Software
Foundation or ASF.
It allows use of the source code for the
development of free and open-source
software as well as free software.
It is compatible only with the version 3
of GNU Public License or GPL.
4/23/2008 22Apache Web Server Architecture
Reference material
Apache License
http://en.wikipedia.org/wiki/Apache_License
Apache Server Architecture
http://www.cs.ucsb.edu/~tve/cs290i-sp01/papers/Concept_Apache_A
4/23/2008 23Apache Web Server Architecture
Concluding remarks
Apache Web Server has a modular
architecture. The core provides the basic
functionality and separate set of supporting
modules for handling HTTP requests.
Implicit Invocation is the architectural style.
Concurrency exists only between persistent
identical processes that service incoming
HTTP requests on the same port.
Functionality is easily changed by writing new
or editing existing modules.
4/23/2008 24Apache Web Server Architecture

Apache web-server-architecture

  • 1.
    Apache Web ServerApacheWeb Server ArchitectureArchitecture Chaitanya Kulkarni chaitanya.kulkarni1@marist.edu MSCS 521 23rd April 2008 4/23/2008 1Apache Web Server Architecture
  • 2.
    What is “theweb”? A collection of cross-linked “websites” A set of “web” technologies The consistent use of URIs to represent resources HTTP, HTML, and everything built around them Every person's cheap’n’easy client- server computing 4/23/2008 2Apache Web Server Architecture
  • 3.
    What is aServer?What is a Server? A server is a computer or device on a networkA server is a computer or device on a network that manages network resources. Mostthat manages network resources. Most servers are dedicated. This means that theyservers are dedicated. This means that they perform only one task rather than multipleperform only one task rather than multiple tasks. On multiprocessing operating systems,tasks. On multiprocessing operating systems, however, a single computer can executehowever, a single computer can execute several programs at once. A server in thisseveral programs at once. A server in this case could refer to the program that iscase could refer to the program that is managing resources rather than the entiremanaging resources rather than the entire computer.computer. 4/23/2008 3Apache Web Server Architecture
  • 4.
    What is WebServer ? A computer program that is responsible for accepting HTTP requests from clients, which are known as web browsers, and serving them HTTP responses along with optional data contents, which usually are web pages such as HTML documents and linked objects (images, etc.). 4/23/2008 4Apache Web Server Architecture
  • 5.
    A brief historyof Apache (1) First viable alternative to Netscape Communications Corporation web server It is an open-source software with cross-platform functionality. First version was created by Robert McCool 4/23/2008 5Apache Web Server Architecture
  • 6.
    A brief historyof Apache (2) Named Apache because:-  Out of respect for the Native American Indian tribe of Apache  due to the project's roots as a set of patches to the codebase of NCSA HTTPd 1.3 - making it "a patchy" server. Chief competitors include Microsoft’s IIS and Sun Java Systems Web Server 4/23/2008 6Apache Web Server Architecture
  • 7.
    A brief historyof Apache (3) Apache is used by giants like:-  Google Web Servers  Wikimedia The Apache License allows for the distribution of both open and closed source derivations of the source code. The name Apache is a registered trademark. 4/23/2008 7Apache Web Server Architecture
  • 8.
    Apache Server Architecture(1) Apachesupports a variety of features, many implemented as compiled modules which extend the core functionality. These can range from server-side programming language support to authentication schemes. 4/23/2008 8Apache Web Server Architecture
  • 9.
    Apache Server Architecture(2) Popularcompression methods on Apache include the external extension module, mod_gzip, implemented to help with reduction of the size (weight) of web pages served over HTTP. The core of a Apache Server implements the basic functionality of the server. In addition it implements a number of utility functions 4/23/2008 9Apache Web Server Architecture
  • 10.
    Core Component (1) Followingare the components of the Apache core:  http_protocol.c  http_main.c  http_request.c  http_core.c 4/23/2008 10Apache Web Server Architecture
  • 11.
    Picture Depicting theCore Component 4/23/2008 11Apache Web Server Architecture
  • 12.
    How Requests areHandled? (1) URI to filename translation. Check access based on host address, and other available information Get an user id from the HTTP request and validate it Authorize the user 4/23/2008 12Apache Web Server Architecture
  • 13.
    How Requests areHandled?(2) Determine the MIME type of the requested object (the content type, the encoding and the language). Fix-ups (for example replace aliases by the actual path). Send the actual data back to the client. Log the request. 4/23/2008 13Apache Web Server Architecture
  • 14.
    Architecture of anApache Module Picture Depicting Apache Module Architecture. 4/23/2008 14Apache Web Server Architecture
  • 15.
    The concept ofa Handler A handler is for Apache the action that must be performed in some phase of servicing the request They are defined by modules. A module might specify handlers for one, many or none of the phases of the request 4/23/2008 15Apache Web Server Architecture
  • 16.
    Persistent Server Processes ‘PersistentServer Processes’ is a concept that explains the implementation of Concurrency in Apache. To handle large incoming requests to website TCP/IP servers fork a new child to handle new incoming request from clients. However in the situation of a busy web site the overhead of forking a huge number of children will simply suffocate the machine. 4/23/2008 16Apache Web Server Architecture
  • 17.
    Persistent Server Processes contd.. Tosolve this problem Apache uses Persistent Server Process. It forks a fixed number of children, right from the beginning. The children service incoming requests independently (different address spaces). It is interesting that Apache server can dynamically control the number of children it forks (i.e. increasing or decreasing it), based on current load. 4/23/2008 17Apache Web Server Architecture
  • 18.
    Picture depicting concurrencyin Apache. 4/23/2008 18Apache Web Server Architecture
  • 19.
    Configure Apache WebServer The configuration details are given at this site . We have to first configure the DNS. Then configure the following file /etc/httpd/conf/httpd.conf. The root directory of Web server is /etc/httpd, which is divided into three parts. 4/23/2008 19Apache Web Server Architecture
  • 20.
    Configure Apache WebServer contd.. The three parts are:  /etc/httpd/conf (where configuration files stays)  /etc/httpd/logs (where the logs of Web server and site accessing stay)  /etc/httpd/modules (where the module stays, which enables the server side programmer to do programming in the languages supported by Web server) 4/23/2008 20Apache Web Server Architecture
  • 21.
    Apache Usage. Apache isprimarily used to serve both static content and dynamic Web pages on the World Wide Web. Many web applications are designed expecting the environment and features that Apache provides. Apache is the web server component of the popular LAMP web server application stack, alongside MySQL, and the PHP/Perl/Python programming languages. 4/23/2008 21Apache Web Server Architecture
  • 22.
    Apache License The ApacheLicense is a free License authored by Apache Software Foundation or ASF. It allows use of the source code for the development of free and open-source software as well as free software. It is compatible only with the version 3 of GNU Public License or GPL. 4/23/2008 22Apache Web Server Architecture
  • 23.
    Reference material Apache License http://en.wikipedia.org/wiki/Apache_License ApacheServer Architecture http://www.cs.ucsb.edu/~tve/cs290i-sp01/papers/Concept_Apache_A 4/23/2008 23Apache Web Server Architecture
  • 24.
    Concluding remarks Apache WebServer has a modular architecture. The core provides the basic functionality and separate set of supporting modules for handling HTTP requests. Implicit Invocation is the architectural style. Concurrency exists only between persistent identical processes that service incoming HTTP requests on the same port. Functionality is easily changed by writing new or editing existing modules. 4/23/2008 24Apache Web Server Architecture