-- 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

  • Load mod_python
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.

Install OpenLayers library

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
Edit | Attach | Watch | Print version | History: r6 < r5 < r4 < r3 < r2 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r6 - 2008-10-14 - MatveySapunov
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    LHCb All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback