ShowTable of Contents
Introduction
It is not the intent of this article to teach basic Domino or AIX administration. It is assumed that the Domino administrator is not only responsible for installing the Domino code but also performs and maintains the daily Domino administration tasks.
NOTE: If you have insufficient administration rights, certain AIX commands may not execute correctly in your environment. The author is not responsible for undesirable results from using the scripts and commands contained in this document. Also, keep in mind that UNIX is case sensitive, so refer to the UNIX online manual (man) pages for syntax.
Also, all screen shots and commands have been executed on AIX 6.1 (64-bit version) and Lotus Domino 8.5 FP1 (64-bit version).
Preparing your environment
Before installing the Domino code on AIX, you must do the following:
1. Verify that AIX has the latest base patches and packages applied, using the command:
$lslpp –l bos.adt.include
Figure 1. Command output
2. Configure TCP/IP:
(a) To set up TCP/IP, use the command # smitty tcpip, and press Enter. The TCP/IP menu displays.
(b) Select Minimum Configuration & Startup and press Enter; a pop-up window displays with a list of available network interfaces (see figure 2).
(c) Select the desired network interface adapter from the list and press Enter. For our environment we selected one of the three installed standard Ethernet Network Interfaces.
Figure 2. List of available network interfaces
(d) On the next screen, key in the desired network details such as host names, IP address, and Domain Name (see figure 3).
Figure 3. Minimum Configuration and Startup screen
NOTE: Be sure to have the Fully Qualified Domain Name (FQDN) and the IP address from your network team handy before installing the Domino code.
Alternatively, a host file containing the IP address of the Domino instances and the Domino Administration server can be created as a temporary measure to proceed with installation in the /etc/hosts directory. Verify the FQDN by doing an nslookup command.
3. Stop the conflicting Deamon:
Sendmail is a message transfer agent (MTA) that runs by default on AIX and binds to SMTP port 25. If the Domino server is to be configured for SMTP, there will be a port conflict, so you need to check whether Sendmail is running by using:
# ps –ef | grep sendmail
To stop Sendmail, use the following:
# stopsrc –s sendmail
4. Create a user and group to own Domino binaries and start and stop Domino services:
(a) Domino services should not be run as root; therefore, a user name and group must be created to own the binary and run the code. You can either use the AIX System Management Interface Tool (SMIT) or, to create a group, simply use the command:
# mkgroup –A domino
(b) Then create a user called notes and make it a member of the group notes already created in the previous command, as follows:
# mkuser pgrp=domino groups=’staff,domino’
This AIX user id will be the one that is logged in when the Domino server is running.
(c) If you plan to install partitioned servers (multiple instances on the same machine), you will need a different AIX user id for each partition installed.
For example, if you have four partitioned servers, you would probably have notes1, notes2, notes3, and notes4 as user accounts and notes as the group; or, as in this example, domino is the username and group name having ownership of all the Domino partitions (DPARs).
Ask your AIX administrator to do the following:
- Create a Logical Volume for the Domino Data Directory; for example, : /GBLDT01
- Create a Logical Volume for the Domino Binaries
- Create a File System for the Domino Data Directory; for example, : /GBLMAILDT
- Create a File System for the Domino Binaries
- Mount the File Systems
- Change Ownership of the New File Systems to the ‘domino’ user and group
5. Register the new Domino server in the Domino Directory, and keep the new server ID handy for configuring the server later on.
NOTE: In computing, a logical partition, commonly called an LPAR, is a subset of a computer's hardware resources, virtualized as a separate computer. In effect, a physical machine can be partitioned into multiple LPARs, each housing a separate operating system. An LPAR containing domino instances is called a DPAR.
Installing the Domino code
To install the Domino server on the newly created Domino file system, follow these steps:
1. Copy the tar file in the File System created for the Domino Binaries; in this example, it is
/GBLDT01/ibm/lotus
2. untar the lotus_domino85_aix64_C1SQ0EN.tar file, using the tar –xvf command in the path mentioned:
# tar –xvf lotus_domino85_aix64_C1SQ0EN.tar
The important files to note are listed in figure 5; the install file contains the installation script.
Figure 5. Noteworthy files
3. The installation requires sudo root privilege, so use the command su - root to execute the install script (see figure 6).
Figure 6. Install script screens
4. Enter in the location of the domino binaries; for example, here we keyed in /GBLDT01/ibm/lotus (see figure 7).
Figure 7. Program files directory name
5. Since we are installing a partitioned server (the default is a single instance) with three DPARs, we answer Yes to the Partitioned Server prompt and enter “3” for the number of partitions (see figure 8).
Figure 8. Partition information
Also, enter the domino data directory path for each instance and give read, write, and execute rights to group and user “domino”.
6. The next screen contains information on creating a soft link, but this is optional and can be skipped (see figure 9).
Figure 9. Option to create a soft link
7. Select the Customize Domino Server option, if you do not require all the standard components installed (see figure 10).
Figure 10. Install options
The install proceeds as shown in figures 11 and 12.
Figure 11. Summary of the DPARS being installed
The installation of Lotus Domino is now complete (see figure 12).
Figure 12. Installation completes
8. Before you launch the Domino server, check the port completion status by using the command:
# smitty iocp
It should be “available” on startup (see figure 13). If it's not, then change the status to available, reboot the server, and then check that the status is correct.
Figure 13. I/O Completion ports status screen
Again, note that the above step can be done only with root or sudo root access.
Configuring the Domino server
Installing Fixpack 1 on Domino
To install Fixpack 1, follow these steps:
1. Copy the .tar file in the File System created for the Domino Binaries for this example it is /GBLDT01/ibm/lotus
2. Next, untar DominoServer_85FP1_AIX64.tar using the tar –xvf command in the path mentioned.
3. Then, su as root and edit the root .profile file, adding the following line:
# vi /home/root/.profile
In the above installation we add these lines in the .profile file:
NUI_NOTESDIR=/GBLHUBDT/ibm/lotus
export NUI_NOTESDIR
4. Once you have logged off and logged back in as root, execute the install script, following the instructions to upgrade your system to the latest fixpack.
Configuring Lotus Domino using the remote server client setup
To do this, use these these steps:
1. Drop the server id file in the data directory.
2. Start the Domino server in the listener mode from the data directory:
$/GBLDT01/ibm/lotus/bin/server –listen
3. Start up the Remote Install client, to connect to the server for further configuration (see figure 14).
Figure 14. Connect to Remote Domino Server window
Enabling console logging
To enable console logging, add the following entries in the Notes.ini file:
LOG_CONSOLE=1
CONSOLE_LOG_ENABLED=1
Stopping and starting Lotus Domino in the background
Below is a “quick and dirty” script to start the Domino server:
#!/bin/ksh
# Domino Application Server start script
# path of the domino output file
OUTFILE=$HOME/gblhubdt01.out
# path of the data directory
cd /gblhubdt01/lotus/domino/data
echo "Starting Notes server in background"
echo "(console redirected to $OUTFILE, ctrl-c to quit tailing)"
# Execute the command in background and send the output to standard output device
nohup /usr/domino/lotus/bin/server < /dev/null > $OUTFILE 2>&1 &
tail -f $OUTFILE
This script creates an output log file that uses the tail command to show the Domino console commands from the file OUTFILE. This script must be executed from the user's home directory.
Create an application environment file for the passing of variables in the stop and start script:
#!/bin/ksh
# Domino Application Server Environment Variable Script
# Licensed Materials - Property of IBM
# (C) COPYRIGHT International Business Machines Corp 1994,1998
# All Rights Reserved.
# US Government Users Restricted Rights - Use, duplication or disclosure
# restricted by GSA ADP Schedule Contract with IBM Corp.
############################################################################
# Description – gblhubdt01_env
#
# This script makes variable definitions that are common to
# the start_gblhubdt01, stop_gblhubdt01 scripts
#
# Update each line below to make it specific to the Domino server that
# this script will be used to control.
#
# A blank file called $NOTES_USER.input must exist in the $NOTES_PATH folder
# and the user $NOTES_USER must have write access to it.
#
############################################################################
# This script is provided "As Is".
# Script Environment variables.
NOTES_USER=domino # AIX userid used to run the Domino server
NOTES_PATH=/gblhubdt/lotus/domino/data # Path for server data directory
LOTUS_PATH=/gbldt01/ibm/lotus # Path to Lotus folder with Binaries in
SVR_CMD=/gbldt01/ibm/lotus/bin/server # Location of Domino server cmd
NOTES_SERVER=gblhubdt # Name of Domino Server
OUTPUT_LOG=/dev/null # Output file for server console (null just discards)
INPUT_FILE=$NOTES_PATH/$NOTES_USER.input # Input file for server console
PATH=$NOTES_PATH:/usr/domino/lotus/bin:$HOME/bin:$PATH # Set Path
# Domino Server Start Script
# Licensed Materials - Property of IBM
# (C) COPYRIGHT International Business Machines Corp 1994,2009
# All Rights Reserved.
# US Government Users Restricted Rights - Use, duplication or disclosure
# restricted by GSA ADP Schedule Contract with IBM Corp.
############################################################################
# Description - start_gblhubdt
# This is a server startup script to start the Domino Server in background
# that gets command input from a file and pipes the output to another which
# can be monitored by administrators.
#
# The INPUT file allows any command to be issued to the Domino Server so
# this file should be treated accordingly ...hidden with the appropriate
# permissions to prevent unauthorized access to the server
#
# Make sure the correct environment script is called on the first line below
# It should call the environment script that is specific to the Domino server
# this script is being used to control
#
############################################################################
# This script is provided "As Is".
#
# Update line to below to call correct environment script for this server
. /usr/bin/gblhubdt_env
# Script Logic `
if ((`id -u` == 0))
then
print "Run the Domino Server as the $NOTES_USER user "
exit
fi
#
# if you are using /etc/hosts for tcpip name resolution rather than a name
# server or NIS, then uncomment the following line. Otherwise REM it out.
export NSORDER=bind,local,nis
if [ ! -x $SVR_CMD ] ; then
echo "Cannot access the domino server command - exiting"
exit 1
fi
# Customizing AIX for Lotus Domino
if [ ! -d $NOTES_PATH ] ; then
echo "Cannot access notes data directory - exiting"
exit 1
fi
NOTES_RUNNING=`ps -fu $NOTES_USER | grep $LOTUS_PATH | grep -v grep `
if [[ -n $NOTES_RUNNING ]] ; then
echo "Domino Server $NOTES_SERVER is already running - exiting"
exit 1
fi
cd $NOTES_PATH
#
# Clean up if the Domino Server terminated abnormally earlier
#
rm -f ~notes.lck
mems=`ipcs | grep $NOTES_USER | awk '{ print $1 $2 }' | awk -F"m" '{ print
$2 }' | awk '{ print $1 }'`
sems=`ipcs | grep $NOTES_USER | awk '{ print $1 $2 }' | awk -F"s" '{ print
$2 }' | awk '{ print $1 }'`
for j in $mems;do if [ -n "$j" ] ; then ipcrm -m $j;fi;done
for j in $sems;do if [ -n "$j" ] ; then ipcrm -s $j;fi;done
#
# For servers using Notes passwords,
# replace the previous line with the following two lines.
#
# cat .secure_hidden_passwd > $INPUT_FILE
# echo "show server"
$INPUT_FILE
#
# Rename the output logfile. REM out the next 2 lines if no output file
# cp -p $OUTPUT_LOG $OUTPUT_LOG.'date +"%m%d%y_%H%M"'
# cp -p $OUTPUT_LOG $OUTPUT_LOG.backup
#
print "Starting Domino for AIX ($NOTES_SERVER)"
$SVR_CMD < $INPUT_FILE > $OUTPUT_LOG 2>&1 &
NOTE: Modify the variables and uncomment the script, per your Domino environment and requirements.
# Domino Server Stop Script
# Licenced Materials - Property of IBM
# (C) COPYRIGHT International Business Machines Corp 1994,2009
# All Rights Reserved.
# US Government Users Restricted Rights - Use, duplication or disclosure
# restricted by GSA ADP Schedule Contract with IBM Corp.
############################################################################
#
# This is the script to STOP the Domino Server which has been started using
# the corresponding script (start_ gblhubdt).
# The script attempts to QUIT the server gracefully and waits
#
# If Domino Server has not shut down by then, it will be killed.
# Depending on your environment, you may want to change this time-out
# period.
#
# Make sure the correct environment script is called on the first line below
# It should call the environment script that is specific to the Domino server
# this script is being used to control
#
############################################################################
# This script is provided "As Is".
#
# Update line to below to call correct environment script for this server
. /usr/bin/gblhubdt01_env
# Script Logic
print "Stopping Domino for AIX ($NOTES_SERVER)"
print " ... waiting 2 minutes for shutdown to complete"
# write the quit command to servers input file
echo " quit "
$INPUT_FILE
#
count=0
NOTES_RUNNING=`ps -fu $NOTES_USER | grep $LOTUS_PATH | grep -v grep `
while [[ -n $NOTES_RUNNING ]] ; do
sleep 10
count=`expr $count + 1`
echo " ... waiting "$count"0 seconds"
echo " ... waiting "$count"0 seconds"
#
# Terminate Domino Server if still running
#
if [ $count -eq 13 ] ; then
echo "Domino Server is still running after 2 minutes"
echo " ... now forcing shutdown via NSD -kill"
sleep 5
cd $NOTES_PATH
nsd -user $NOTES_USER -kill
mems=`ipcs | grep $NOTES_USER | awk '{ print $1 $2 }' | awk -F"m" '{
print $2 }' | awk '{ print $1 }'`
sems=`ipcs | grep $NOTES_USER | awk '{ print $1 $2 }' | awk -F"s" '{
print $2 }' | awk '{ print $1 }'`
for j in $mems;do if [ -n "$j" ] ; then ipcrm -m $j;fi;done
for j in $sems;do if [ -n "$j" ] ; then ipcrm -s $j;fi;done
sleep 5
echo ""
echo "Domino Server ($NOTES_SERVER) did not shut down gracefully - TERMINATED!"
echo ""
# Reset to the servers input file to blank
echo " " > $INPUT_FILE
exit
fi
NOTES_RUNNING=`ps -fu $NOTES_USER | grep $LOTUS_PATH | grep -v grep `
done
#
echo "Shutdown of Domino Server ($NOTES_SERVER) completed gracefully"
# reset the servers input file to blank
echo " " > $INPUT_FILE
NOTE: Modify the variables and uncomment the script, per your Domino environment and requirements.
Crontab entries and inttab entries
A scheduled restart of the Domino server requires crontab entries by default. Any user can create a cron table via the crontab -e command, but the Systems Administrator can control which users are allowed to create and edit cron tables with the cron.allow and cron.deny files.
NOTE: When using the crontab command, keep in mind that the current user ID is the cron table that is acted on. To
list the contents of the current user’s cron table, issue the crontab -l command.
For example:
Here's a cron entry to stop the Domino server at 2:00AM every day and send the output to null:
0 2 * * 0,2,4 su –domino /usr/bin/stop_domino.sh 2>&1 > /dev/null
To start the domino service automatically on restart of the AIX box, edit the /etc/inittab file as follows:
notes:2:once:/bin/su - domino -c /usr/bin/start_domino
This above entry executes the start domino server gblhubdt01 with the user id “domino” on reboot of the AIX box.
Useful AIX commands
Here are some useful commands for checking performance issues on AIX:
•
$topas Excellent online screen and a good summary of everything you need; equivalent to Microsoft® Windows® task manger; provides stats in real time.
•
$vmstat –Iwt Run queue, virtual memory statistics, paging, CPU utilization.
•
$lsps –a Memory monitoring
•
$iostat–a Report statistics for TTYs, disks, and CPU
Here are useful commands to get Domino-related information on AIX:
• Get all network information in a single command:
mktcpip -S en0
• Display 10 largest directories on the volume gblhubdt01 by size:
du -ak /gblhubdt01|sort -n -r|head –10
• Find 10 top files in the DPAR (/) directory larger than 600 MB. ”-xdev”, where each MB is 512 (for example, 600=307200/512):
find /gblhubdt -xdev -size +307200 -ls|sort -rn +6|head -10
• Show top 10 memory usages by process:
ps auxw | sort –r +3 |head –10
• Show zombies processes; can be used to kill and then reboot them after an abnormal Domino server shutdown:
ps –auw | grep defunct
• Find file differences, for example, the notes.ini, between two domino instances on the same AIX box:
sdiff /gblhubdt/data/notes.ini /gblmaildt01/data/notes.ini
• Find nsd files older than 40 days and list them for deletion:
find –L /gblhubdt/data/IBM_TECHNICAL_SUPPORT/* -mtime -40 –exec ls -ltr {} \;
• View Domino console in non-interactive mode:
$ tail –f /gblhubdt/data/IBM_TECHNICAL_SUPPORT/console.log
Conclusion
Installing Domino on AIX requires working closely with the team managing your AIX operating system, if sudo root access is not available. Building the DPAR by itself should be trouble free as long as you have all the prerequisites set up correctly. Basic understanding of the UNIX environment comes in handy when troubleshooting installation issues.
Resources
developerWorks® Lotus Notes and Domino product page:
http://www.ibm.com/developerworks/lotus/products/notesdomino/?S_TACT=105AGX13&S_CMP=LP
Lotus Domino 8.5x documentation page:
http://www.ibm.com/developerworks/lotus/documentation/domino/
Lotus Notes/Domino 8.5 forum:
http://www-10.lotus.com/ldd/nd85forum.nsf
Lotus Notes/Domino Information Center:
http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp
About the author
Chetan Hombal is a Lotus Domino and SMTP administrator, supporting customers from IBM's Integrated Delivery Center in Bangalore, India.