## Preliminary Notes I tested SpaceWalk on a 64-bit CentOS 5.5 system as the server and a 32-bit CentOS 5.4 system as the client. ## Pre-Flight ### Some Pre-requisites rpm -ivh http://spacewalk.redhat.com/yum/1.3/RHEL/5/x86_64/spacewalk-client-repo-1.3-1.el5.noarch.rpm rpm -ivh http://spacewalk.redhat.com/yum/1.3/RHEL/5/x86_64/spacewalk-repo-1.3-1.el5.noarch.rpm wget -P /etc/yum.repos.d http://jpackage.org/jpackage.repo yum -y install bc glibc libaio httpd-devel tomcat5-webapps tomcat5-admin-webapps yum -y install rlwrap --enablerepo=epel ### Import the RedHat GPG Key wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release http://www.redhat.com/security/37017186.txt ### Install and Configure Oracle XE You'll need [Oracle XE](http://www.oracle.com/technetwork/database/express-edition/downloads/102xelinsoft-102048.html) and the [InstantClient](http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html). Oracle thankfully provides [a 32-bit version of InstantClient](http://www.oracle.com/technetwork/topics/linuxsoft-082809.html) as well. * XE has 32-bit installers * I used `oracle-xe-univ-10.2.0.1-1.0.i386.rpm` * InstantClient has 32 and 64-bit installers * I installed `oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm` and `oracle-instantclient11.2-sqlplus-11.2.0.2.0.x86_64.rpm` Then execute `/etc/init.d/oracle-xe configure`. I used defaults (port 8080 for Oracle Application Express, port 1521 for the database listener.) You can now go to `http://127.0.0.1:8080/apex` to access the database; use `system` for the username and the password you specified at install. ### Errors with `sqlplus` **Please note** that `sqlplus` is `sqlplus64` on (drumroll) 64-bit systems. This being said, you'll get the following error when you try connecting to the DB via a terminal: [root@support spacewalk]# sqlplus64 'sys/password@//localhost/XE as sysdba' sqlplus64: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory The issue is that you need to add `libsqlplus.so` to PATH: [root@support spacewalk]# updatedb [root@support spacewalk]# locate libsqlplus.so /usr/lib/oracle/11.2/client64/lib/libsqlplus.so /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/lib/libsqlplus.so [root@support ~]# # Add the above to PATH [root@support ~]# export PATH="${PATH}:/usr/lib/oracle/11.2/client64/bin" [root@support ~]# ORACLE_HOME=/usr/lib/oracle/11.2 [root@support ~]# export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib Now retry the connection. It should work. ### Add the SpaceWalk user # sqlplus 'sys/YOUR_PASSWORD@//localhost/XE as sysdba' SQL> create user spacewalk identified by spacewalk default tablespace users; SQL> grant dba to spacewalk; SQL> quit Test this; you should get a login. sqlplus spacewalk/spacewalk@//localhost/XE ### Increase the number of simultaneous connections to the DB The Oracle XE installation guide has [an explanation of why this is necessary](https://fedorahosted.org/spacewalk/wiki/OracleXeSetup). SQL> alter system set processes = 400 scope=spfile; SQL> alter system set "_optimizer_filter_pred_pullup"=false scope=spfile; SQL> alter system set "_optimizer_cost_based_transformation"=off scope=spfile; SQL> quit Restart the Oracle XE service by issuing `/sbin/service oracle-xe restart`. If you get any errors, see the installation guide linked to above. ### Add the Oracle Service Definition Add this to `/etc/tnsnames.ora` ```lisp XE =     (DESCRIPTION =        (ADDRESS_LIST =           (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))        )        (CONNECT_DATA =           (SERVICE_NAME = xe)        )     ) ``` ## Install and Verify Tomcat If you think the installation's going peachy right now, you're wrong. ### Install the `mod_jk` module Apache needs to be configured with the `mod_jk` module. `mod_jk` is available from [the `jpackage-rhel` repo](http://jpackage.org/jpackage.repo). *However*, version 2.0 of `mod_jk` will not work with version 2.2 of Apache. Yay OSS! This means that it will need to be compiled. I grabbed [version 1.2.31](http://apache.mirrors.hoobly.com/tomcat/tomcat-connectors/jk/source/jk-1.2.31/tomcat-connectors-1.2.31-src.tar.gz) and compiled it. Keep in mind that you need to do this with `./configure --with-apxs=/usr/sbin/apxs` else it will complain about not finding "apache" or "netscape". Compilation will install `mod_jk` in `/usr/lib64/httpd/modules/mod_jk.so`. I've also [archived the 32 and 64-bit versions](http://support.eng.uiowa.edu/software/archive/mod_jk22/). Now add this to `/etc/httpd/conf/httpd.conf` and restart Apache. LoadModule jk_module modules/mod_jk.so ### Modifying Tomcat's Default Port Consider Tomcat's default ports: | Port | Purpose | |------|----------------------------------------------------------------------------------| | 8005 | "Shutdown" port | | 8007 | Replies to [AJP](http://en.wikipedia.org/wiki/Apache_JServ_Protocol) 12 requests | | 8009 | Replies to AJP 13 requests (SpaceWalk needs this) | | 8080 | Standard HTTP connector | But we configured port 8080 for the Oracle XE database! If you tailed the output of `/var/log/tomcat5/catalina.out`, you'll see a "8080 already in use" message (sort of). To change this port to something like 8081, edit `/etc/tomcat5/server.xml`, search for 8080 and change it: >> Removing Oracle" && sleep 2 service oracle-xe stop rpm -e oracle-instantclient11.2-basic-11.2.0.2.0.$ARCH --nodeps rpm -e oracle-instantclient11.2-sqlplus-11.2.0.2.0.$ARCH --nodeps rpm -e oracle-xe-univ-10.2.0.1-1.0.i386 --nodeps rm -rf /usr/lib/oracle rm -rf /var/tmp/.oracle rm -rf /root/oradiag_root/ rm -rf /etc/tnsnames.ora rm -rf /etc/sysconfig/oracle-xe rm -rf /etc/ld.so.conf.d/oracle* echo "" > /etc/oratab userdel oracle groupdel dba echo -e ">>> Stopping the Spacewalk Service" && sleep 2 /usr/sbin/spacewalk-service stop echo -e ">>> Removing Spacewalk" && sleep 2 rpm -e spacewalk-repo rpm -e spacewalk-client-repo yum -y remove *spacewalk* jabberd *oracle* rm -rf /var/www/html/pub rm -rf /root/ssl-build rm -Rf /var/lib/jabberd/db/* rm -rf /etc/yum.repos.d/*jpackage* rm -rf /etc/jabberd/* echo -e ">>> Miscellaneous (EPEL, logfiles)" && sleep 2 rpm -e epel-release rm -Rf /var/log/rhn/* echo -e ">>> Done!" echo -e ">>> Please clean up your crontab\n" ``` ## Miscellaneous Notes (from May 2009) ### Bolting down Tomcat Did yum install tomcat5-webapps tomcat5-admin-webapps This enabled the administration and management interfaces. User profiles found in $CATALINA\_HOME/conf/tomcat-users.xml You need to change this file AND INCLUDE THE ADMIN ROLE to access the "Tomcat Administration" page AND THE MANAGER ROLE to access the "Tomcat Manager" page ## Sources * https://fedorahosted.org/spacewalk/wiki/OracleXeSetup * https://fedorahosted.org/spacewalk/wiki/HowToInstall * http://www.cs.rug.nl/~jurjen/ApprenticesNotes/ch11.html