Granting davidf rights to manage software and services:
(root)$ visudo
and adding:
davidf ALL = SOFTWARE, SERVICES
Preparing for source install:
(root)$ cd /localstore
(root)$ mkdir -p usr/local
(root)$ mv /usr/local/src usr/local
(root)$ cd /usr/local
(root)$ ln -s /localstore/usr/local/src .
(root)$ cd /usr/local/src/
(root)$ mkdir hisparc
(root)$ chown davidf.hisparc hisparc/
$ chmod g+w hisparc/
In /etc/ld.so.conf.d new file usrlocal.conf, to let ldconfig find libraries of locally installed software:
/usr/local/lib
Python:
$ cd /usr/local/src/hisparc
$ wget http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz
$ tar xvzf Python-2.6.4.tgz
$ cd Python-2.6.4
$ ./configure --enable-shared
$ make
(root)$ make install
Then, run:
(root)$ ldconfig
Now, the python libraries are registered.
From egg:
$ cd /usr/local/src/hisparc
$ wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086
(root)$ sh setuptools-0.6c11-py2.6.egg
Install apache development libraries:
$ sudo yum install httpd-devel
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
httpd-devel i386 2.2.3-31.sl5.2 sl-security 147 k
httpd-devel x86_64 2.2.3-31.sl5.2 sl-security 147 k
Installing for dependencies:
apr x86_64 1.2.7-11.el5_3.1 sl-security 118 k
apr-devel x86_64 1.2.7-11.el5_3.1 sl-security 237 k
apr-util x86_64 1.2.7-7.el5_3.2 sl-security 74 k
apr-util-devel x86_64 1.2.7-7.el5_3.2 sl-security 53 k
httpd x86_64 2.2.3-31.sl5.2 sl-security 1.2 M
Change configuration in /etc/httpd/conf/httpd.conf. Patch:
--- httpd.conf.orig 2009-12-04 14:35:39.000000000 +0100
+++ httpd.conf 2009-12-04 14:35:50.000000000 +0100
@@ -228,8 +228,8 @@
# when the value of (unsigned)Group is above 60000;
# don't use Group #-1 on these systems!
#
-User apache
-Group apache
+User www
+Group www
### Section 2: 'Main' server configuration
#
Enabling httpd on startup:
$ sudo /sbin/chkconfig --add httpd
$ sudo /sbin/chkconfig --levels 35 httpd on
Starting httpd now:
$ sudo /sbin/service httpd start
For mod_wsgi:
$ cd /usr/local/src/hisparc
$ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.1.tar.gz
$ tar xvzf mod_wsgi-3.1.tar.gz
$ cd mod_wsgi-3.1
$ ./configure
$ make
(root)$ make install
Change configuration in /etc/httpd/conf/httpd.conf. Patch:
--- httpd.conf.orig 2009-12-04 15:19:01.000000000 +0100
+++ httpd.conf 2009-12-04 15:34:30.000000000 +0100
@@ -197,6 +197,7 @@
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
+LoadModule wsgi_module modules/mod_wsgi.so
#
# The following modules are not loaded by default:
Restarting apache:
$ sudo /sbin/service httpd restart
Install bazaar from source:
$ cd /usr/local/src/hisparc
$ wget http://launchpad.net/bzr/2.0/2.0.2/+download/bzr-2.0.2.tar.gz
$ tar xvzf bzr-2.0.2.tar.gz
$ cd bzr-2.0.2
(root)$ python setup.py install
Paramiko supports ssh2 for python, which is needed to do a checkout of our application’s sources over sftp. Install using easy_install:
(root)$ easy_install paramiko
This will automatically download, compile and install dependencies (pycrypto).
The public database blablabla. It is a pure python implementation under complete version control.
The public database application uses PyTables and the underlying HDF5 library to read binary data files. PyTables depends heavily on NumPy.:
(root)$ easy_install numpy
This gives an error:
/tmp/easy_install-JePGOA/numpy-1.4.0rc1/numpy/distutils/misc_util.py:248: RuntimeWarning: Parent module 'numpy.distutils' not found while handling absolute import
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/usr/local/lib/python2.6/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "/tmp/easy_install-JePGOA/numpy-1.4.0rc1/numpy/distutils/misc_util.py", line 248, in clean_up_temporary_directory
ImportError: No module named numpy.distutils
Error in sys.exitfunc:
Traceback (most recent call last):
File "/usr/local/lib/python2.6/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "/tmp/easy_install-JePGOA/numpy-1.4.0rc1/numpy/distutils/misc_util.py", line 248, in clean_up_temporary_directory
ImportError: No module named numpy.distutils
So, rerun the command, this time without errors:
(root)$ easy_install numpy
Now:
$ cd /usr/local/src/hisparc
$ wget http://www.hdfgroup.org/ftp/HDF5/prev-releases/hdf5-1.8.3/src/hdf5-1.8.3.tar.gz
$ tar xvzf hdf5-1.8.3.tar.gz
$ cd hdf5-1.8.3
$ ./configure --prefix=/usr/local
$ make
(root)$ make install
(root)$ ldconfig
And, finally, install PyTables itself:
(root)$ easy_install tables
The public databases graphing capabilities come from Enthought Chaco, a python plotting library. It needs swig to build. Install with:
$ wget http://prdownloads.sourceforge.net/swig/swig-1.3.40.tar.gz
$ tar xvzf swig-1.3.40.tar.gz
$ cd swig-1.3.40
$ ./configure
$ make
(root)$ make install
It also needs a GUI toolkit, like wxPython:
$ wget http://downloads.sourceforge.net/wxpython/wxPython-src-2.8.10.1.tar.bz2
$ tar xvjf wxPython-src-2.8.10.1.tar.bz2
$ cd wxPython-src-2.8.10.1
$ ./configure --enable-unicode --with-opengl
$ make && make -C contrib/src/gizmos && make -C contrib/src/stc
(root)$ make install && make -C contrib/src/gizmos install && make -C contrib/src/stc install
$ cd wxPython/src/gtk
$ patch < /usr/local/src/hisparc/gdi.patch
$ cd ../..
(root)$ python setup.py install
The contents of the aforementioned gdi.patch is:
--- wxPython/src/gtk/_gdi_wrap.cpp.orig 2009-08-08 16:26:48.000000000 +0200
+++ wxPython/src/gtk/_gdi_wrap.cpp 2009-08-08 16:32:50.000000000 +0200
@@ -4195,6 +4195,10 @@
virtual wxGraphicsBrush CreateRadialGradientBrush(wxDouble , wxDouble , wxDouble , wxDouble , wxDouble ,
const wxColour &, const wxColour &) { return wxNullGraphicsBrush; }
virtual wxGraphicsFont CreateFont( const wxFont & , const wxColour & ) { return wxNullGraphicsFont; }
+
+ // patch required as explained in
+ // http://groups.google.com/group/wxPython-users/browse_thread/thread/129ba27e2f868c3c?pli=1
+ wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap ) const { return wxNullGraphicsBitmap; }
};
We currently run Chaco straight out of the subversion repository. Once a new release has been finalized, we might go back to simply install from PyPI. Now, however, we have to issue:
(root)$ easy_install etsprojecttools
$ ets co Chaco
(root)$ ets install Chaco_3.2.1
In summary:
Here we go:
$ cd /usr/local/src/hisparc
$ bzr co sftp://admhispa@login.nikhef.nl/project/hisparc/bzr/publicdb/trunk publicdb
(root)$ cd /var/www
(root)$ mkdir django_publicdb
(root)$ chown davidf.hisparc django_publicdb/
$ ln -s /usr/local/src/hisparc/publicdb/django_publicdb/* .
$ cp --remove-destination /usr/local/src/hisparc/publicdb/django_publicdb/settings.py .
$ cp --remove-destination /usr/local/src/hisparc/publicdb/django_publicdb/manage.py .
$ cp /usr/local/src/hisparc/publicdb/examples/django.wsgi .
And edit django.wsgi so that it contains the right system path:
sys.path.append('/var/www')
Then, added the public database to the Apache configuration:
(root)$ cd /etc/httpd/conf.d/
(root)$ touch hisparc.conf
(root)$ chown davidf.hisparc hisparc.conf
(root)$ chmod g+w hisparc.conf
And edit hisparc.conf to contain:
RedirectMatch ^/$ http://data.hisparc.nl/django/
WSGIScriptAlias /django /var/www/django_publicdb/django.wsgi
WSGIPythonEggs /tmp
Alias /django/media /usr/local/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/contrib/admin/media
Reload Apache configuration:
$ sudo /sbin/service httpd reload
South.
mkdir /var/www/media
chown www.www media
ln -s /var/www/django_publicdb/static media
cd /usr/local/bin
cp /usr/local/src/hisparc/publicdb/examples/django-cron.py hisparc-update
# Run a daily check for new events, but it _must_ be a few hours after
# midnight, so don't place this script in cron.daily, just to be sure.
0 4 * * * root /usr/local/bin/hisparc-update
python PIL
django cron script on pique, changed a bit?