AOLserver, America Online`s open source webserver

Download Report

Transcript AOLserver, America Online`s open source webserver

AOLserver
America Online’s
open source webserver
Dossy Shiobara
February 2005
About Dossy Shiobara
• I've been using AOLserver since late 1999 to serve my own
personal websites, as well as helping to support others who use it.
• In 2003, I joined AOL where I support the sites at AOL that use
AOLserver as well.
• I'm currently the Project Leader of the AOLserver project.
• I’m the initial developer of two AOLserver modules, nsmysql and
nsfreetds. I’ve also contributed to the core server, as well as
nsopenssl and other modules.
1
A brief history of
AOLserver
2
NaviSoft (before Nov 1994)
• Company started by producing high-quality client- and server-side
tools for web publishing: NaviPress and NaviServer.
• NaviPress was one of the first WYSIWYG HTML editors.
• NaviPress could send changes up to NaviServer (using HTTP PUT)
making web site management and updating simple.
• Because of this capability, NaviPress/NaviServer was one of the
first entrants into the distributed web authoring space.
• NaviServer was designed to be multi-threaded from the
beginning. (In comparison, multi-threaded Apache was only
declared GA or “General Availability” or non-beta in Apache 2.0.35
in April 2002.)
3
AOL (after Dec 1994)
• In 1994, AOL realizes the need to enter into the Internet and
World Wide Web space.
• AOL acquires NaviSoft, Inc. on November 30, 1994.
• NaviServer is renamed AOLserver, NaviPress to AOLpress.
• AOL offers commercial web hosting through NaviService, then
GNN Hosting, then PrimeHost, using AOLserver/AOLpress.
• AOL launches Digital City, Inc. (DCI) in 1996 on AOLserver
platform. Continues to use AOLserver for other web properties
over the years (Moviefone.com, Mapquest.com, etc.).
• AOLserver 3.0 released as open source on July 8, 1999.
• AOLserver 4.0 released in November, 2003
4
So, what is
AOLserver?
5
What can I do with AOLserver?
• Run a server with high quality code resulting in very few security
vulnerabilities found in the wild.
• Easily administrate your servers through configuration files that
are programs themselves.
• Rapidly develop applications using a mix of C and Tcl that leverage
a scalable, multi-threaded architecture.
• Serve existing CGI (using nscgi), PHP (using PHP’s AOLserver
SAPI module), and JSP/Java Servlets (using Tomcat and nsjk2).
6
What can’t I do with AOLserver?
• Not suited for hosting different customers within the same server
process because of multi-threaded nature. Each customer needs
their own server process.
• Not many off-the shelf applications available to download, install
and run.
• No support for mod_perl at the moment.
7
Who uses AOLserver?
• Commercially:
– America Online: AOL.com, Moviefone.com, Mapquest.com, etc.
– KnowNow’s LiveServer
• Educational/Academic:
– dotLRN (.LRN) – distance e-learning (MIT Sloan School of Business, etc.)
– SMLserver – Standard ML ’97 (IT University of Copenhagen)
• Others:
– ArsDigita Community System (ACS)
– OpenACS – community site toolkit (Greenpeace, Creative Commons, etc.)
8
How do I get AOLserver?
• AOLserver is freely available, open source software, hosted at
SourceForge.
• AOLserver is approximately 75K lines of C code and 5K lines of Tcl
code.
• AOLserver project website is at http://aolserver.com/.
• Site contains download links of source tarballs, links to the
AOLserver Wiki, and other documentation links.
• For more information on Tcl, go to http://www.tcl.tk/.
9
Examples
10
Server configuration
• The server configuration is just another Tcl script that gets
executed at server start-up.
• Example “nssock” (HTTP listener) module configuration snippet:
ns_section “ns/server/${servername}/modules”
ns_param
nssock
nssock.so
ns_section “ns/server/${servername}/module/nssock”
ns_param
port
80
ns_param
hostname
www.example.com
ns_param
address
192.168.0.1
11
AOLserver Dynamic Pages (ADPs)
Source:
<%
set now [clock seconds]
ns_adp_puts “It is now $now, or [clock format $now].”
%>
Output:
It is now 1109047145, or Mon Feb 21 11:39:05 PM EST
2005.
12
Another way of doing it
Source:
<% set now [clock seconds] %>
It is now <%= $now %>, or <%= [clock format $now] %>.
Output:
It is now 1109047145, or Mon Feb 21 11:39:05 PM EST
2005.
13
Servlet-like request handling
Bind a Tcl proc to handle requests for a particular URL:
ns_register_proc GET /demo/time getTime
proc getTime {} {
set now [clock seconds]
set page “<html><body>\n”
append page “It is now $now, or [clock format $now].\n”
append page “</body></html>\n”
ns_return 200 text/html $page
}
14
Query a SQL database
Query a SQL database to build up part of an HTML page:
set page “<html><body>\n”
set db [ns_db gethandle userdb]
set row [ns_db select $db “SELECT username FROM users”]
while {[ns_db getrow $db $row]} {
append page “User: [ns_set get $row username]<br/>\n”
}
append page “</body></html>\n”
ns_set free $row
ns_db releasehandle $db
15
Perform a task in a background thread
Perform a task in a background thread:
ns_schedule_proc 3600 hourlyCheck
proc hourlyCheck {} {
set errors [… collect errors from log file …]
if {[string length $errors]} {
ns_sendmail [email protected] \
[email protected] \
“Errors Encountered” $errors
}
}
16
Summary
17
AOLserver …
• was originally named NaviServer when first created in 1994.
• is an open source webserver available from SourceForge.
• is mostly written in C, approximately 75K LOC today.
• uses Tcl as its embedded scripting language, another 5K LOC.
• has employed a multi-threaded design from the start.
• is suitable for rapidly developing fast, scalable, dynamic and datadriven web applications.
• has been proven stable and capable over the years through
aggressive use in some of the world’s busiest websites at AOL.
• has been ported to many platforms: Solaris, Linux, Win32, MacOS
X, BSD, Irix, HP-UX, etc.
18
Questions? Comments?
19