EDRN DMCC Application Server

This is a "buildout" for the EDRN DMCC Application Server. The EDRN DMCC Application Server serves web-services-based applications at the Data Management and Coordinating Center (DMCC) for the Early Detection Research Network (EDRN).

Currently, these applications are:

  • EDRN RDF Service

In the future, we plan to develop additional DMCC-hosted applications, as well as migrate existing applications (currently, the ERNE Cache) to this platform.


To make this buildout active, first ensure you have the appropriate prerequisites, then follow the instructions below.


The prerequisites for the EDRN DMCC Application Server are:

  • FreeTDS. Check this by running locate freetds.conf. If you see the configuration file in a system directory (not a user directory), you're fine. If not, you can install this with system-provided installers, or visit http://www.freetds.org/ and click "Stable Release". When building by hand, make sure to specify --enable-msdblib to the configure command.
  • Python version 2.4. Check this by running python -V. Later versions like 2.5 and 2.6 will not work. You can install it with most system-provided installers like yum, apt-get, etc. You can build it from source by grabbing it from http://www.python.org/download/releases/2.4.5/.
  • Python Imaging Library, aka PIL. Check this by running the command python2.4 -c 'import PIL'. Make sure the python executable you're using is the 2.4 version. If you get no errors, then you're fine. You can install this with many system-provided installers, or from the source at http://www.pythonware.com/products/pil/.
  • PyMSSQL. Check this by running python2.4 -c 'import pymssql'. If you get no errors, great. Otherwise, you could try installing it using system tools, however you may have better luck just downloading and installing yourself from http://pymssql.sourceforge.net/#download. The installation is fairly simple; run, as root: python2.4 setup.py install.
  • OpenLDAP 2.3 or later. You can check for this by looking for a #define of LDAP_OPT_X_TLS_CRLCHECK inside of ldap.h. If your system ldap.h has this symbol, you're up to date. If not, download the latest OpenLDAP from http://www.openldap.org/software/download/ and install it; make sure to specify --disable-slapd to skip building a server—we don't need it. (You might be able to install a later version using OS-supplied update tools as well; if so, make sure to install the development libraries. If the OpenLDAP server is packaged separately, there's no need to install it.)
  • PythonLDAP. Check this by running python2.4 -c 'import ldap'. If you get an error, you'll need to download and build it. You may need to edit its setup.cfg file to add the lib and include directories to the OpenLDAP installation if you put OpenLDAP in a non-standard area. (/usr/local is considered standard.)
  • EasyInstall. Check this by executing easy_install-2.4. You should get a brief message about how there were no urls, filenames, or requirements specified. If not, look for easy_install-2.4 somewhere on the system; it's usually installed in the same directory as the python executable. If it's still not available, you can try to install it using system tools (the package may be named "easyinstall" or "python-setuptools" or just "setuptools"). However, installation is trivial: simply download the file at http://peak.telecommunity.com/dist/ez_setup.py and, as root, execute it using python.
  • Active internet connection. The activation process will fetch additional dependent packages from the web, so you'll need to be online.

Activation Instructions

Once you've confirmed the prerequisites, follow these instructions to make the EDRN DMCC Application Server active:

  1. Extract the tar archive containing the EDRN DMCC Application Server to its final resting place on the filesystem, such as /usr/local or /opt. Let's call the full path of the extracted directory the $INSTALL_DIR for the remainder of these instructions.
  2. Change into the extracted ginger.fhcrc.org directory: cd $INSTALL_DIR.
  3. As root, run: python2.4 bootstrap.py.
  4. As root, run: python2.4 bin/buildout. This may take some time.
  5. As root, run: chown -R nobody:nobody $INSTALL_DIR.
  6. As root, copy the two files in $INSTALL_DIR/etc to /etc/rc.d/init.d. Edit those files and set the $INSTALL_DIR variable in each appropriately.
  7. As root, run /sbin/chkconfig --add edrn-dmcc-zeo.
  8. As root, run /sbin/chkconfig --add edrn-dmcc-zope.
  9. As root, run /sbin/service edrn-dmcc-zeo start.
  10. As root, run /sbin/service edrn-dmcc-zope start.

That's it! The server is now running and will be started each time the system boots up. However, it's not yet available to Apache HTTPD, which provides the front-end interface.

To link it up with Apache HTTPD, first edit (as root) /usr/local/httpd/conf/httpd.conf and append the following line to the end of the file:

ProxyPass /dmcc http://localhost:8889/VirtualHostBase/http/ginger.fhcrc.org:80/VirtualHostRoot/dmcc

Then, run (as root) /sbin/service httpd restart.

Now you're really done!

What's Actually Running?

The EDRN DMCC Application Server consists of the Apache HTTPD front end. Its job is to accept HTTP-based requests for web services. The "ProxyPass" line in the Apache HTTPD configuration file tells Apache that any requests to for the EDRN DMCC Application Server should be forwarded to the Zope application server running on port 8889. The Zope application server in turn contains the EDRN specific logic to provide services, such as the EDRN RDF Service. Zope, in turn, uses the Zeo database for persistence.

You can check on the status of the EDRN DMCC Zope Application Server by running:

/sbin/service edrn-dmcc-zope status

And to check on the Zeo database server:

/sbin/service edrn-dmcc-zeo status

In addition, in process listings you should see these four processes running, two for Zope, two for Zeo.

Another test you can run is to see if either Zope application and Zeo database servers are listening for connections:

/usr/bin/telnet localhost 8889
/usr/bin/telnet localhost 8890

Both commands should result in immediately accepted connections.


If you encounter any difficulty, if any issues arise, or if any of these instructions are unclear, please contact Sean Kelly, the maintainer of this base of code. You can reach Sean at:

MobileMe iChat

This software is provided under license; please see LICENSE.txt.