HISTORY - Set-up for Springboard development

19/04/2012:

Ignore the basic Centos set-up (and subsequent switch to X Windows desktop)…

Disable SELinux:

# vi /etc/selinux/config
...
SELINUX=permissive
...

Then, reboot and check

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   permissive
Mode from config file:          permissive
Policy version:                 24
Policy from config file:        targeted

Create jtadmin account:

# useradd jtadmin
# passwd jtadmin
...

Grant jtadmin full sudo access:

# visudo
...
jtadmin ALL=(ALL)       ALL
...

Need to install basic software (httpd already installed via yum):

Java: Download JDK and set-up…

# cd /usr/local
# chmod 755 jdk-6u31-linux-i586.bin 
# ./jdk-6u31-linux-i586.bin
...
# ln -s /usr/local/jdk1.6.0_31/ /usr/local/java

Ant: Download and set-up…

# tar -zxf apache-ant-1.8.3-bin.tar.gz
# ln -s /usr/local/apache-ant-1.8.3/ /usr/local/ant

Tomcat: Download and set-up…

# tar -zxf apache-tomcat-5.5.35.tar.gz
# chown -R jtadmin.jtadmin apache-tomcat-5.5.35/
# ln -s /usr/local/apache-tomcat-5.5.35/ /usr/local/tomcat

MySQL: Default version for Centos 6.2 is 5.1, but this has had issues with Hibernate and Springboard - so will try to install 5.0 manually for now. Ensure any other versions are uninstalled first…

# yum list mysql*
...
# rpm -ivh MySQL-server-5.0.96-1.glibc23.i386.rpm \
> MySQL-client-5.0.96-1.glibc23.i386.rpm \
> MySQL-shared-5.0.96-1.glibc23.i386.rpm

#/usr/bin/mysql_secure_installation
... (root/password)

MySQL is running as a service by default.

CVS:

# yum install cvs
...

NTP: Installed by default - but not running as a service…

# chkconfig --level 345 ntpd on
# chkconfig --list|grep ntp
ntpd           	0:off	1:off	2:off	3:on	4:on	5:on	6:off
ntpdate        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
# service ntpd start
Starting ntpd:                                             [  OK  ]

SAMBA:

# yum install samba samba-common samba-winbind
...
# cd /etc/samba/
# cp smb.conf smb.conf.000
# vi smb.conf
[global]
	workgroup-wiley.com
	security=USER

[centos6]
	path=/home/jtadmin
	guest ok=yes
	read only=no
	create mask=0644

# chkconfig --level 345 smb on
# chkconfig --level 345 nmb on
# service smb start
...
# service nmb start
...  

DON'T NEED nmb running - but do need to set-up smb user for jtadmin:

# smbpasswd -a jtadmin
...

# chkconfig --list|grep smb
smb            	0:off	1:off	2:on	3:on	4:on	5:on	6:off
# chkconfig --list|grep nmb
nmb            	0:off	1:off	2:off	3:off	4:off	5:off	6:off

Update jtadmin profile - then switch to jtadmin user:

$ vi .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

export JAVA_HOME=/usr/local/java
export ANT_HOME=/usr/local/ant
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$ANT_HOME/bin

Check as ~jtadmin…

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)
$ ant -version
Apache Ant(TM) version 1.8.3 compiled on February 26 2012

NOTE: Also need to disable firewall (iptables) which appears to be enabled by default.

# yum install system-config-firewall
...

Then disable the firewall via the installed GUI.

LATE NOTES:

Have disabled SELinux for now (though probably didn't need to - as the Apache issue below wasn't about SELinux).

Set-up ~jtadmin environment...

$ vi ~/springboard.env
. ~jtadmin/system.env
. ~jtadmin/user.env
$ chmod 755 springboard.env 

Add this script to bash profile…

$ vi ~/system.env
# Java (also appears in ~/.bash_profile)
#export JAVA_HOME=/usr/local/java
#export ANT_HOME=/usr/local/ant
#export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$ANT_HOME/bin
export JRE_HOME=$JAVA_HOME/jre

# Tomcat
export CATALINA_HOME=/usr/local/tomcat
export CATALINA_BASE=$CATALINA_HOME
export CATALINA_PID=$CATALINA_BASE/temp/catalina.pid
export CATALINA_OPTS='-Xms256m -Xmx256m -server
-Dspringboard.inst.name=local 
-Dspringboard.base.dir=/home/jtadmin/springboard/base 
-Dspringboard.data.dir=/home/jtadmin/springboard/data 
-Duser.language=en 
-Duser.country=GB 
-Dfile.encoding=UTF-8 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=8010 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false '

