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