Powering Your School Web Site with GNU/Linux and Free Software

Powering Your School Web Site with GNU/Linux and Free Software

By Randy Edwards

Update: This article is dated. The ideas and concepts are still fully relevant. However, with the progress of free software, the individual software choices are much wider and the programs mentioned below may no longer be the best choices for the job.

Many schools have school web sites. But are those web sites really used? Are they regularly updated or is the lunch menu and school board minutes always six months old? Can overworked, computer-phobic teachers easily post things to their web sites without first getting a degree in HTML programming?

There are commercial solutions out there that address these issues, but often those commercial solutions come with high costs. In addition to the straight financial costs, more importantly they cost you in terms of freedom -- they lock you into their software or web site, violate student privacy laws, and some even will claim ownership of any and everything a teacher writes/posts!

There's no need to use a third-party web site or restrictive and expensive commercial software to create your school's web site. All the software you need to create dynamic, interesting, yet easy-to-use school web sites is freely (free as in "no-cost" and free as in "freedom") available.

This article's goal is to educate you on what you need to do this. You'll need a computer and a connection to the Internet. You'll also need some time and knowledge to set things up. But other than that, you're all set -- all of the software needed is free. Free not only in terms of cost, but free for you to use any way you want. Copy it to give to students or other schools or even sell it -- you're free to do it.

I'll assume you have a 24/7 connection to the Internet with a static (fixed) IP address. I'll also assume we're going to install this software on a low-end Pentium computer (though any 386 or better computer will do). This computer should have a decent amount of memory in it -- put as much RAM as you can into the machine.

First, you need a web server and an SQL database server. We'll use the Apache web server software. With about 65% of all Internet domains running Apache it's by far the most popular web server in the world. We'll also run the powerful MySQL SQL database server. We'll run both of these on the same computer (one reason for as much memory as possible in that computer).

The free software programmers writing this software typically do not want to support Microsoft's illegal activities and monopoly, so most of the software will run only on GNU/Linux servers. (Some of it will run on Windows servers, but it's usually a large headache to get it to run on Windows. I wouldn't advise running a Windows server anyway just because of the security nightmares and update/administrative pains.)

A disclaimer: If you don't have experience with GNU/Linux, remember, you're running a different operating system (OS). Just like if you were a Windows user and were switching to a Mac you're going to experience a learning curve, you're going to have a similar learning process installing and configuring GNU/Linux. Be ready for this or opt to pay someone to set your system up.