export JPDA_ADDRESS=8787
export JPDA_TRANSPORT=dt_socket
export SPRINGBOARD_DIST=http://fulcrum.cwsdev4.wiley.com:24000/userfiles/sprdist
export SPRINGBOARD_HOME=/home/jtadmin/springboard/base
export SPRINGBOARD_DATA=/home/jtadmin/springboard/data
export CVSSERVER=172.20.0.216
export DISABLE_UPDATES=0
export PS1='[sb:\W]\$ '

$ chmod 755 system.env

$ vi ~/user.env
export CVSROOT=:pserver:[email protected]:2401/cws_cvs
export DISABLE_UPDATES=1
export HOLDING=
$ chmod 755 user.env

Create basic directories, and check-out initial projects (Springboard + AFT)

$ mkdir ~/projects
$ mkdir ~/springboard

$ vi ~/build.properties
# build properties
jboss.home=${env.SPRINGBOARD_HOME}
dev.root.dir=/home/jtadmin/projects
static-web.dir=${env.SPRINGBOARD_HOME}/htdocs
local.httpd.port=80

#libs.base.dir=/home/jtadmin/springboard/base/sbcore/conf/lib
#project.libs.dir=/home/jtadmin/tomcat/common/lib
#springboard.generate.project=SpringboardDist
#disable.generate=true
#build.lib.jars=*.jar
#build.project.jars=*.jar

build.override.type=aw
junit.outputtofile=yes
junit-report.dir=/home/jtadmin/springboard/data/htdocs/userfiles/reports
junit.format=xml
javac.source.version=1.6
javac.target.version=1.6

$ vi /usr/local/apache-tomcat-5.5.35/shared/classes/springboard.properties
...
$ vi /usr/local/apache-tomcat-5.5.35/shared/classes/log4j.properties
...

$ sudo cp ~/Downloads/mod_jk.so /etc/httpd/modules/
$ sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.000
$ sudo cp ~/Downloads/httpd.conf /etc/httpd/conf/

$ cvs checkout build
$ cvs checkout Fulcrum
$ cvs checkout libs
$ cvs checkout Springboard
$ cvs checkout SpringboardCommon
$ cvs checkout SpringboardWebApp

Will work thorough a copy of the clean script…

$ cp projects/Springboard/etc/scripts/clean_spr.sh ~

Run database scripts…

$ mysql --default-character-set=utf8 -u root -ppassword < /home/jtadmin/projects/Springboard/etc/db/Springboard_MySQL_InitialDB.sql
$ mysql springboard --default-character-set=utf8 -u root -ppassword < /home/jtadmin/projects/Springboard/etc/db/Springboard_MySQL_CreateDB.sql
$ mysql springboard --default-character-set=utf8 -u root -ppassword < /home/jtadmin/projects/Springboard/etc/db/Springboard_CreateRefData.sql
$ mysql springboard --default-character-set=utf8 -u root -ppassword < /home/jtadmin/projects/Springboard/etc/db/uberUser.sql
$ mysql springboard --default-character-set=utf8 -u root -ppassword < /home/jtadmin/projects/Springboard/etc/db/Springboard_countries_data.sql

All OK - but note…

# Should not include database in use for first script
# Also have issue with nagios user, could update SQL to include
# GRANT USAGE ON *.* TO 'username'@'localhost';
# before DROP USER
# 
# Script also expects user springboard to already exist...
# grant all privileges on *.* to "springboard"@"%" identified by "password";

Ensure correct folders and symlinks exist…

$ mkdir --parents $SPRINGBOARD_HOME/htdocs
$ mkdir --parents $SPRINGBOARD_HOME/conf/classes
$ mkdir --parents $SPRINGBOARD_HOME/conf/httpd/rel
$ mkdir --parents $SPRINGBOARD_HOME/extra/files
$ mkdir --parents $SPRINGBOARD_HOME/biofpr/jsp
$ mkdir --parents $SPRINGBOARD_DATA/htdocs/userfiles

