Using Novell Linux Services with Apache (1.3.26)
Novell Cool Solutions: Feature
By Mike Duncan
Digg This -
Posted: 2 Jul 2004
Sonopress is using Apache version 1.3.26 which is the standard version shipped with SUSE Enterprise Server 8. This version of Apache is shipped with many modules, including mod_php4. Unfortunately, a binary build of the PHP module is unusable by our applications because we require additional modules which are not present in binary versions. Additionally, we want to leave our scalability and updating options open, so we want to use standardized packages with SUSE as much as possible.
After trying to get the Novell version of Apache (2.0.48-4) to run with our PHP build (custom), I found that our install of Novell Linux Services (NLS) v1.1 did not install Apache header files vital to building our custom PHP with Novell's Apache. This leaves us having to build a custom version of PHP for the standard, binary version of Apache shipped with SUSE Enterprise Server 8.
We also want to continue to use the Novell Tomcat (4.1.28-4) for the iManager service. This means we will need to use mod_jk (Jakarta-Tomcat-Connector or mod_jk) as well to connect the Novell Tomcat with the SUSE Apache version The included mod_jk for Novell's Apache version is incompatible with the SUSE Apache version. SUSE Enterprise Server 8 does not include a standalone mod_jk package for installation (at least not one we could find easily using YaST).
We will not go into compiling PHP, as it is beyond the scope of this document. This is a custom build anyway. However, the build for the mod_jk is needed to complete the overall task of connecting our Apache version with Novell's Tomcat.
The reader should have an understanding of building modules for Apache. This includes the use of the executables gcc, make, and how to edit the httpd.conf file (if needed). If you have never built an Apache module, you should review this process elsewhere before continuing. Suggestion: Google for howto build apache module. Additionally, a lot of libraries and development packages are needed to compile anything on SUSE Enterprise Server 8. The development packages may [not] have been installed. Please review documentation of rpm and YaST before continuing. Install any necessary packages if needed.
During our installation, we noticed that the module was trying to install to /srv/www rather than /usr/lib/apache, where all the other Apache modules are located. We needed to add a temporary soft-link to ensure this was installed in the correct location...
# ln -s /usr/lib/apache /srv/www/libexec
We removed this link once the module was successfully installed.
1. Download jakarta-tomcat-connectors-jk from http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2.Untar and build the mod_jk module. For our case (using the standard SUSE Apache packaged version)...
# ./configure - -use-apxs=/usr/sbin/apxs \ - -with-java-home=/opt/novell/j2sdk-1.4.2_01 \ - -enable-shared # make && make install
Normally, to get mod_jk to work with Apache, you must add this line to your httpd.conf file...
LoadModule jk_module /usr/lib/apache/mod_jk.so
We added the following lines to the bottom of our /etc/httpd/httpd.conf file to compensate...
<IfDefine NOVELL_SUPPORT> LoadModule jk_module /usr/lib/apache/mod_jk.so Include /etc/opt/novell/httpd/conf.d/020mod_jk.conf #Include /etc/opt/novell/httpd/conf.d/httpd_ifolder_unix.conf Include /etc/opt/novell/httpd/conf.d/nps-Apache.conf </IfDefine>
...and edit the file /etc/opt/novell/httpd/conf.d/020mod_jk.conf file and comment the line where it loads the mod_jk module.
#LoadModule jk_module /usr/lib/apache/mod_jk.so
We commented out the line for iFolder support because we do not use iFolder support at all and there was an error when starting apache with the mod_ifolder.so module. The mod_ifolder Apache module was written by Novell for use with the Novell Apache version (2.0.48-4) and not the SUSE Apache version (1.3.26). The module is also compiled using pthreads, for which the SUSE Apache does not have support for. Maybe Novell can open up the source for the ifolder module in the future and allow administrators to get around this problem by compiling it against the SUSE Apache version and without pthread support.
We use the IfDefine directive above to give us the ability to turn off the iManager and other Novell web services easily. It is possbile to omit the IfDefine directive and skip some extra configuration explained below.
SUSE uses the /etc/sysconfig directory for configuration of many of its services including Apache. Edit the file /etc/sysconfig/apache to disable YaST from overwriting your httpd.conf changes made above and to load the modules we need.
# # Enable SUSEconfig.apache (yes|no) # # Some people don't want SUSEconfig to modify the system. With this # entry you can specifically disable the apache module of SUSEconfig. # ENABLE_SUSECONFIG_APACHE=?no?
If you decided to use the NOVELL_SUPPORT IfDefine statements above in the httpd.conf file, you will need to tell Apache to load this support on boot. Edit the file /etc/httpd/suse_define.conf...
You could also add any additional define statements here that you may need. If you need SSL support for the SUSE Apache, again, look to the /etc/sysconfig/apache file for guidance and you will need to create a certificate.
By using the above configuration, we were able to use our customized version of PHP and mod_jk with the standard packaged version of Apache that is shipped with SUSE, all of this while being able to continue to use iManager and other Novell web-based applications. Additionally, by using the steps above, it would also be possible to use a custom version of Apache with mod_jk to access NLS.
- Mike Duncan
- Sonopress LLC
Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions. www.webwiseone.com