CNT4603 - 2014 Summer
Assignment 4
Journals Due Tuesday, July 1st, at the beginning of class.

Assignment: CMS

Your objective is to set up a Content Management System (CMS). It should be available on your virtual CentOS server's ip, and should be responsive to the URL http://YOUR.IP.NUM/ (i.e., I shouldn't have to add any additional path to find your CMS.)

For this assignment, you will use Drupal 7 (available at; the most recent 7.x version is 7.28) Do not a default install: we are going to use a separate mysql server on your Debian box to drive the CMS.

The first step for this assignment is to install a mysql server on your Debian box; remember, unlike the default assumption of Drupal that the mysql server is on the same machine as the webserver, please instead install mysql-server on your physical Debian box, listening on the eth0 interface.

Inside of that new mysql instance on your Debian machine, you should then create a new database called drupal, and a new mysql user drupal associated with the webserver ip mentioned in the first paragraph (this is not an actual username on the system — this user is a mysql user, and you should look at the mysql documentation available at to see how to create this user). Remember, this user will need permission to come in from the network since the CMS is going to be running a machine separate from the database server.

On your VirtualBox CentOS installation, download Drupal 7 and install it (remember, your database is on your Debian machine, not localhost). Copious documentation is available on the Drupal website. Finally, put a redirect from your Debian box's nginx default web page over to your CMS on your virtual CentOS server. (I.e., when a user visits your Debian webserver, the user should be redirected over to your CentOS virtual machine.

While all of the above installation is not difficult, there are several "gotchas" lying about. The first and foremost is that you very likely do not have all of the software installed on your virtual CentOS to run a webserver that provides Drupal. Fortunately, all of the bits that you need are in the repositories, so you won't have to compile software by hand or do anything other than install standard packages.

For example, you will need a webserver on your CentOS machine. The easy choice is to install the Apache package, although there are others that can be made to work if you desire (though making some of them, such as nginx, work correctly with Drupal is more of a challenge than you might expect.) You will also need PHP since Drupal is written in PHP. Consult the Drupal guide for other items — you should expect to install several packages that start with "php-", such as "php-gd".

Another major stumbling block is SeLINUX: it is not Drupal-friendly at all. Also, watch out for firewall issues: firewalls are meant to block unexpected network activity, and it's not a given that mysql and webservice are expected network activity.

For content, you may use anything you like: a simple poll, or you can again use wget to grab real data from, say,, or perhaps you might want to create some content around July 4th. (Another source, of course, is mining your own CMS or other web content if you already have some on the web.)

On Tuesday, July 1st, I will use a portion of class to visit each of your Drupal sites so we can all admire your handiwork, so please make sure that everything is working during the class period.

A journal is due for this assignment. Make sure that you document in your journal all of the steps that you went through, following the guidelines on the class home page.

Please turn in a printed copy of this assignment at the beginning of class on Tuesday, July 1st.