1 Introduction

This book was created because I teach a course about Web Server Management and there are not really any books available and I needed to provide some additional material for the students in the course beyond simple explanations on Stack Overflow and Digital Ocean. I needed to have a place where I could cover some of the theoretical background in addition to the hands-on work.

You are free to use this book content for any purpose but if you are using it for a course, please drop me an email so that I know how it is being used. I can be contacted by email in the address below but you must put a period between robert and ford. .

1.1 Version

Let’s call this version of the book 0.7. I will let the course run during the Fall 2023 semester and collect details on missing items. After another semester, I might finally be able to call this the first edition.

The book is not complete! However I need to balance between getting at least something complete. If wait until I have everything complete before releasing this, I’ll probably never get it done (I had a google doc version in progress since 2016 and nobody ever got to see it because it wasn’t done).

There is eventually the plans of having more YouTube videos as well but these take a considerable amount of time to plan, setup and record. I’ll get there but things are just quite busy.

1.2 Operating System

The operating system used in our course is Ubuntu, specifically version 22. When it comes to installing software in our course we use “apt install”. If you are using a different operating system then you will need to figure out how to install the package or possibly build the software from source (which is something that I usually would like to do but so far in the course we don’t have the time).

There is some discussion within our school that we should be switching to RedHat Linux as our operating system for our courses. If and when this happens, the following things items will be of interest: * The mentions of the tools a2ensite, a2dismod, etc, will be replaced with symbolic links since RHEL doesn’t come with them. * Although the standard RHEL doesn’t have the folders for sites-enabled, sites-available, I’ll probably just tell you to do implement them to make it easier to manage multiple sites.

1.3 Web Servers

The original design of the book was focused on Apache since that was the intent of our original course. I have been adding more things about nginx to the course and at some point, I’ll probably reverse the roles and will focus on nginx instead. The new player, openlitespeed, will eventually get a section in the book; currently it is talked about in the HTTP/3 section on performance but no details are given as to how to do configuration. Although IIS is quite dated, I may eventually add a section about it.

1.4 Manual Web Client

You may find references to a tool called “The Manual Web Client”. This is a small utility that I wrote to help teach the concepts of HTTP protocol. I didn’t want to use Postman in class because it is way too helpful and I want to make sure that the course doesn’t deviate from “what the HTTP protocol is doing” to “how to do X using Postman”.

A Java version of the client is available here: Manual Web Client. For windows download the zip file, I have included the JRE as part of it. My plans are to rewrite this application as a native Windows but currently just no time to do it.

I also have a MacOS version written in Swift. I have binaries created for both the M1/M2 chips as well as the older Intel CPU but I have the minimum OS set to 12.3 (Monterey) because of the libraries being used. The Mac version is actually a bit nicer than the Windows version because you don’t need the “Connection: close” in order for the data to appear.