Installation Commentary

Here's some notes about the strategy behind the installation instructions listed in Installation Instructions

The idea is to give an ordinary user named manhat the ability to have full read/write access to all of the files within the Manhattan system without ever having to login as root. The entire Manhattan system is installed in this user's home directory. This includes all of the executable files that make up the system (in ../manhat-x.x.x/bin and ../manhat-x.x.x/sbin) the chat server executable and its configuration and log files (in ../manhat-x.x.x/chat) and all of the data files related to each course that will be set up on Manhattan (in subdirectories under ../manhat-x.x.x/courses).

When students and teachers use Manhattan, it is actually the Apache web server (httpd) that reads and writes the data. If we want our manhat user to be able to effectively manage the system, he must be able to read and write all of the files created by the Apache web server.

Note

The importance of having an ordinary user manhat have read/write access to all of Manhattan's files is not nearly as important now as it was in Manhattan's earliest releases. You'll be using a web browser to manage Manhattan 99% of the time. Nevertheless, it's still a good idea to give manhat control of the files placed in his home directory.

A way to achieve these goals is to create a new group called www and make both our user, manhat, and the Apache web daemon, httpd, members of that group. Manhattan will change the ownership of all files it writes to user:manhat and group:www

Step 1 creates our manhat user. The www group is created with manhat as a member in Step 2. In Step 8, we tell the web server to run as a member of the www group.

Next, since the program files are stored in /home/manhat/manhat-x.x.x/bin and /home/manhat/manhat-x.x.x/sbin, the web server has to be configured to allow these files to run as CGI scripts. Also the image files used in Manhattan are stored in /home/manhat/manhat-x.x.x/images and the web server has to be configured to make these files publicly accessible. These tasks are accomplished in the first three lines added to httpd.conf in Step 9.

Note

You should use the alias names /manhat2-bin/ and /manhat2-sbin/ and /manhat2-images/, since these are written into the CGI programs. If you need to change them, for example if you are running multiple installations of Manhattan on a single server, you'll need to modify the appropriate settings in the custom.h file and re-compile with a make clean followed by a make english.

The rest of Step 9 configures the Apache server to follow any symbolic links found in the ../manhat-x.x.x/images directory. This is necessary to enable the Manhattan feature that allows users to, in effect, publish an entire web site to a Manhattan classroom by attaching the appropriate files to a message.

Other things to check:

  1. Make sure ServerName is set properly in httpd.conf

    Your Apache httpd.conf file contains a ServerName entry. Find it, and make sure it is correct.

    Apache passes this value to CGI programs like Manhattan as an environment variable. Manhattan uses the ServerName value in certain places to construct URLs back to its own programs.

    A common mistake is to have a ServerName setting that makes sense from the on-campus intranet, but doesn't apply from off-campus. Make sure you can get to, for example, http://Your_ServerName_Setting/manhat2-images/manhattan.gif from anywhere on the Internet.

    If the ServerName setting is incorrect, things like viewing an attached website, or "Configuring a course" from the administrative program won't work properly. Be especially suspicious if these things work from on-campus, but not off campus (because your server is known as different names from each place).

  2. If you plan to use Manhattan's Chat server, check the value of the MELANGE_PORT setting in custom.h

    Is your firewall opened to allow access on that port? If not, no chat.

    If you are running more than one installation of Manhattan on the same server (which is perfectly fine - just put them in separate directories, use different Alias and ScriptAlias names in httpd.conf, and modify custom.h accordingly) you must make sure each installation uses a DIFFERENT port number.