
I. Introduction

The purpose of this document is to contain the full set of
instructions and commands necessary to configure the NITRC production
environment from a base ROCKS install (Rocks release 4.1 Fuji).


II. Package Notes

NITRC is based upon GForge version 4.5.11 and currently requires:
 - AWStats 6.6 or later
 - ClamAV 0.91 or later
 - IPC Run for Perl 0.78
 - JPGraph 1.13
 - mod-auth-gforge 0.5.9.3
 - MySQL 4.1.20
 - php 4.3.9
 - PostgreSQL server 7.4.8 
 - Subversion 1.2.1
 - Viewvc 1.0.0 


III. Pre-GForge Installation

# Move /var to /export/var to use larger disk
/etc/init.d/httpd stop
/etc/init.d/postfix stop
/etc/init.d/postgresql stop
/etc/init.d/mysql stop
/etc/init.d/ganglia-restore-rrds stop
/etc/init.d/nfs stop
cp -a /var /export/var
mv /var /varold
ln -s /export/var /var
rm -Rf /varold  # NOTE: MAY NEED REBOOT TO REMOVE ALL OF VAROLD
/etc/init.d/nfs start
/etc/init.d/ganglia-restore-rrds start
/etc/init.d/mysql start
/etc/init.d/postgresql start
/etc/init.d/postfix start
/etc/init.d/httpd start

# Create Users
adduser gforge
adduser clamav

# ClamAV
tar -zxf clamav-0.91.2.tar.gz 
cd clamav-0.91.2
./configure --disable-zlib-vcheck
make install

# Postgresql
rpm -i postgresql-7.4.8-1.RHEL4.1.i386.rpm postgresql-libs-7.4.8-1.RHEL4.1.i386.rpm postgresql-server-7.4.8-1.RHEL4.1.i386.rpm
sudo -u postgres initdb -D /var/lib/pgsql/data
# NOTE: Copy /var/lib/pgsql/data/pg_hba.conf into correct location (see V)
/sbin/chkconfig postgresql on
/etc/init.d/postgresql start

# php-devel and php-pgsql
rpm -i php-devel-4.3.9-3.12.i386.rpm php-pgsql-4.3.9-3.12.i386.rpm

# mailman
yum install mailman
# NOTE: Copy /etc/mailman/mm_cfg.py to the correct location (see V)
/usr/lib/mailman/bin/newlist mailman
# NOTE: Copy /etc/aliases to the correct location (see V)
newaliases
/usr/lib/mailman/bin/config_list -i /var/lib/mailman/data/sitelist.cfg mailman
/sbin/chkconfig mailman on
/etc/init.d/mailman start

# IPC RUN
tar -xzf IPC-Run-0.78.tar.gz
cd IPC-Run-0.78
perl Makefile.PL
make install

# mod_dav_svn and subversion
/etc/init.d/httpd stop
yum install mod_dav_svn subversion
rpm -U mod_dav_svn-1.2.1-0.1.2.el4.rf.i386.rpm subversion-1.2.1-0.1.2.el4.rf.i386.rpm
/etc/init.d/httpd start

# fonts-xorg-truetype (needed for JPGraph)
rpm -i fonts-xorg-truetype-6.8.2-1.EL.noarch.rpm

# eAccelerator
yum install libtool
tar -zxf eaccelerator-0.9.5.tar.gz
cd eaccelerator-0.9.5
export PHP_PREFIX="/usr"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared \
  --with-php-config=$PHP_PREFIX/bin/php-config
make
make install
cp eaccelerator.ini /etc/php.d
mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator
/etc/init.d/httpd restart

# jpgraph-1.13
tar -zxf jpgraph-1.13.tar.gz
cd jpgraph-1.13
mv src /usr/lib/jpgraph
cd /usr/lib/jpgraph
ln -s . src
# NOTE: Copy /usr/lib/jpgraph/jpgraph.php (see V)

# Install viewvc
tar -zxf viewvc-1.0.0.tar.gz
cd viewvc-1.0.0
./viewvc-install
# INTERACTIVE RESPONSES: (use the defaults)
#   Installation path [/usr/local/viewvc-1.0.0]: <ENTER>
#   DESTDIR path: <ENTER>
ln -s /usr/local/viewvc-1.0.0 /opt/viewvc
# NOTE: Copy /opt/viewvc/viewvc.conf (see V)

# Install AWStats
tar -zxf awstats-6.6.tar.gz
mv awstats-6.6 /usr/local/awstats
cd /usr/local/awstats/tools
./awstats_configure.pl
# INTERACTIVE RESPONSES:
# - Config file path:   /etc/httpd/conf/httpd.conf
# - New AWStats config:  y
# - site name: www.nitrc.org
# - Config directory path: <ENTER>
mkdir /var/lib/awstats
# NOTE: Copy /etc/awstats/awstats.www.nitrc.org.conf (see V)

# Install HTTPS certificate and HTTP GForge Conf
# NOTE: Copy /etc/httpd/conf/ssl.crt/www.nitrc.org.crt
# NOTE: Copy /etc/httpd/conf/ssl.csr/www.nitrc.org.csr
# NOTE: Copy /etc/httpd/conf/ssl.key/www.nitrc.org.key

# Install cron job
# NOTE: Copy /var/spool/cron/root

# Install backup scripts
# NOTE: Copy /root/backupscripts/*
# NOTE: Copy /opt/BIRN/sbin/backup.sh


IV. GForge Installation

# Create user gforge/PASSWORD-HERE for postgres
sudo -u postgres createuser -A -d -E -P gforge
# INTERACTIVE: entered password "PASSWORD-HERE"
sudo -u postgres createlang plpgsql template1

# Untar original gforge
tar -zxf gforge-4.5.11.tar.gz

# Create database gforge
cd gforge-4.5.11
sudo -u gforge createdb gforge
psql -U gforge gforge < db/gforge.sql > import.log
rm import.log

# Install gforge 4.5.11
mkdir /export/home/groups
touch /opt/viewvc/bin/cgi/viewcvs.cgi
IP=`ifconfig eth1 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
./gforge-install.sh www.yourdomain.org apache apache $IP
rm /opt/viewvc/bin/cgi/viewcvs.cgi
# NOTE: Copy /etc/php.ini (see V)
ln -s /etc/gforge/httpd.conf /etc/httpd/conf.d/gforge.conf
# NOTE: Copy /etc/gforge/viewcvs.cgi (see V)
chmod 755 /etc/gforge/viewcvs.cgi
# NOTE: Copy /etc/gforge/local.inc (see V)

# Fix a series of symbolic links to gforge plugins
rm /etc/gforge/cvsweb
ln -s /usr/lib/gforge/plugins/scmcvs/cgi-bin/cvsweb /etc/gforge/cvsweb
chmod 755 /usr/lib/gforge/plugins/scmcvs/cgi-bin/cvsweb
rm -Rf /etc/gforge/plugins/cvstracker
ln -s /usr/lib/gforge/plugins/cvstracker/etc/plugins/cvstracker /etc/gforge/plugins/cvstracker
rm -Rf /etc/gforge/plugins/scmcvs
ln -s /usr/lib/gforge/plugins/scmcvs/etc/plugins/scmcvs /etc/gforge/plugins/scmcvs
rm -Rf /etc/gforge/plugins/scmsvn
ln -s /usr/lib/gforge/plugins/scmsvn/etc/plugins/scmsvn /etc/gforge/plugins/scmsvn

# Install gforge wiki plugin
tar -zxf wiki-0.93.tar.gz
mv wiki /usr/lib/gforge/plugins/wiki
ln -s /usr/lib/gforge/plugins/wiki/ /usr/lib/gforge/www/plugins/wiki
psql -U gforge gforge < /usr/lib/gforge/plugins/wiki/db/wiki-init.sql

# Update httpd config
# NOTE: Copy /etc/httpd/conf/httpd.conf (see V)

# Install mod_auth_gforge
rpm -i libapache2-mod-auth-gforge-0.5.9.3-CENTOS41.1.i386.rpm
/etc/init.d/httpd restart

# Install latest NITRC tarball
tar -C /usr/lib/gforge -xzf nitrc_v1_0_3-2.tar.gz

# Firewall and yum config
# NOTE: Copy /etc/sysconfig/iptables (see V)
# NOTE: Copy /opt/BIRN/sbin/create-iptables-config.pl
# NOTE: Copy /etc/yum.conf 

# Postfix config
# NOTE: Copy /etc/postfix/mail.cf
# NOTE: Copy /etc/postfix/sender-canonical
/etc/init.d/postfix restart

V. Config File Installation

# Assumption that NITRCSRC is exported to ~/NITRCSRC
# cd ~/NITRCSRC/installation/config
# cp -rv * /


VI. Data Migration

## TO CREATE THE DATA DUMP
sudo -u postgres pg_dumpall > db.out
tar -C / -zcf gforge-data.tar.gz /var/lib/awstats/ /var/lib/gforge/ /var/lib/mailman/

## TO RESTORE THE DATA DUMP
/etc/init.d/httpd stop
/etc/init.d/mailman stop
tar -C / -zxf gforge-data.tar.gz
/etc/init.d/postgresql stop
rm -Rf /var/lib/pgsql/data
sudo -u postgres initdb -D /var/lib/pgsql/data
# NOTE: Copy /var/lib/pgsql/data/pg_hba.conf into correct location (see V)
/etc/init.d/postgresql start
sudo -u postgres createdb postgres
sudo -u postgres psql -f db.out
/etc/init.d/mailman start
/etc/init.d/httpd start

# After DB Update, restore users and mail
PHP="/usr/bin/php4 -d include_path=.:/usr/lib/gforge:/usr/lib/gforge/www/include:/etc/gforge/"
GFORGE="/usr/lib/gforge"
$GFORGE/cronjobs/cvs-cron/usergroup.php
$GFORGE/cronjobs/cvs-cron/ssh_create.php
$GFORGE/cronjobs/mail/mailaliases.php
/etc/init.d/httpd restart

VII. Todo

 * Add htaccess to awstats
 * Check ViewVC (chmod 755 /home/rbuccigrossi)
 * Restore crontab after update
 * Add rpm and gz packages into CVS
 * Add "cd" commands to let the scripts above run into each other




