A quick look at your local book store's Internet section will tell you that there are quite a few commercial packages out there for building Web sites. (Chances are you're in that section now. Go ahead, take a quick look.) What those books often fail to mention is that many of the world's most popular Web sites were built using freely available tools, and run on free operating systems. They also tend to be served up by Apache, the world's leading Web server, which is also free.
I don't think this omission is due to some vast commercial software conspiracy; there are plenty of books about Linux (you may be near that section too, so take a peek), one of the free operating systems in question. In fact, the success of Linux has drawn much-needed attention to the Open Source software movement, and in turn helped to make this book possible. If anything, the problem is lack of information about free tools and misconceptions about Open Source solutions.
My goal in writing this book is to make you aware of the amazing richness and quality of Open Source tools for building Web sites. I'm not selling anything (other than the book) and I won't profit from your buying decisions (other than the book - the checkout line is probably near where you came in). While I will encourage you to consider the advantages of a free operating system, chances are good you can use these tools on a machine and commercial OS you already have.
I should also point out that this is an "idea" book, not a comprehensive reference about any particular programming tool or operating system. As part of the task of making you aware of what is available for you to use, I'll encourage you to look at on-line resources and other books for more detailed information. (Try to remember where this section of the store is, since you may be coming back soon.)
Who should read this book?
You can take any of several approaches to the material here, depending on what you want or need.
If you are responsible for keeping a Web site running, or you are just starting to build one, the early chapters will provide a good check list for your system; compare my suggestions to your own ideas and see if you have the best tools for your job. The end chapters have guidelines on site maintenance that you might appreciate also.
Site developers and application programmers might be more interested in the middle chapters where I discuss tools for specific needs and explain the advantages of different alternatives. Farther on we'll get into designs for specific types of Web sites, which may give you ideas as to how to build one of your own.
If you're the person who plans or manages the efforts of the people in the preceding paragraphs, the discussion sections of all the chapters may help you with choosing a strategy and architecture for larger sites and more ambitious applications.
While I intend to explain and illuminate the concepts of various Web technologies as I go, I expect the reader to be familiar enough with Perl scripting that you can follow the examples, with appropriate reference material at hand. Teaching you the basics is beyond the scope of this book; and besides, I couldn't do a better job than the many texts already available to help you learn. Leaf through the early chapters and read an example or two, and you'll know if you're ready.
Perl provides the glue for the other tools I'll discuss. If you implement any of the design plans given here, you're going to get your hands dirty, your feet wet, and other hard-working analogies. Open Source tools are about source after all, and you're going to have to look at some to make your way through this world. But don't let that intimidate you; in spite of its geek-oriented, high-tech characterization, the Open Source world is remarkably friendly, and actually provides a much more gentle learning curve than some commercial products I've attempted to use over the years.
I expect you already know that Web browsers talk to Web servers; that's as much architecture as you'll need to get started here. This book is all about interesting things to do with servers, and we're going to assume that browsers are the well-behaved, generic clients they really ought to be instead of the crass ghetto-forming pawns of commercial empires that they've become. (Hey, maybe there is a conspiracy!)
But we were talking about you: this book will help you find useful tools and get them to work faster. It's a book for planners, developers and dreamers of all kinds. As I said before, it's an idea book, aimed at helping you realize how to make your own ideas work using freely available, quality tools.
What's in the book?
The material is separated into four parts:
Part I discusses Open Source tools in general and those that make good choices for a Web site in particular. The first chapter talks about the methodology and how to choose good tools from the amazing selection available on the Internet. Chapter 2 discusses the selection of an operating system, or considerations for the one you already have, along with what to configure for a Web site and (more importantly) what to disable; it also explains the basic Apache setup. The third chapter discusses the prevalence of scripting in Web applications and introduces simple Perl CGI scripts.
Part II is about tools for more complex applications. Chapter 4 is about databases and how to use them from inside a CGI script. Chapter 5 talks about ways to speed up the performance of CGI and go beyond it into the deeper realms that mod_perl provides. Chapter 6 discusses secure communications between the browser and the server, which you'll need for sensitive information such as credit card numbers. Chapter 7 talks about tools for embedding Perl scripts into Web pages for better site design.
Part III uses the tools discussed so far to build three basic kinds of Web site. Chapter 8 is about community sites, which focus on news, discussion and other attractions for whatever your community might happen to be. Chapter 9 is for intranet sites where a variety of applications and information are served up to a protected network. Chapter 10 brings up the issues of E-commerce, such as user profiles, shopping carts, and why we needed those security tools from chapter 6.
Part IV goes on to general issues that might come up as any sort of site matures. Chapter 11 covers strategies and tools for managing site content as your simple site grows beyond your initial expectations. Chapter 12 is about performance management, how to keep your site on-line as its popularity grows (and how to keep those hordes of users happy).
There's also a bibliography, or as I prefer to think of it, a suggested book shelf for people who do this kind of work. As I said earlier, I can't hope to provide everything you need in one book (and if I did, you probably couldn't lift it), so I've gone through my own bookshelves (both real and virtual) and listed the things that helped me learn to do this job.