Так как у тех, кто впервые устанавливает продукты InterSystems на Linux, часто возникают проблемы в процессе установки, я решил описать этот процесс. На данный момент из бесплатных версий Linux начиная с версии 2014.1 поддерживается CentOS 6.4, поэтому процесс установки буду описывать именно на этой ОС но установка, например, на Ubuntu ничем не отличается (хотя она и не является сейчас официально поддерживаемой InterSystems).
Для установки InterSystems Caché, нам понадобится дистрибутив, если у вас его нет, то вы можете его скачать здесь. Однопользовательская версия, для RedHat, установщик в формате tar.gz. Для установки на Ubuntu нужно брать версию для SuSE Linux. На момент написания статьи доступна версия 2014.1.
Для установки InterSystems GlobalsDB здесь качаем версию Для RedHat, на выбор предлагается Node.js или Java, но это не важно — на скачиваемый файл это не влияет.
Прежде чем начать установку, нужно подготовить машину для работы с Caché и GlobalsDB.
Для начала нужно увеличить объем shared памяти который мы сможем использовать. Для работы Caché и GlobalsDB нужно больше чем обычно выставлено по умолчанию в Linux. В документации об этом написано здесь.
Для этого нужно подкорректировать два параметра в sysctl, это shmall и shmmax. У меня на CentOS 6.5, они уже при установке получили подходящие значения и менять не пришлось (но вам возможно это сделать понадобится).
Проверить текущие значения можно командами (здесь и далее, предполагается, что действия выполняются под пользователем root):
Как видите, в моем варианте shmmax — 64GB, shmall — 4Gb.
Чтобы поменять значение, нужно выполнить команду:
или так
Но так изменения пропадут после перезагрузки. Для того чтобы нужные нам значения работали всегда, достаточно отредактировать файл
Установить значение, действующее до перезагрузки:
Значение, которое будет сохраняться и после перезагрузки, нужно выставить в файле
После этого можно перезагрузиться и проверить все внесенные изменения.
Теперь все готово к установке Caché или GlobalsDB.
Распаковываем загруженный tar.gz дистрибутив Caché.
Запускаем установку
Отлично, наша система распознана как поддерживаемая, теперь можно заполнять необходимые параметры. Вводимые дальше параметры уже на ваше усмотрение. Тип установки думаю стоит выбрать первый. Поддержка юникод, зависит от необходимости использовании старых проектов на 8 бит, но рекомендую включить поддержку юникод, тем более что уже есть варианты по миграции с 8 бит на юникод. Уровень безопасности можно поставить минимальный. При таком уровне пароль SYS будет установлен для всех пользователей, а также будет активен неавторизуемый вход. Уровень безопасности можно будет потом повысить при необходимости.
Провереяем верность выбранных параметров, и соглашаемся с установкой. Дожидаемся завершения установки.
Теперь мы можем войти в терминал Caché командой:
А в портал управления Caché по ссылке http://localhost:57772/csp/sys/UtilHome.csp
Запуск и остановка Caché выполняется командами:
последний параметр — это имя инстанса, который мы указали при установке.
Распаковываем tar.gz дистрибутив GlobalsDB.
Запускаем установку:
Нам предлагают ввести номер нашей системы из списка, но выбора нет. Это связано с тем, что установка производится на CentOS, такая же проблема может возникнуть при установке на Ubuntu версии отличной от 11.04, так как в коде установщика есть жесткая привязка к номеру версии. Для решения этой проблемы применим патч. Создайте файл в текущей папке с именем cplatname.patch
и содержимым:
можно скачать с GitHubGist
применим новый патч, он решит проблему как для CentOS, так и для Ubuntu.
Пробуем повторно запустить установку:
Отлично, теперь работает, можно устанавливать. В отличии от Caché, здесь установщик от нас попросит только путь установки, и после этого сразу установит и запустит установленный GlobalsDB.
Можно войти в терминал GlobalsDB:
Запуск и остановка сервера GlobalsDB выполняется командами, в подпапке mgr, где был установлен GlobalsDB:
При необходимости можно указать размер буфера глобалов, например 1024MB
«Из коробки» нет готового решения по автоматическому запуску и останову СУБД InterSystems на Linux, что справедливо как для Caché так и для GlobalsDB.
Для управления запуском и остановкой Caché, нашел на github скрипт от unix_junkie
качаем и устанавливаем его:
теперь нужно активировать службу cache. Так это можно сделать в CentOS.
А так в Ubuntu.
Замечу, что служба зависит от другой службы InterSystems, для которой такой скрипт все таки есть, это служба ISCAgent. И если она остановлена то Caché не запустится. Такое может быть после остановки Caché.
Скрипт который подходит для Caché не подойдет для GlobalsDB. Поэтому могу предложить свой вариант, взять его можно здесь.
Нужно подготовить файл с настройками
Теперь можно включить сервис. CentOS.
Ubuntu
Теперь о возможности подключится к терминалу Caché с удаленной машины. Конечно, имея telnet или ssh доступ к машине, можно после авторизации запускать
Например у вас уже есть настроенный доступ по ssh/telnet. Тогда мы можем создать пользователя у которого в качестве оболчки будет терминал Caché. Создаем файл например с именем
Делаем его исполняемым и проверяем, простым запуском, должны попасть в терминал.
Теперь создаем пользователя
теперь при авторизации по ssh/telnet, под пользователем cachesession мы сразу попадем в Caché.
Что потребуется
Для установки InterSystems Caché, нам понадобится дистрибутив, если у вас его нет, то вы можете его скачать здесь. Однопользовательская версия, для RedHat, установщик в формате tar.gz. Для установки на Ubuntu нужно брать версию для SuSE Linux. На момент написания статьи доступна версия 2014.1.
Для установки InterSystems GlobalsDB здесь качаем версию Для RedHat, на выбор предлагается Node.js или Java, но это не важно — на скачиваемый файл это не влияет.
1. Подготовка
Прежде чем начать установку, нужно подготовить машину для работы с Caché и GlobalsDB.
Для начала нужно увеличить объем shared памяти который мы сможем использовать. Для работы Caché и GlobalsDB нужно больше чем обычно выставлено по умолчанию в Linux. В документации об этом написано здесь.
Для этого нужно подкорректировать два параметра в sysctl, это shmall и shmmax. У меня на CentOS 6.5, они уже при установке получили подходящие значения и менять не пришлось (но вам возможно это сделать понадобится).
Проверить текущие значения можно командами (здесь и далее, предполагается, что действия выполняются под пользователем root):
$ sysctl kernel.shmmax
kernel.shmmax = 68719476736
$ sysctl kernel.shmall
kernel.shmall = 4294967296
Как видите, в моем варианте shmmax — 64GB, shmall — 4Gb.
Чтобы поменять значение, нужно выполнить команду:
$ sysctl kernel.shmmax=68719476736
$ sysctl kernel.shmall=4294967296
или так
$ echo 68719476736 > /proc/sys/kernel/shmmax
$ echo 4294967296 > /proc/sys/kernel/shmall
Но так изменения пропадут после перезагрузки. Для того чтобы нужные нам значения работали всегда, достаточно отредактировать файл
/etc/sysctl.conf
. Следует добавить такие строки, либо найти и изменить соответствующие параметры если они там уже есть.# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
Дополнительно потребуется выставить объем памяти, который может быть заблокирован. Проверить текущее значение (результат в килобайтах):
$ ulimit -l
64
Установить значение, действующее до перезагрузки:
$ ulimit -l 4096000
Значение, которое будет сохраняться и после перезагрузки, нужно выставить в файле
/etc/security/limits.conf
root soft memlock 4096000
root hard memlock 4096000
После этого можно перезагрузиться и проверить все внесенные изменения.
2. Установка
Теперь все готово к установке Caché или GlobalsDB.
Caché
Распаковываем загруженный tar.gz дистрибутив Caché.
$ mkdir cache-2014.1.0.608.0su-lnxrhx64
$ tar -zxf cache-2014.1.0.608.0su-lnxrhx64.tar.gz -C ./cache-2014.1.0.608.0su-lnxrhx64
Запускаем установку
$ cd cache-2014.1.0.608.0su-lnxrhx64
$ ./cinstall
Your system type is 'Red Hat Enterprise Linux 6 (x64)'.
Currently defined instances:
Enter instance name:
Отлично, наша система распознана как поддерживаемая, теперь можно заполнять необходимые параметры. Вводимые дальше параметры уже на ваше усмотрение. Тип установки думаю стоит выбрать первый. Поддержка юникод, зависит от необходимости использовании старых проектов на 8 бит, но рекомендую включить поддержку юникод, тем более что уже есть варианты по миграции с 8 бит на юникод. Уровень безопасности можно поставить минимальный. При таком уровне пароль SYS будет установлен для всех пользователей, а также будет активен неавторизуемый вход. Уровень безопасности можно будет потом повысить при необходимости.
Скрытый текст
Enter instance name: CACHE
Do you want to create Cache instance 'CACHE' <Yes>?
Enter a destination directory for the new instance.
Directory: /opt/cache
Directory '/opt/cache' does not exist.
Do you want to create it <Yes>?
----------------------------------------------------
NOTE: Users should not attempt to access Cache while
the installation is in progress.
----------------------------------------------------
Select installation type.
1) Development - Install Cache server and all language bindings
2) Server only - Install Cache server
3) Custom
Setup type <1>?
Disk blocks required = 2372204
Disk blocks available = 22197288
Do you want to install Cache Unicode support <No>? yes
How restrictive do you want the initial Security settings to be?
"Minimal" is the least restrictive, "Locked Down" is the most secure.
1) Minimal
2) Normal
3) Locked Down
Initial Security settings <1>?
What group should be allowed to start and stop
this instance? root
Cache did not detect a license key
in directory /opt/cache/mgr.
Do you want to enter a license key <No>?
Please review the installation options:
------------------------------------------------------------------
Instance name: CACHE
Destination directory: /opt/cache
Cache version to install: 2014.1.0.608.0su
Installation type: Development
Unicode support: Y
Initial Security settings: Minimal
User who owns instance: root
Group allowed to start and stop instance: root
Effective group for Cache processes: cacheusr
Effective user for Cache SuperServer: cacheusr
SuperServer port: 1972
WebServer port: 57772
JDBC Gateway port: 62972
CSP Gateway: using built-in web server
Client components: all
------------------------------------------------------------------
Do you want to proceed with the installation <Yes>?
Провереяем верность выбранных параметров, и соглашаемся с установкой. Дожидаемся завершения установки.
Starting up Cache...
Once this completes, users may access Cache
Starting CACHE
using 'cache.cpf' configuration file
Automatically configuring buffers
Allocated 351MB shared memory: 256MB global buffers, 24MB routine buffers
Creating a WIJ file to hold 31 megabytes of data
This copy of Cache has been licensed for use exclusively by:
Cache Evaluation
Copyright (c) 1986-2014 by InterSystems Corporation
Any other use is a violation of your license agreement
You can point your browser to http://ift.tt/1fZOzkI
to access the management portal.
Installation completed successfully
Теперь мы можем войти в терминал Caché командой:
$ csession cache
А в портал управления Caché по ссылке http://localhost:57772/csp/sys/UtilHome.csp
Запуск и остановка Caché выполняется командами:
$ ccontrol start cache
$ ccontrol stop cache
последний параметр — это имя инстанса, который мы указали при установке.
GlobalsDB
Распаковываем tar.gz дистрибутив GlobalsDB.
$ mkdir globals_2013.2.0.350.0_unix
$ tar -zxf globals_2013.2.0.350.0_unix.tar.gz -C ./globals_2013.2.0.350.0_unix
Запускаем установку:
$ cd ./globals_2013.2.0.350.0_unix/kit_unix_globals/
$ ./installGlobals
Enter the number for your system:
Нам предлагают ввести номер нашей системы из списка, но выбора нет. Это связано с тем, что установка производится на CentOS, такая же проблема может возникнуть при установке на Ubuntu версии отличной от 11.04, так как в коде установщика есть жесткая привязка к номеру версии. Для решения этой проблемы применим патч. Создайте файл в текущей папке с именем cplatname.patch
$ nano cplatname.patch
и содержимым:
--- cplatname 2013-05-02 17:50:01.000000000 -0700
+++ cplatname.new 2014-04-05 11:43:21.676624274 -0700
@@ -114,13 +114,13 @@
distName=`cat /etc/issue | cut -f1 -d" "`
version=`cat /etc/issue | cut -f2 -d" " | cut -f1-2 -d"."`
proc=`uname -m`
- if [ "$distName" = "Ubuntu" -a "$version" = "11.04" -a "$proc" = "x86_64" ] ; then
+ if [ "$distName" = "Ubuntu" -a "$proc" = "x86_64" ] ; then
plat="lnxsusex64"
fi
fi
if [ -f /etc/redhat-release ]
then
- grep -P 'Red Hat Enterprise Linux .* release 6' /etc/redhat-release > /dev/null 2>&1
+ grep -P '.* release 6' /etc/redhat-release > /dev/null 2>&1
if [ $? = 0 ]
then
proc=`uname -m`
можно скачать с GitHubGist
применим новый патч, он решит проблему как для CentOS, так и для Ubuntu.
$ patch < cplatname.patch
Пробуем повторно запустить установку:
$ ./installGlobals
Installing Globals for Red Hat Enterprise Linux 6 (x64)
Enter destination directory name for this installation.
Directory :
Отлично, теперь работает, можно устанавливать. В отличии от Caché, здесь установщик от нас попросит только путь установки, и после этого сразу установит и запустит установленный GlobalsDB.
Можно войти в терминал GlobalsDB:
$ cd /opt/globalsdb/mgr/
$ ../bin/cache -s ./
^^/opt/globalsdb/mgr/>w $zv
Globals for UNIX (Red Hat Enterprise Linux for x86-64) 2013.2 (Build 350U) Thu May 2 2013 19:28:54 EDT
Запуск и остановка сервера GlobalsDB выполняется командами, в подпапке mgr, где был установлен GlobalsDB:
$ cd /opt/globalsdb/mgr/
$ ./startGlobals
$ ./stopGlobals
При необходимости можно указать размер буфера глобалов, например 1024MB
$ ./startGlobals memory=1024
3. Автоматический запуск и остановка при загрузке и выключении машины.
«Из коробки» нет готового решения по автоматическому запуску и останову СУБД InterSystems на Linux, что справедливо как для Caché так и для GlobalsDB.
Caché
Для управления запуском и остановкой Caché, нашел на github скрипт от unix_junkie
качаем и устанавливаем его:
$ wget http://ift.tt/1envxRi
$ cp cache /etc/init.d/cache
$ chown root:root /etc/init.d/cache
$ chmod 755 /etc/init.d/cache
теперь нужно активировать службу cache. Так это можно сделать в CentOS.
$ chkconfig --add cache
$ chkconfig --list cache
cache 0:off 1:off 2:off 3:on 4:off 5:on 6:off
А так в Ubuntu.
update-rc.d cache defaults
Замечу, что служба зависит от другой службы InterSystems, для которой такой скрипт все таки есть, это служба ISCAgent. И если она остановлена то Caché не запустится. Такое может быть после остановки Caché.
GlobalsDB
Скрипт который подходит для Caché не подойдет для GlobalsDB. Поэтому могу предложить свой вариант, взять его можно здесь.
Скрытый текст
#!/bin/bash
#
## Example of /etc/sysconfig/globalsdb
#
## Globals home directory
# GLOBALS_HOME=/opt/globalsdb
#
## Configure MB of database buffers (default=256)
# MEMORY=1024
#
### BEGIN INIT INFO
# Provides: GlobalsDB
# Required-Start:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Starts GlobalsDB
# Description: Starts GlobalsDB
### END INIT INFO
. /etc/rc.d/init.d/functions
[ -f /etc/sysconfig/globalsdb ] && . /etc/sysconfig/globalsdb
if [ "$GLOBALS_HOME" ]; then
if [ ! -d "$GLOBALS_HOME/mgr" ]; then
echo "$GLOBLAS_HOME/mgr directory not found!" >&2 ; exit 1
fi
cd $GLOBALS_HOME/mgr
else
echo "GLOBALS_HOME is empty" >&2 ; exit 1
fi
mgrdir=`pwd`
start() {
echo -n "Starting Globals in $mgrdir:"
args=""
test "$MEMORY" && args=$args' memory='$MEMORY
./startGlobals quietly $args 1>/dev/null 2>/dev/null
status=$?
if [ $status -eq 0 ] ; then
success
else
failure
fi
echo
return $status
}
stop() {
echo -n "Stopping Globals in $mgrdir: "
./stopGlobals 1>/dev/null 2>/dev/null
status=$?
if [ $status -eq 0 ] ; then
success
else
failure
fi
echo
return $status
}
restart() {
stop
status=$?
if [ $status -ne 0 ] ; then
return $status
fi
start
status=$?
if [ $status -ne 0 ] ; then
return $status
fi
return ${status}
}
status() {
../bin/cache -s . -cV 1>/dev/null 2>/dev/null
status=$?
case $status in
225) echo "Globals in $mgrdir is stopped"
exit 1
;;
*)
echo "Globals in $mgrdir is running"
exit 1
;;
esac
return 0
}
usage() {
echo "Usage: `basename $0` {start|stop|restart|status|help}"
return 0
}
if [ $# -ne 1 ]
then
usage
exit 1
fi
case "$1" in
start)
start
exit $?
;;
stop)
stop
exit $?
;;
restart)
restart
exit $?
;;
status)
status
exit $?
;;
help)
usage
exit $?
;;
*)
usage
exit 1
;;
esac
$ wget http://ift.tt/1envxRo
$ chmod 755 globalsdb
$ chown root:root globalsdb
$ cp globalsdb /etc/init.d/globalsdb
Нужно подготовить файл с настройками
# путь к установленному GlobalsDB, тот что указывали при установке
$ echo "GLOBALS_HOME=/opt/globalsdb" > /etc/sysconfig/globalsdb
# Размер буфера глобалов в мегабайтах, если вас не устраивает значение по умолчанию в 256МБ
$ echo "MEMORY=1024" >>/etc/sysconfig/globalsdb
Теперь можно включить сервис. CentOS.
$ chkconfig --add globalsdb
$ chkconfig --list globalsdb
globalsdb 0:off 1:off 2:off 3:on 4:off 5:on 6:off
Ubuntu
update-rc.d globalsdb defaults
4. Удаленный доступ к терминалу Caché
Теперь о возможности подключится к терминалу Caché с удаленной машины. Конечно, имея telnet или ssh доступ к машине, можно после авторизации запускать
csession
. Но такой путь не всем и не всегда может быть удобен. Я рассмотрю вариант как сделать удаленное подключение сразу в терминал Caché.Например у вас уже есть настроенный доступ по ssh/telnet. Тогда мы можем создать пользователя у которого в качестве оболчки будет терминал Caché. Создаем файл например с именем
/usr/bin/cachesession
и содержимым, в котором нужно указать верный инстанс, и остальные параметры на свой вкус. Вплоть до возможности запуска сразу какой-нибудь рутины.#!/bin/bash
/usr/bin/csession cache -U USER
Делаем его исполняемым и проверяем, простым запуском, должны попасть в терминал.
$ chmod 755 /usr/bin/cachesession
$ chown root:root /usr/bin/cachesession
Теперь создаем пользователя
$ useradd -s /usr/bin/cachesession cachesession
$ passwd cachesession
теперь при авторизации по ssh/telnet, под пользователем cachesession мы сразу попадем в Caché.
На этом все, надеюсь статья окажется полезной.
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий