Инсталляция Lotus Domino R6 на Linux

IBM выпускает новую версию ведущей в индустрии платформы для обмена сообщениями и организации
групповой работы Lotus Notes и Domino 6 ................

http://www.ibm.com/news/ru/2002/10/11_10_03.html

........, и я с этим согласен.

И так....

I. Подготовка.

Domino R6 Server сгрузить можно отсюда.
или
отсюда.

1.Если на вашем сервере включены такие демоны как Postfix, Sendmail, POP3, Webserver (Apache), нужно их остановить,
так как Domino Server использует те же порты (smtp 25, pop3 110, imap 143, http 80, ssl 443).

rcpostfix stop
rcapache stop

/etc/int.d/postfix stop
/etc/int.d/apache stop

2. Теперь создадим новую группу "notes" и в ней юзера "notes", который должен стартовать Domino Server.
(Никогда Mail-, Web-, FTP Server недолжен стартовать с правами "root" )

mkdir /var/log/notes
groupadd notes
useradd -g notes -d /var/log/notes notes
passwd notes

3. Нужно создать три скрипта (domino, lotus.sh, domino лежат здесь )следующего содержания:

domino - этот скрипт помещаем в директорию /etc/init.d

################## domino ######################
#! /bin/sh
#
# init.d/domino
#
# and symbolic its link
#
# /sbin/rcdomino
#
# System startup script for the Lotus Domino Server
#
### BEGIN INIT INFO
# Provides: domino
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start Domino Server
### END INIT INFO


. /etc/sysconfig/domino
test -e /etc/sysconfig/domino && . /etc/sysconfig/domino

base=${0##*/}
link=${base#*[SK][0-9][0-9]}

test $link = $base && START_DOMINO=yes
test "$START_DOMINO" = yes || exit 0

NOTES_SERVER=domino
OUTPUT_LOG=/var/log/notes/$NOTES_SERVER.log
INPUT_FILE=/var/log/notes/$NOTES_SERVER.input
STATUS=/var/log/notes/$NOTES_SERVER.status
# Set higher values for shared memory and file handles in the kernel
echo $MAXSHAREDMEM > /proc/sys/kernel/shmmax
echo $FILEMAX > /proc/sys/fs/file-max
if [ `uname -r | cut -d "." -f 2` == 2 ]; then
$INODEMAX = `expr $FILEMAX "*" 2`
echo $INODEMAX > /proc/sys/fs/inode-max
fi
ulimit -n $FILEDESC
ulimit -u $USERPROC

DOMINO_BIN=$LOTUSDIR/bin/server
test -x $DOMINO_BIN || exit 5

. /etc/rc.status

rc_reset

case "$1" in
start)
echo -n "Starting Lotus Domino server"
test -f $INPUT_FILE || su - $NOTES_USER -c "touch $INPUT_FILE"
test -f $INPUT_FILE && su - $NOTES_USER -c "rm $INPUT_FILE; touch $INPUT_FILE"
su - $NOTES_USER -c "$DOMINO_BIN <$INPUT_FILE >$OUTPUT_LOG 2>&1 &" || return=$rc_failed
rm -f $STATUS
touch $STATUS
rc_status -v
;;
stop)
echo "Shutting down Lotus Domino server"
echo "... waiting for shutdown to complete"
rm -f $STATUS
echo "quit" >> $INPUT_FILE
count=0
NOTES_RUNNING=`ps -fu $NOTES_USER |grep $LOTUSDIR | awk '{print $2}'`
while [ "$NOTES_RUNNING" ] ; do
sleep 10
count=`expr $count + 1`
echo ".. waiting "$count"0 seconds"
if [ $count -eq 13 ] ; then
echo "Domino is still running after 2 minutes"
echo "... now for the ungraceful method"

cd $NOTES_PATH
rm "~notes.lck"

for i in `ps -fu $NOTES_USER |grep $LOTUSDIR | awk '{print $2}'`; do
kill -9 $i
done

mems=`ipcs -m |grep $NOTES_USER | awk '{print $2}'`
sems=`ipcs -s |grep $NOTES_USER | awk '{print $2}'`

for j in $mems; do ipcrm shm $j ; done >/dev/null 2>&1
for j in $sems; do ipcrm sem $j ; done >/dev/null 2>&1

exit
fi
NOTES_RUNNING=`ps -fu $NOTES_USER |grep $LOTUSDIR | awk '{print $2}'`
done
echo -n "Domino server shutdown completed"
rc_status -v
;;
restart)
$0 stop
$0 start
rc_status
;;

reload)
echo -n "Reload Lotus Domino: "
$0 stop
$0 start
rc_status
;;
status)
echo -n "Checking for Lotus Domino: "
if [ ! -f $STATUS ]; then
rc_status -u
# rm -f $STATUS
else
# touch -f $STATUS
rc_status -v
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload|}"
exit 1
;;
esac
rc_exit

###################################################

Выполните следующий приказ ( чтобы этот скрипт имел права "выполнить" ):

chmod 755 /etc/init.d/domino


lotus.sh - этот скрипт помещаем в директорию /etc/profile.d

#################### lotus.sh #####################
# /etc/profile.d/lotus.sh
. /etc/sysconfig/domino
if [ "$LOGNAME" = $NOTES_USER ]; then
export PATH=$PATH:$LOTUSDIR/bin:$NOTES_PATH:$LOTUSDIR/notes/latest/linux/
export LANG=$NOTESLANG
fi

###############################################

domino - этот скрипт помещаем в директорию /etc/sysconfig

#################### domino ######################
# Start the Lotus Domino Server (yes/no)
START_DOMINO="yes"
NOTES_USER="notes"
NOTES_PATH="/local/notesdata"
LOTUSDIR="/opt/lotus"
NOTESLANG="ru_RU"
MAXFILES="16384"
MAXSHAREDMEM="2140053504"
FILEDESC="8192"
USERPROC="2048"

##################################################

(возможная проблема: NOTESLANG="ru_RU" замените на NOTESLANG="en_EN")

Создаём символический линк для старта Domino Server'а с консоли:

ln -s /etc/init.d/domino /sbin/rcdomino

Создаём символический линк для старта Domino Server'а с третьей и пятой Runlevel :

ln -s /etc/init.d/domino /etc/init.d/rc3.d/K12domino
ln -s /etc/init.d/domino /etc/init.d/rc3.d/S09domino
ln -s /etc/init.d/domino /etc/init.d/rc5.d/K12domino
ln -s /etc/init.d/domino /etc/init.d/rc5.d/S09domino

Эти скрипты написаны для дистрибутивов SuSE 8.0 - 8.2 и UnitedLinux,
чтобы всё работало на RedHat'е и Mandrake, нужно поместить в директории /etc дополнительный файл rc.status такого содержания:

################ rc.status ########################
# /etc/rc.status
# Definition of boot script return messages
#
# The bootscripts should use the variables rc_done and rc_failed to
# report whether they failed or succeeded. See /etc/init.d/skeleton for
# an example how the shell functions rc_status and rc_reset are used.
#
# These functions make use of the variables rc_done and rc_failed;
# rc_done_up and rc_failed_up are the same as rc_done and rc_failed
# but contain a terminal code to move up one line before the output
# of the actual string. (This is particularly useful when the script
# starts a daemon which produces user output with a newline character)
#
# The variable rc_reset is used by the master resource control script
# /etc/init.d/rc to turn off all attributes and switch to the standard
# character set.
#
# \033 ascii ESCape
# \033[<NUM>G move to column <NUM> (linux console, xterm, not vt100)
# \033[<NUM>C move <NUM> columns forward but only upto last column
# \033[<NUM>D move <NUM> columns backward but only upto first column
# \033[<NUM>A move <NUM> rows up
# \033[<NUM>B move <NUM> rows down
# \033[1m switch on bold
# \033[31m switch on red
# \033[32m switch on green
# \033[33m switch on yellow
# \033[m switch on color/bold
# \017 exit alternate mode (xterm, vt100, linux console)
# \033[10m exit alternate mode (linux console)
# \015 carriage return (without newline)
#

# check whether splash screen animations are installed.
_rc_splash=0
test -f /etc/sysconfig/bootsplash && . /etc/sysconfig/bootsplash
test -x /sbin/splash && _rc_splash=1

if test -z "$LINES" -o -z "$COLUMNS" ; then
eval `stty size 2>/dev/null | (read L C; \
echo LINES=${L:-24} COLUMNS=${C:-80})`
fi
test $LINES -eq 0 && LINES=24
test $COLUMNS -eq 0 && COLUMNS=80
export LINES COLUMNS

if test -t 1 -a "$TERM" != "raw" -a "$TERM" != "dumb" && stty size > /dev/null 2>&1 ; then
esc=`echo -en "\033"`
extd="${esc}[1m"
warn="${esc}[1;31m"
done="${esc}[1;32m"
attn="${esc}[1;33m"
norm=`echo -en "${esc}[m\017"`
stat=`echo -en "\015${esc}[${COLUMNS}C${esc}[10D"`

rc_done="${stat}${done}done${norm}"
rc_running="${stat}${done}running${norm}"
rc_failed="${stat}${warn}failed${norm}"
rc_missed="${stat}${warn}missing${norm}"
rc_skipped="${stat}${attn}skipped${norm}"
rc_dead="${stat}${warn}dead${norm}"
rc_unused="${stat}${extd}unused${norm}"
rc_unknown="${stat}${attn}unknown${norm}"
rc_done_up="${esc}[1A${rc_done}"
rc_failed_up="${esc}[1A${rc_failed}"
rc_reset="${norm}"
rc_save="${esc}7"
rc_restore="${esc}8"
function rc_cuu () { echo -en "\033[${1}A"; }
function rc_timer_on () {
# Draw seconds of running timout to column.
# Two arguments: timeout in seconds and offset
local n=$1
local c=$2
(trap "exit 0" SIGTERM
while test $((n--)) -gt 0; do
sleep 1;
if test $n -gt 9 ; then
echo -en "\015${esc}[${c}C(${n}s) "
else
echo -en "\015${esc}[${c}C( ${n}s) "
fi
done) & _rc_timer_pid=$!
}
function rc_timer_off () {
if test -n "$_rc_timer_pid" ; then
kill -SIGTERM $_rc_timer_pid > /dev/null 2>&1
fi
unset _rc_timer_pid
}
else
esc=""
extd=""
warn=""
done=""
attn=""
norm=""
stat=""

rc_done="..done"
rc_running="..running"
rc_failed="..failed"
rc_missed="..missing"
rc_skipped="..skipped"
rc_dead="..dead"
rc_unused="..unused"
rc_unknown="..unknown"
rc_done_up="${rc_done}"
rc_failed_up="${rc_failed}"
rc_reset=""
rc_save=""
rc_restore=""
function rc_cuu () { return; }
function rc_timer_on () { return; }
function rc_timer_off () { return; }
fi

_rc_status=0
_rc_status_all=0
_rc_todo=$1
function rc_check ()
{
_rc_status_ret=$?
test $_rc_status_ret -eq 0 || _rc_status=$_rc_status_ret
test $_rc_status -eq 0 || _rc_status_all=$_rc_status
return $_rc_check_ret
}
function rc_reset ()
{
_rc_status=0
_rc_status_all=0
rc_check
return 0
}

if test "$_rc_todo" = "status" ; then
function rc_status ()
{
rc_check
_rc_status_ret=$_rc_status
for i ; do
case "$i" in
-v|-v[1-9]|-v[1-9][0-9])
echo -en "$rc_save"
test -n "${i#-v}" && rc_cuu ${i#-v}
case "$_rc_status" in
0) echo -en "$rc_running" ;; # service running
1) echo -en "$rc_dead" 1>&2 ;; # service dead (but has pid file)
2) echo -en "$rc_dead" 1>&2 ;; # service dead (but has lock file)
3) echo -en "$rc_unused" ;; # service not running
4) echo -en "$rc_unknown" ;; # status is unknown
esac
echo -en "$rc_restore"
test -z "${i#-v}" && echo
# reset _rc_status to 0 after verbose case
_rc_status=0 ;;
-r) rc_reset ;;
-s) echo -e "$rc_skipped" ; rc_failed 3 ;;
-u) echo -e "$rc_unused" ; rc_failed 3 ;;
*) echo "rc_status: Usage: [-v[<num>] [-r]|-s|-u]" 1>&2 ; return 0 ;;
esac
done
return $_rc_status_ret
}
elif test -n "$_rc_todo" ; then
function rc_status ()
{
rc_check
test "$_rc_status" -gt 7 && rc_failed 1
_rc_status_ret=$_rc_status
case "$_rc_todo" in
stop)
# program is not running which
# is success if we stop service
test "$_rc_status" -eq 7 && rc_failed 0 ;;
esac
for i ; do
case "$i" in
-v|-v[1-9]|-v[1-9][0-9])
echo -en "$rc_save"
test -n "${i#-v}" && rc_cuu ${i#-v}
case "$_rc_status" in
0) echo -en "$rc_done" ;; # success
1) echo -en "$rc_failed" 1>&2 ;; # generic or unspecified error
2) echo -en "$rc_failed" 1>&2 ;; # invalid or excess args
3) echo -en "$rc_missed" 1>&2 ;; # unimplemented feature
4) echo -en "$rc_failed" 1>&2 ;; # insufficient privilege
5) echo -en "$rc_skipped" 1>&2 ;; # program is not installed
6) echo -en "$rc_unused" 1>&2 ;; # program is not configured
7) echo -en "$rc_failed" 1>&2 ;; # program is not running
*) echo -en "$rc_failed" 1>&2 ;; # unknown (maybe used in future)
esac
echo -en "$rc_restore"
test -z "${i#-v}" && echo
# reset _rc_status to 0 after verbose case
_rc_status=0 ;;
-r) rc_reset ;;
-s) echo -e "$rc_skipped" 1>&2 ; rc_failed 5 ;;
-u) echo -e "$rc_unused" 1>&2 ; rc_failed 6 ;;
*) echo "rc_status: Usage: [-v[<num>] [-r]|-s|-u]" 1>&2 ; return 0 ;;
esac
done
return $_rc_status_ret
}
else
function rc_status ()
{
rc_check
_rc_status_ret=$_rc_status
for i ; do
case "$i" in
-v|-v[1-9]|-v[1-9][0-9])
echo -en "$rc_save"
test -n "${i#-v}" && rc_cuu ${i#-v}
test $_rc_status -gt 0 && echo -en "$rc_failed" || echo -en "$rc_done"
echo -en "$rc_restore"
test -z "${i#-v}" && echo
# reset _rc_status to 0 after verbose case
_rc_status=0 ;;
-r) rc_reset ;;
-s) echo -e "$rc_skipped" ; return 0 ;;
-u) echo -e "$rc_unused" ; return 0 ;;
*) echo "rc_status: Usage: [-v[<num>] [-r]|-s|-u]" 1>&2 ; return 0 ;;
esac
done
return $_rc_status_ret
}
fi

function rc_failed ()
{
rc_reset
case "$1" in
[0-7]) _rc_status=$1 ;;
"") _rc_status=1
esac
rc_check
return $_rc_status
}

function rc_exit ()
{
exit $_rc_status_all
}

function rc_confirm()
{
local timeout="30"
local answer=""
local ret=0

case "$1" in
-t) shift; timeout=$1; shift ;;
esac
local message="$@, (Y)es/(N)o/(C)ontinue? [y] "
: ${REDIRECT:=/dev/tty}