$ ln -s /var/run ~jtadmin/springboard/run
$ ln -s /var/log/httpd ~jtadmin/springboard/logs
$ ln -s /usr/lib/httpd/modules ~jtadmin/springboard/modules
$ ln -s /etc/httpd/conf ~jtadmin/springboard/conf
$ ln -s $SPRINGBOARD_HOME/sbcore/common $SPRINGBOARD_HOME/common
$ ln -s $SPRINGBOARD_HOME/sbcore/fulcrum $SPRINGBOARD_HOME/fulcrum
$ ln -s $SPRINGBOARD_HOME/sbcore/htdocs/common  $SPRINGBOARD_HOME/htdocs/common
$ ln -s $SPRINGBOARD_HOME/sbcore/htdocs/fulcrum $SPRINGBOARD_HOME/htdocs/fulcrum
$ ln -s $SPRINGBOARD_HOME/sbcore/htdocs/fckeditor $SPRINGBOARD_HOME/htdocs/fckeditor
$ ln -s $SPRINGBOARD_HOME/sbcore/conf/httpd/httpd-common-rewrites.conf  $SPRINGBOARD_HOME/conf/httpd/httpd-common-rewrites.conf 
$ ln -s $SPRINGBOARD_HOME/fulcrum/jsp $SPRINGBOARD_HOME/sbcore/webapps/SpringboardWebApp/WEB-INF/fulcrum
$ ln -s $SPRINGBOARD_HOME/biofpr/jsp $SPRINGBOARD_HOME/sbcore/webapps/SpringboardWebApp/WEB-INF/biofpr
$ ln -s $SPRINGBOARD_DATA/htdocs/userfiles $SPRINGBOARD_HOME/sbcore/webapps/SpringboardWebApp/userfiles

Add Solr…

$ cd $SPRINGBOARD_HOME 
$ curl -O http://fulcrum.cwsdev4.wiley.com:24000/userfiles/sprdist/apache-solr-3.3.0.war
...
$ ln -s $SPRINGBOARD_HOME/apache-solr-3.3.0.war $SPRINGBOARD_HOME/apache-solr.war

Build springboard-all

Apache conf issues?? Some modules missing on Centos 6 so removed from config…

#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so

Also log folder needs changing as default config runs Apache as jtadmin…

# chown jtadmin.jtadmin /var/log/httpd

Needs cronolog install/set-up… (install rpmforge repository)

$ curl -LO http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# rpm -K ~jtadmin/Downloads/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
# rpm -ivh ~jtadmin/Downloads/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

# yum install cronolog
...

Springboard expects a different cronolog location…

# ln -s /usr/sbin/cronolog /usr/local/bin/cronolog

Also the previous PID file location stopped Apache restarting properly - have changed this to…

PidFile /var/run/httpd/httpd.pid

Start Apache…

$ sudo service httpd restart

Tomcat config:

$ cp /usr/local/tomcat/conf/catalina.properties /usr/local/tomcat/conf/catalina.properties.000
$ vi /usr/local/tomcat/conf/catalina.properties
...
shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar,/home/jtadmin/springboard/base/sbcore/conf/classes,/home/jtadmin/springboard/base/conf/classes,/home/jtadmin/springboard/base/sbcore/conf/lib/*.jar,/home/jtadmin/springboard/base/conf/lib/*.jar
...

$ cp /usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/server.xml.000
$ vi /usr/local/tomcat/conf/server.xml
...
<Server port="8021" shutdown="SHUTDOWN">
...
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" emptySessionPath="true"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="UTF-8" />
...
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="node01">
...
      <Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="false"
       xmlValidation="false" xmlNamespaceAware="false">
...

$ cp /usr/local/tomcat/conf/tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xml.000
$ vi /usr/local/tomcat/conf/tomcat-users.xml
...
<tomcat-users>
  <role rolename="manager"/>
  <role rolename="tomcat"/>
  <role rolename="admin"/>

  <user name="tomcat" password="tomcat" roles="manager,tomcat,admin" />
</tomcat-users>

Context config appears to have been deployed in the build…

$ ls -l /usr/local/tomcat/conf/Catalina/localhost/
total 16
-rw-rw-r--. 1 jtadmin jtadmin  271 Apr 20 09:05 apache-solr.xml
-rw-------. 1 jtadmin jtadmin 1148 Jan  6 19:21 host-manager.xml
-rw-------. 1 jtadmin jtadmin 1303 Jan  6 19:21 manager.xml
-rw-rw-r--. 1 jtadmin jtadmin   98 Apr 20 09:05 SpringboardWebApp.xml

Needs local host name set-up

# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 centos6.local fulcrum.local

$ /usr/local/tomcat/bin/startup.sh

Seems to work…

Try project (AFT)…

$ ./wbuild.sh aft checkout
...
$ ./wbuild.sh aft deploy
...

restart…

Cool!

TODO:

- SAMBA! - Scripted set-up?