20
AOLserver America Online’s open source webserver Dossy Shiobara February 2005

AOLserver America Online’s open source webserver

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: AOLserver America Online’s open source webserver

AOLserverAmerica Online’sopen source webserver

Dossy Shiobara

February 2005

Page 2: AOLserver America Online’s open source webserver

2

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.

Page 3: AOLserver America Online’s open source webserver

3

A brief history of AOLserver

Page 4: AOLserver America Online’s open source webserver

4

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.)

Page 5: AOLserver America Online’s open source webserver

5

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

Page 6: AOLserver America Online’s open source webserver

6

So, what is AOLserver?

Page 7: AOLserver America Online’s open source webserver

7

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).

Page 8: AOLserver America Online’s open source webserver

8

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.

Page 9: AOLserver America Online’s open source webserver

9

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.)

Page 10: AOLserver America Online’s open source webserver

10

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/.

Page 11: AOLserver America Online’s open source webserver

11

Examples

Page 12: AOLserver America Online’s open source webserver

12

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

Page 13: AOLserver America Online’s open source webserver

13

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.

Page 14: AOLserver America Online’s open source webserver

14

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.

Page 15: AOLserver America Online’s open source webserver

15

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

}

Page 16: AOLserver America Online’s open source webserver

16

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 $rowns_db releasehandle $db

Page 17: AOLserver America Online’s open source webserver

17

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

}

}

Page 18: AOLserver America Online’s open source webserver

18

Summary

Page 19: AOLserver America Online’s open source webserver

19

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 data-driven 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.

Page 20: AOLserver America Online’s open source webserver

20

Questions? Comments?