while true ; do
read -t ${timeout} -n 1 -p "${message}" answer < $REDIRECT > $REDIRECT 2>&1
case "$answer" in
[yY]|"") ret=0; break ;;
[nN]) ret=1; break ;;
[cC]) ret=2; break ;;
*) echo; continue
esac
done
echo
return $ret
}

function rc_splash()
{
test "$SPLASH" != "no" && test "$_rc_splash" -eq 1 && /sbin/splash "$1"
progress=$(( $progress + 1 ))
}

function rc_active ()
{
for x in /etc/init.d/*.d/S[0-9][0-9]${1} ; do
test -e $x || break
return 0
done
return 1
}

###############################################

II. Инсталляция

1. Распаковываем сгруженный пакет в любой директории (например в /usr/local/src)
2. Инсталлируем Domino Server:

cd /usr/local/src/LINUX
./INSTALL

Следуем укаэаниям стандартной инсталляции:






........................





.......................




3. Теперь заходим в систему как юзер "notes":

ssh -X notes@localhost
cd /local/notesdata
/opt/lotus/bin/http httpsetup

Hе стартует Java Virtul Machine ?

возможная проблема: в файле /etc/sysconfig/language RC_LANG="de_DE@euro" заменить на RC_LANG="de_DE"
(для немецкого дистрибутива)

Cтартует ! Хорошо, идём дальше:



















Finish

exit

4. Cтартуем Domino Server:

Откроем первую консоль и даём приказ:

rcdomino start

Откроем вторую консоль и даём приказ:

tail -f -n 100 /var/log/notes/domino.log

Здесь мы можем контролировать Domino Server


Все приказы Domino Server'у можно давать на консоле с помощью приказа "echo" например: show server

echo "show server" > /var/log/notes/domino.input

или например: quit

echo "quit" > /var/log/notes/domino.input
и так далее...

Откроем вторую консоль и даём приказ:

tail -f -n 100 /var/log/notes/domino.log




Инсталляция Domino Server'а закончена.

Конфигурация Domino Server'а

1.Есть две возможности конфигурировать Domino Server:

a.При помощи Internet Explorer 5.5 и выше или Netscape 4.7

(в нашем примере: http://swesda.gennadi.net/webadmin.nsf)

юзер: administrator notes
пароль: *******




b. Или инсталлировать Lotus Notes Administrator Client'a на Windows-Workstation.

Я исхожу из того, что Samba-Server инсталлирован и
сконфигурирован так, как я описал (см. выше) в статье
Linux и Samba работают как Server NT4.0-PDC.

С начала нужно дополнить path u:\lotus



Windows restart

Логин на Windows-Workstation как юзер "root" и домен "gennadi.net".

Теперь инсталлируем Lotus Notes Administrator Client











Здесь нужно изменить C:\ на U:\ , чтобы каждый
юзер имел собственную lotus-data директорию на Server'e.








Терерь на вашем Desktop'е появились две иконки "Domino Admin 6" и "Lotus Notes 6".

Очень важно! Файл notes.ini находящийся в директории С:\program files\lotus\notes\
вырезать ( cut ) и поместить ( paste ) в u:\lotus.

Cтартуем "Domino Admin 6" и конфигурируем для нашего примера:

















2.Конфигурация Domino Server'а выглядит так:

а.


б. Щёлкните на "Edit Server" и впишите имя вашего домена и хоста в графу
(в моём примере "gennadi.net" и "swesda.gennadi.net")

Domain name: gennadi.net
Fully qualified Internet host name: swesda.gennadi.net

Имя вашего домена и хоста должны быть в интернете извесны,
чтобы Domino Server мог посылать и принимать почту.

Активируйте дополнительно

Routing tasks: SMTP Mail Routing
SMTP listener task: Enabled



в.


г. В графу "Relay host for messages leaving the local internet domain"
внесите имя host'a или ip adress вашего интернет-провайдера, в крайнем случае оставте пустым.


д. Активируйте дополнительно Router/SMTP - Advanced - Controls

Hold undeliverable mail: Enabled




3. Создадим двух юзеров "ivan" и "klava"

C начала скопируем файл cert.id, котокый лежит в директории /etc/notesdata на Linux-Server'e "Swesda" в
директорию U:\lotus\notes\data\ids на Windows-Workstation
На Windows-Workstation и в регистре "Сonfiguration-Registration" щёлкните на "Person..."



Шёлкните на"cert.id" и введите пароль



Tерерь регистрируем юзеров на пример "ivan" и "klava":











Это всё .............

Tерерь можно инсталлировать Lotus Notes Сlient'a ( по выше приведённому примеру ) на всех Windows-Workstation в локальной сети и все юзеры могут пользоваться любой Workstation и будут всегда иметь свой Desktop и cвой Lotus Notes.

Ivan и Klava могут посылать и принимать почту.

Можно также работать с Microsoft Outlook, Kmail или Ximian Evolution и так далее .
Создате аккоунт например для Ivan'a:
User: [email protected]
POP или IMAP: swesda.gennadi.net
SMTP: swesda.gennadi.net

Это самый простой (но уже рабочий!) пример настройки Domino Server'a R6 на Linux'e.

PS: Domino Server обладает большими возможностями и чтобы использовать весь его потенциал, нужно конечно почитать соответствующую литературу.

Автор: [email protected], Райнберг

Комментарии:

globus
Добавлено: Чт Июл 24, 2003 5:50 am
Заголовок сообщения: пользователи не добавляются
делаю все как написанно а он пользователей всеравно не добавляет... скопировал cert.id файл выбираю его при добавленни пользователя он просит пароль я ввожу его и получаю сообщение типо иди и сделай edit recovery information

чего делать научите ?

globus
Добавлено: Чт Июл 24, 2003 5:53 am
Заголовок сообщения: PS
ЗЫ но пользователя добавляет в конце концов но в поле пороль пусто... вручную правишь это поле, потом заходишь под этим пользователем а он делать не может ничего ...

admin
Добавлено: Чт Июл 24, 2003 8:17 am
Заголовок сообщения: password
.. вручную правишь это поле...

При добавлении пользователя попробуйте сделайте так:



а он делать не может ничего ...

Дайте пользователю права manager'a или designer'a


Последний раз редактировалось: admin (Пт Июл 25, 2003 12:29 am), всего редактировалось 1 раз

globus
Добавлено: Чт Июл 24, 2003 9:06 am
Заголовок сообщения: ок, с этим вродя все понятно.....
ок, с этим вродя все понятно.....

есть еще вопрос, у меня под почтой стоит другой сервак можноли настроить лотуса чтоб он пользовал его ?

моя главная цель настроить документо оборот чтоб пользователи могли удобно обмениваться файлами

и еще вопрос у меня стоит ЛОТУС Домини под серваком и Нотес под пользователей, могут ли они в такой конфигурации работать с doc и xls файлами ??? или для этого обязательно устонавливать domino.doc ?

заранее спасибо !

admin
Добавлено: Чт Июл 24, 2003 2:49 pm
Заголовок сообщения: SMTP
...................у меня под почтой стоит другой сервак можноли настроить лотуса чтоб он пользовал его ?

Да можно.

Lotus Domino Server не может работать как POP3 Client (т.е.
сам забирать почту), для этого нужно, чтобы - например на Linux'e -
Fetchmail забирал почту с твоего другого почтового сервера, а
Sendmail или Postfix ( где нужно указать relayhost= ipadress твоего Domino Server'a) посылал eё на Domino.

Lotus Notes умеет работать с doc и xls файлами.

globus
Добавлено: Пт Июл 25, 2003 3:11 am
Заголовок сообщения: lotus