Web Servers

 

 

Chapter 21 in the text discusses Web Servers, looking at Microsoft's IIS (Internet Information Services) and Apache (apache.org) as two examples of what web servers do.  (Here is a link suggesting doing more is not always a good idea.) 

Relative Market Share of Microsoft vs. 'Open Source' is getting more interesting in recent years.

Here is some more discussion about Web Servers...

 

Unix/Linux vs. Windows:

The graphics of the 'software wars' on my 'OS Humor' page are a fun look at what's been happening in Operating Systems for the past several years.  They are quite accurate and make a good introduction to the topic and the several 'players' in today's software industry.

The Internet grew up in a Unix environment and nearly all web servers six or eight years ago ran Unix.  TCP/IP, the suite of protocols that runs The Internet, was developed for Unix and are 'built-in' to the operating system.  Linux is, to many of us, 'the same' or better than *ix ever was, and in most cases systems can be 're-hosted' easily from a 'commercial ix' to open source OS like Linux, freeBSD, Mac OSX, or any other 'free ix distribution.'

Windows is a relative newcomer to the web server marketplace and has quickly gained a significant market share among web servers.  Although Windows is the leader for desktop OS, Unix, and now Linux, are the most prevalent OSs for web servers.

Windows aficionados point to 'ease of use' and like the GUI interface to Windows NT (on its way out) and Windows Server (on its way in) that lets systems administrators 'point and click' their administrative tasks.  There is probably a shorter 'learning curve' for someone just learning to operative a web server.  

Unfortunately, the past few years have seen a lot of security concerns for Microsoft products.   During the first two years of using Windows 2000, for example, there were something like 200 patches released.  Many or most of them required physically visiting the server, taking down services, rebooting the server, which takes the web server 'off the air' so that it's not available to its users.  Some patches compromise the operation of application software running on the server, so systems administrators are wary of installing patches.  Keeping a Microsoft system 'secure' was/is an administrative hassle.  Microsoft pledges more secure systems, haven't delivered quite yet, but they _do_ keep getting better and better.

Unix/Linux fans point to efficiency, security, scalability, and lower costs.  During the same period of time that Windows 2000 required nearly 200 patches, many of them security related, the several Linux servers I was tending only required three.  Of these patches, none required the systems to be rebooted, and they could all be installed remotely.

Unix/Linux administrators generally prefer the 'command line' interface to the GUI.  And, they like knowing exactly what's going on and where it's happening.  They believe that pointing & clicking hides important stuff from the systems administrator, and that the command line is a quick and efficient way of handling most tasks.  

Discussions, on the web and in person, among Microsoft & Linux devotees can become quite heated.  Some people have an almost religious zeal about their environments that transcends any technical advantages offered by either.

The best strategy for a 'systems person' is to become familiar with both Windows and Unix/Linux and be able to support either.  Windows is not going to 'go away' and it's likely that an enterprise will run some applications in each environment.  

 

Unix/Linux and scalability:

A Linux Operating System running Apache Server is today's most popular combination for running a website.  The MySQL DBMS and PHP server-side scripting language are the most popular combination of database and programming language.  This makes the acronym LAMP (Linux, Apache, MySQL, and PHP), and LAMP systems are increasingly popular for web and intranet projects.  These are 'Open Source' solutions available for free or very low cost relative to the 'proprietary' solutions provided by companies like Sun, IBM, and Microsoft. 

'Most Popular' is somewhat misleading, though, since many of the LAMP applications are for small websites running on smaller servers that only handle hundreds or thousand of web requests a day.   Web sites that handle hundreds or thousands of web requests per minute, or second, need special consideration and equipment.

Larger applications that have been running for years are more likely to use a commercial, proprietary Unix like Sun's Solaris, Hewlett-Packard's hpux, Silicon Graphics' irix, or IBM's AIX.  

Really large web applications, like ebay.com, may be run on an IBM Z series (mainframe, High End Super Server, or whatever it's called) which can give sub-second response time to hundreds of thousands of users simultaneously.  

When large web applications are built using Windows OS, they are typically deployed on a 'server farm' since Windows web servers are notoriously inefficient and unstable and it's a good idea to have many machines to 'share the load'.  The last estimate I heard was that a Windows Server on a fast Pentium could handle maybe several dozen concurrent web-users running a secure application, where a Linux server on the same machine can handle hundreds.

IMHO, the best strategy for large web applications is to have _a_ system which is large enough to handle the load, and which has 'fault tolerance' built into it so that the system can 'stay up' when components fail and are replaced.  Today, Linux will run on everything from a '386 through mid-range computers and IBM zSeries mainframes, so applications developed in this environment are easily 'scalable' to handle large numbers of users.

Microsoft is slowly encroaching on the large server market share.  They ran HotMail on Unix servers for a long time, and were embarrassed by poor performance when they tried to run it using NT.  As Windows 2000 came along, Microsoft was able to deploy HotMail on Windows servers, and Windows servers are maturing nicely, and have devoted followers.

Beyond Windows 2003 Server, Microsoft is addressing issues that limit the size of Windows servers and with the advent of 64-bit processors will soon be in a position to compete with the 'high end' servers running Unix and IBM operating systems.

 

A 'Web Server' needs to run software that will provide 'web services' like http, smtp, and pop3 (Hyper Text Transport Protocol, Simple Mail Transport Protocol, and Post Office Protocol) that are used by the majority of Web Users.

On a Linux machine, the web server is likely to be Apache, which is provided as an Open Source product by the Apache Software Foundation.  SMTP is likely to be handled by Sendmail, and POP3 software is likely to be provided by an Open Source 'IMAP Toolkit' developed and supported by University of Washington.

On a Windows server, these components are all part of the Operating System.  The web server is IIS, and mail services are often handled by Microsoft Exchange.

The text, in sections 21.6  21.7, shows a bit about each environment.  The main thing to pick up here is that there are GUI tools provided by Microsoft as the administrative interface.  In Unix, the administrator is likely to be using a text editor to make changes in a 'conf' (configuration) to handle admin tasks.  I'll show example of this in class.

 

Web Server Programming Languages:

HTML is a language used to make 'static content' for a web page.  Without any programming language mixed into an html document it appears the same every time it's accessed.  Where database or other 'dynamic content' is needed, a programming language compatible with the web server is required.   A 'shopping cart', for example, would be impossible to provide without some programming language that allows the user to interact with the website to browse and select items for purchase, then hit their credit card for payment automatically before queuing up their selections for shipment.  

Section 21.8 briefly introduces a few of these languages:

ASP is Microsoft's Active Server Page language and it is used along with a 'scripting language' like VBScript or Perl to make dynamic content on a Windows server.

Perl (Practical Extraction and Report Language) is an Open Source language that has been the favorite of Unix systems admins for decades.  It runs on Windows and Linux/Unix servers.  On Unix, it is used via CGI (Common Gateway Interface) to work as a programming language for delivering active content to web pages.  In Windows, Perl scripts are accessed by ASP to provide active content.    

Python is another programming language for both Unix & Windows servers.  It is a very 'generalizable', object-oriented language that is also used for game programming since it can easily interact with the objects that make up the characters and environment of a game.

PHP (PHP Hypertext Preprocessor) is the language we'll be looking at in detail in this class.  It is a relatively new language that was designed specifically to 'sit between' web and database servers and deliver up active content.  PHP, and MySQL, is a favorite combination that will work on either Windows or Unix/Linux servers.

 

Hit Counter