--
AdriaCasajus - 12 Feb 2008
Apache + mod_python + Pylons + DIRAC
Required packages
- httpd-devel
- httpd
- mod_ssl
- gcc
- gcc-c++
- zlib
- zlib-devel
- unzip
Prepare DIRAC
Compile python if it's not there
For Python2.5
<DIRACROOT>/external/sqlite-3.5.4/dirac-make
<DIRACROOT>/external/Python-2.5/dirac-make
<DIRACROOT>/contrib/pyGSI/dirac-make
For Python2.4
<DIRACROOT>/external/Python-2.4.4/dirac-make
<DIRACROOT>/contrib/pyGSI/dirac-make
Install Pylons
<DIRACROOT>/<DIRACARCH>/bin/easy_install Pylons==0.9.6.2
If easy_install is absent you have to download file ez_setup from
http://peak.telecommunity.com/dist/ez_setup.py
(temporary link), and execute it by hand
<DIRACROOT>/<DIRACARCH>/bin/python ez_setup.py
Repeat this step till Pylons have been installed
Grid Requirements
In order to only allow valid certificates apache needs a CA directory (with CAs and CRLs updated periodically) and a certificate.
Setting up Apache
Install mod_python
<DIRACROOT>/external/mod_python/dirac-make
cp <DIRACROOT>/DIRAC/Interfaces/Web/wgsi.py <DIRACROOT>/<DIRACARCH>/lib/python<PYTHONVERSION>/site-packages/mod_python
Prepare DIRAC web root
- Create the web root directory
mkdir -p /opt/dirac/webRoot/
- Create the index.html file (vi /opt/dirac/webRoot/index.html)
<html>
<head>
<META http-equiv="refresh" content="0; URL=DIRAC">
</head>
</html>
- Create a link to the DIRAC web root
ln -s <DIRACROOT>/DIRAC/Interfaces/Web/ /opt/dirac/webRoot/DIRAC
Configure Apache
Under SLC4 apache configuration file is
/etc/httpd/conf/httpd.conf
LoadModule python_module modules/mod_python.so
- Set the desired directory as the Apache document root
DocumentRoot "/opt/dirac/webRoot"
- Define mod_python as the handler for the DIRAC web directory
<Directory "/opt/dirac/webRoot/DIRAC">
SetHandler mod_python
PythonHandler mod_python.wsgi
PythonPath "['/opt/dirac/DIRAC3/DIRAC/Interfaces/Web'] + sys.path"
PythonOption wsgi.application startup::app
PythonOption SCRIPT_NAME /DIRAC
</Directory>
Configuring mod_ssl
Under SLC4 mod_ssl configuration file is
/etc/httpd/conf.d/ssl.conf and it has to have defined the following settings:
- SSLCertificateFile /pathto/certfile
- SSLCertificateKeyFile /pathto/keyfile
- SSLCACertificatePath /etc/grid-security/certificates
- SSLCARevocationPath /etc/grid-security/certificates
- SSLVerifyClient require
- SSLVerifyDepth 10
- SSLOptions +StdEnvVars
libexpat problem
There could be a problems caused due to mismatches in the version of the "expat" library embedded into Python and that linked into Apache. A sign of such problem is a string appears in Apache error log like following:
[notice] child pid 3238 exit signal Segmentation fault (11)
To make sure that this is the case, try to make the simple tests:
[root@volhcb11 dirac]# ldd /usr/sbin/httpd | grep expat
libexpat.so.0 => /usr/lib64/libexpat.so.0 (0x0000002a95dba000)
[root@volhcb11 dirac]# strings /usr/lib64/libexpat.so.0 | grep expat_
expat_1.95.8
[root@volhcb11 dirac]# <DIRACROOT>/<DIRACARCH>/bin/python
Python 2.4.4 (#1, Sep 30 2008, 21:08:00)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyexpat
>>> pyexpat.version_info
(1, 95, 7)
As a temporary solution try to install appropriate version of the libexpat in to the system.
In order to setup the DIRAC
SiteMap a
OpenLayers library have to be installed on the machine. Since the library tree is not in CVS it should be downloaded from the official site of the project.
cd <DIRACROOT>/DIRAC/Interfaces/Web/dirac/public
wget http://openlayers.org/download/OpenLayers-2.6.tar.gz
tar xzvf OpenLayers-2.6.tar.gz