I want to set up a fully functional web server in the classroom. I will be using a separate computer provisioned with Apache, MySQL, Tomcat, PHP, Perl, etc. I want to have each student in the class able to have their own working directory. I also want to have a pair of sharing directories. One where they can access, without changing, lesson-based material, and one where they can upload content for others to access, and where collaborative projects can be built. I intend that each student's personal directory will migrate with them as they progress through the courses, for those that do continue.


  • Single classroom
  • Between 25 and 35 students in each period
  • Desktop computers available for each student
  • The students are not required to utilize the same computer each day (most, but not all, do so however)
  • All the desktops will have the same tools, including FTP client for accessing the "server"
  • Courses are at three different levels, but are all Web Development
  • The system will be used, independently, by 5 different class periods.
  • Not all students are guaranteed to have home Internet access
  • Personal laptops are allowed, but not required
  • The tools on the desktops are able to be installed on their personal laptops if desired (no proprietary software involved)
  • Students are allowed to use their own selected tools (editor, IDE, etc.) on their personal laptops


  • The school's administration has approved this project
  • The network admin has created a VLAN for the classroom
  • All security concerns have been, and will be, addressed by the IT department
  • The server aspects of the system will be configured, and maintained by me
  • The system will be kept properly updated, this includes Apache as well as the supporting software such as the DB, PHP, Ruby, etc.
  • Any and all licenses are such that everything proposed is "above-board"

How much access should I allow the students to files (theirs, the common directory, and lesson-based directory)? I.e.: should they be able to access them from outside the classroom and/or school's network? And, should they be allowed to create a public-facing web page/site as part of the server's function?

I'm thinking that full access from anywhere will allow them to work on projects outside of class without having to move files back and forth with thumb drives. That will also mean that I can give them larger assignments as homework rather than having their coding work only be labs. I'm also considering that the ability to have their own website will give them greater investment in the class, and greater desire to learn things to make their "Own" website better, and stand out more.

Again, IT claims they can handle the setup and security for any of the ideas I've presented them, so security and maintenance are not issues, just how it may affect their education.

I am also wondering if it's better to configure the server with the latest stable packages, or if I should make it closer to what most low-end shared hosting accounts have. The shared-hosting environment is what they most likely will encounter if they choose to do something personal on the Web now. Doing so, however, will restrict some of what I can demonstrate with newer packages.

  • $\begingroup$ I would use Debian (100% Free = 0% proprietary), it has all of the software that you mention; it is a good compromise between conservative and up to date. If you need more up to date, then you can install docker, and add an up to date dock. It will also give you what you need with shared files, including everyone can write but not delete other people stuff (using sticky bit). $\endgroup$ – ctrl-alt-delor Jun 27 '17 at 17:21

Go latest - why not? Public facing - I'd say just make them all sign a terms of use agreement.

Great plan - at the moment I don't really get to do much web work due to the courses I teach - if I did, I would totally love this. Particularly if you can get a retired server rather than just a PC, I reckon kids would buy in to it bigstyle!


I'm going to start with a bit of definition, since industry terminology is somewhat in flux. "Server" means "an instance of an operating system and its contents". "Host" means "the hardware on which servers run".

You can pick up decent retired hosts for under $600 on Ebay (2 x 8 core i7, 96GBRAM, 6TB HDD, 2 GPU's) Fire one up with Ubuntu server and LAMP stack. This is comparable to what you would get if you bought bare metal on a low end cloud system.

However, Ubuntu server comes with the OpenStack MAAS components as one of the primary models of installation. (https://docs.ubuntu.com/maas/2.2/en/) .

With three hosts, you can set up a cloud just like the big players do. OpenStack was open sourced by Citrix, from a subset of the same code base that major hosting providers use. Being able to get hand-on with the metal of a real virtual cloud system using the same lineage of tooling as AWS, 1 and 1, or BlueMix would be a win/win.

I'd use the latest LTS installation.

With that setup, you could carve out personal or project virtual machines, and the students could get up close and personal with the cloud.

A word of caution - hosts are LOUD! a "quiet" host's fan sounds like the engine on an F16, versus a 747. A soundproof rack is important if you plan to put this in a classroom, or any closer than the next county.


Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.