The first step is to get a GNU/Linux server up and running. You have to choose which of the dozens of companies and projects that produce Linux "distributions." Each one of these different Linux distributions has its strong and weak points, though many are very similar (isn't it nice to have choice! ).

If you're interested in just getting something "up and running" with minimal fuss and headache, you can't go wrong with Red Hat Linux. If you're interested in taking some time and don't mind a steeper initial learning curve, go with Debian GNU/Linux. The advantage of Debian is greater flexibility, far greater selection of pre-packaged software, and easier maintenance and updates once the system is up and running; however, Debian's install is much more technical than Red Hat's.

I'll assume you choose Red Hat. At the time of this writing Red Hat is at version 8.0. Versions 8.0 or 7.3 are fine -- but don't use any older versions. GNU/Linux evolves very quickly and a common mistake people make is to use an old CD someone gave them. This is a big mistake -- those old versions aren't worth it unless you like headaches and upgrades.

You have multiple ways of getting the software. You could go to the distribution's web site and download the CD-ROM *.ISO images for the distribution (3 CDs for Red Hat or 7 (!) for Debian. Yes, you get a lot of cool software in these distributions -- everything from games to office suites (plural!), to servers and utilities of every imaginable kind!). Once you have the ISO images you just burn them to CD and you're ready to boot.

An alternative to downloading is to purchase the software. You can buy a boxed set of Red Hat for about $60+ and you get a paper manual, support and other benefits. This is something to seriously consider -- that support may be well worth the money.

Another alternative is to go to some place like CheapBytes.Com, LinuxCentral.Com or LinuxMall.Com and they'll burn the CDs for you (saves downloading those huge 640MB *.ISO images) and will sell them to you for $5-10.

All GNU/Linux distributions have outstanding online support communities -- you definitely want to sign up for some mailing lists for your particular distribution and to use that avenue of free support.

A strong suggestion for someone doing this is to also purchase a book for your particular distribution. For most people it's comforting to know you havesomething on paper to refer to if you have questions and that $30-50 for a book is cheap comfort. For Red Hat, I like the "bible" books published by Wiley, but any decent book will do.

Now it's time to install. You'll want to install this on a 386 or better, the later the computer the better. There's no need for a Pentium 4 2GHz monster machine unless you're going to be doing a really insane amount of web traffic (and believe me, you're not:-). Again, more important than the CPU is the RAM -- give the machine as much memory as possible. You'll only need a hard drive of 800-900MB or better (GNU/Linux is written very efficiently and isn't a hog for disk space).

The install process for Red Hat will be easy enough that an average user can handle it, but you may want to do it a couple of times just to play around and to get familiar with it. The important thing is that when it asks you what software packages to install, remember to tell it to install the Apache web server, PHP (the most popular web programming language), and the MySQL database server. The system will configure itself, but you'll still probably want to play around with your new toy just to familiarize yourself with it.

Once installed, you're pretty much set to start adding content management systems (CMSs) to run your web site.

Now comes the tough part. This is going to be tough for two reasons: you have to design your site and you have to install and integrate a lot of software.

Make no mistake about it, you're going to have to deal with some *.HTML and *.PHP files and be familiar with both of them. You're going to be doing some light SQL database work. You're also going to have to understand the relationship between subdirectories on a computer's hard drive and how content will appear on a finished web site. We're talking about definite computer science skills here.

Setting this software up is a job for a computer technician, not a teacher. Expect a learning curve if you don't have these skills, or just pay someone to do the work for you (and considering the money you're saving by using free software, you can probably afford to pay someone to do the work:-).

An idea of what your web site is going to look like is needed. While there are computer tools to do this, I usually prefer the "rough out ideas on scrap paper" method. You'll want to sketch out your home page, and to work out the series of major links/paths that your site is going to have.

For example, your home page might be a CMS (my favorites are PostNuke and Drupal; see this or that for a couple of examples of CMSs in educational use). A CMS stores its content in a high-powered SQL database system and creates web pages "on the fly" by pulling the content out of the database for each user which views a web page.

Let's say you want to allow your principal to easily post school news online to your home page. This would give the site a "dynamic feel" and would ensure that it's updated whenever it needs to be updated. From the principal's view it'll be as easy as typing in a news article into a "box" (a web form; an alternative is to just copy-and-paste the text from a word processor into the web form's box), previewing the article, and clicking on "submit" when the principal's finished writing -- that's it! The content would then be automatically saved into the database system and the very next person to view the web page would see the updated web page with the new content in it. It doesn't get easier than that -- this is mindlessly simple to use.

Many CMSs allow for readers to post comments -- that may be an attraction to get feedback from the public. These comments can be open for all to post (just check the comments to ensure you don't have students posting insults about the school!) or they can be set so that users have to register and only registered users can post comments (thus allowing you to track down the twit students who post insults about the school ).

You'll probably want a major link path to be links to individual teachers/classrooms. The teachers would then be able to post (again, typically via a copy-and-paste function from their word processor) homework assignments and other info about their class. So now we'd have a layout of our web site which looks like this:

You'd also probably want to have some other information, school policies, lunch menus, etc. Something like school policies aren't going to change often; they'd be best done with static HTML pages. But remember, you're using a CMS as your base. If you take your plain HTML pages and cut the "meat" (the content) out of it and place it into a *.PHP file formatted for what the CMS uses, all of these static documents will have the same look/feel/colors/style as your main web site (if this is unclear, see this site and view the various articles listed there to get an idea of what I'm talking about).

Something like the school lunch menu would be updated by the school secretary (that's my guess at least). With the power of the PHP web language and CMS we can turn this into a simple copy-and-paste function for her. Using a free software package like Online Lunch Menu we can do this pretty easily. So now our design might look like this:

Things are starting to look pretty cool. And thanks to the CMS systems we're using, this web site will be dynamic, easily updated, and we can assume that it'll stay reasonably up to date.

Now let's get fancy. Most schools have digital cameras, and students love taking pictures of themselves. How about an easy-to-use dynamic photo album for pictures? Such a photo album will have to automagically create thumbnails of pictures (there's nothing worse than trying to load a page of 22 huge pictures when you know there's only 1 picture you want to see). The software should make it easy to categorize photos and should let us create new categories and to reorganize photos after the software is installed. The software should also automatically handle new uploads of photos and should be easy to use.

Does this imaginary web-based photo album sound expensive? Good news! It isn't imaginary and it's free software -- so there's zero cost for the software and you have the freedom to use the software forever and to even change it if you'd like to. Many CMS systems have such photo albums already written and they'll integrate seamlessly into the CMS. So not only will we get the features listed above, but the photo album will retain the entire look and feel of the rest of our web site. So now our site layout might look like this:

Now let's get extra fancy. A key to supporting a school is alumni. Let's create a sub-site for the old farts that used to go to our school just to give them an inclusive feeling and some "gee-whiz" appeal. We'll use phpAlum (demo) to do this. PhpAlum allows the alumni to post addresses, semi-personal info (marriages, grandkids, etc.) and gives its alumni users a password function so that information isn't available to the general public -- pretty cool, eh?

We'll also want to put our automated, web-based library system and integrate it into our school's web site. (What? You don't have an automated, web-based library system? What's stopping you -- the software is free and you only need to pay for an old computer to run it on!) So now our web site layout would look like this:

Now, let's step back and look at the big picture. What we're talking about is roughly a week's full-time work to set this web site up. If part-time work, figure a month. What we'll have is a dynamic web site which novice teachers with no HTML training can use and which will be constantly updated. We've created a site which will attract some interest from our general community, and which will be an electro-magnet for parents and students alike.

Would you like to see an events calendar integrated into the site? A calendar, automatically matched to your web site's colors and look/feel, where teachers, administrators, or even students and/or the public could enter in events into different event categories? How about online chat, weather forecasts, forums for students to help each other with their homework (etc.)? All the software is freely available...

Remember, there's no taxpayer money wasted on expensive software that you have to buy again and again and again. No "per server/user/teacher" licenses, no upgrade fees, no software collecting data on students/teachers -- nothing! And best of all, if your school has classes in HTML and/or PHP web programming, we can have students (or faculty!) legally copy the software's source code and study/play with/modify it!

Does your school web site have these capabilities? If not, why not? What's stopping you?!

 

This article is copyright © Randy Edwards 2002 and is licensed under the GFDL.