Комментарии

Галерея

Опрос

Из каких стран идет больше всего спама, попыток взлома на ваши серверы?:

Виртуализация: «1C» в среде Solaris

Аватар пользователя maximum

Практика: «1С:Предприятие 8.1» в контейнере Solaris
В качестве практического задания попробуем подготовить контейнер, который позволил бы запускать в среде Solaris программы для Linux, и прежде всего «1С: Предприятие 8.1». Несмотря на то что данная версия создавалась в расчете на Linux, она способна функционировать в контейнере. Из-за ограниченности места в журнале мы опускаем некоторые детали и рекомендации (действуйте на свой страх и риск).

Инсталляция «1С:Предприятия» в Solaris предполагает наличие некоторых аппаратных и программных средств. Это прежде всего сервер с x86-совместимым процессором (AMD или Intel). В настоящее время компания «1С» выпускает версию пакета «1С:Предприятие» для платформы Linux, его мы и будем использовать, и, разумеется, нам потребуется лицензионная версия (обратитесь на сайт компании «1С», с тем чтобы узнать условия ее получения). Для создания в Solaris соответствующей зоны потребуется Solaris версии не ниже 8/07 или Nevada 61. На момент написания статьи на сайте www.opensolaris.org был доступен для загрузки дистрибутив Nevada 65. Дистрибутив Solaris 8/07 должен появиться в ближайшее время. Естественно, необходимо иметь достаточно дискового пространства, предполагая, что операционная система Solaris уже установлена, для создания зоны «1С:Предприятия» достаточно 1–2 Гбайт.

Подсистема, ответственная за управление зонами Linux (как уже отмечалось), называется BrandZ, в ней эмулируется ядро Linux версии 2.4.21 с системной библиотекой glibc 2.3.

В качестве хранилища данных используется PostgreSQL. Если предположить, что у вас не установлен PostgreSQL, и учесть, что необходима версия PostgreSQL с некоторыми модификациями, сделанными «1С», то потребуется компилятор SunStudio 11. Он входит во все последние дистрибутивы Solaris, но убедитесь, что он установлен.

Авторы статьи предполагают, что читатель знаком с настройкой и созданием базы «1С», и не касается этих вопросов в статье (правда, в конце статьи приведено несколько полезных ссылок по настройке).

Начинаем с настройки BrandZ-зоны [1] («Linux окружение для 1C»). Для установки зоны необходимо выделить статический IP-адрес (в примере 192.168.0.85), имя зоны должно определяться прямой и обратной записью в DNS (в примере test1c.mycompany.ru) для этого IP-адреса.

Для зоны целесообразно также создать отдельную файловую систему ZFS (подробнее см. PC Magazine/RE, 6/2007). Вводим команды:

# zfs create disk/zones/test1c
# zfs list

Вывод:

NAME USED AVAIL REFER MOUNTPOINT
disk 55.2G 11.8G 30.5K /disk
disk/zones 1.54G 11.8G 27.5K /zones
disk/zones/test1c 24.5K 11.8G 24.5K
/zones/test1c

и задаем права доступа:

# chmod 700 /zones/test1c

Создание отдельной файловой системы на ZFS можно пропустить, тогда система сама создаст каталог (но не файловую систему) для установки.

Затем необходимо настроить зону для инсталляции «1С:Предприятия».

# zonecfg -z test1c
test1c: No such zone configured
Use 'create' to begin configuring a new
zone.
zonecfg:test1c> create -t SUNWlx
zonecfg:test1c> set zonepath=/zones/test1c
zonecfg:test1c> add net
zonecfg:test1c:net> set address=192.168.0.85/24
Далее необходимо указать имя физического интерфейса Ethernet, которому будет назначен данный IP-адрес:
zonecfg:test1c:net> set physical=e1000g0
zonecfg:test1c:net> end
Очень удобно смонтировать в зоне для «1С» каталог с дистрибутивами (/disk/distr/1C) из глобальной зоны
zonecfg:test1c> add fs
zonecfg:test1c:fs> set
special=/disk/distr/1C
zonecfg:test1c:fs> set dir=/distr
zonecfg:test1c:fs> set type=lofs
zonecfg:test1c:fs> end
если необходимо запускать зону одновременно со стартом глобальной зоны:
zonecfg:test1c> set autoboot=true
zonecfg:test1c> verify
zonecfg:test1c> commit
zonecfg:test1c> exit

Зона настроена. Иными словами, это означает, что был создан конфигурационный файл, но пока еще не созданы каталоги и файлы зоны. Теперь надо ее «установить». Для установки зоны используем дистрибутивный пакет CentOS (его можно загрузить с http://opensolaris.org/os/community/brandz/downloads), нам нужен файл centos_fs_image.tar.bz2 (399 Мбайт), сохраняем его в каталог /disk/distr/1C.

# zoneadm -z test1c install -d /disk/distr/1C/centos_fs_image.tar.bz2
Installing zone 'test1c' at root directory
'/zones/test1c'
from archive
'/disk/distr/1C/centos_fs_image.tar.bz2'
This process may take several minutes.
Setting up the initial lx brand environment.
System configuration modifications complete.
Setting up the initial lx brand environment.
System configuration modifications complete.
Installation of zone 'test1c' completed successfully.
Details saved to log file:
"/zones/test1c/root/var/log/test1c.install.
832.log"

Весь процесс займет пару минут, по завершении убеждаемся, что зона создана успешно:

# zoneadm list -iv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- test1c installed /zones/test1c lx shared,
и запускаем зону. Для тех, кому интересно наблюдать за процессом запуска в окне терминала, даем команду:
# zlogin -C test1c
в другом — запускаем зону:
# zoneadm -z test1c boot

В первом окне будет выдан запрос на вход в зону, как будто вы подключились с консоли. Войти в зону можно под именем root и с паролем root

bash-2.05b# uname -a
Linux test1c 2.4.21 BrandZ fake linux i686
athlon i386 GNU/Linux

Впрочем, и по ssh пользователю root доступ разрешен.

Далее заполняем конфигурационный файл /etc/resolv.conf
domain mycompany.ru
nameserver 192.168.0.1,
а также в файле /etc/nsswitch.conf изменяем строку
hosts: files nis dns
на
hosts: files dns
изменяем файл /etc/sysconfig/network
NETWORKING="yes"
HOSTNAME=test1c
Инсталлируем «1C:Предприятие». Это самый простой пункт. Сначала необходимо создать каталог /home, затем инсталлировать пакеты из каталога с дистрибутивом (/distr):
# rpm -i 1C*rpm
По завершении процесса программа установлена и запущена, проверяем:

bash-2.05b# ps ax|grep opt
PID TTY STAT TIME COMMAND
2915 ? S 0:00 /opt/1C/v8.1/i386/ragent
-daemon
2917 ? S 0:00 /opt/1C/v8.1/i386/rmngr
-port 1541
2927 ? S 0:00 /opt/1C/v8.1/i386/rphost
-range 1560:1591 -reghost test1c
-regport 154

Установка PostgreSQL. Так как пакет PostgreSQL доступен в исходных текстах, есть смысл установить его в глобальную зону Solaris, например в каталог /disk/psql/. С сайта ftp://ftp-archives.postgresql.org необходимо загрузить исходные тексты PostgreSQL 8.1.5, а именно файл postgresql-8.1.5.tar.bz2.

Распаковываем его, находясь в каталоге /disk/psql/
# bzip2 -dc postgresql-8.1.5.tar.bz2 |
tar xf -
Для использования PostgreSQL с «1С:Предприятием» необходимо скомпилировать PostgreSQL, добавив разработанный компанией «1С» набор обновлений. Его можно найти на сайте компании «1С» (www.1c.ru), загружаем файл 1c_FULL_81-0.12.patch

Для установки набора исправлений и сборки PostgreSQL понадобятся также готовые пакеты libgcc, gmake и patch. В примере они загружаются командой wget, но можно воспользоваться и любым другим способом.
# wget ftp://ftp.sunfreeware.com/
pub/freeware/intel/10/
libgcc-3.4.6-sol10-x86-local.gz
# gzip -d libgcc-3.4.6-sol10-x86-local.gz
# pkgadd -d libgcc-3.4.6-sol10-x86-local
SMClgcc346
# wget ftp://ftp.sunfreeware.com/
pub/freeware/intel/10/
make-3.81-sol10-x86-local.gz
# gzip -d make-3.81-sol10-x86-local.gz
# pkgadd -d make-3.81-sol10-x86-local
SMCmake
# wget ftp://ftp.sunfreeware.com/
pub/freeware/intel/10/
patch-2.5.4-sol10-x86-local.gz
# gzip -d patch-2.5.4-sol10-x86-local.gz
# pkgadd -d patch-2.5.4-sol10-x86-local
SMCpatch
Устанавливаем обновление на PostgreSQL
# cd postgresql-8.1.5/
# /usr/local/bin/patch -p0 <
../1c_FULL_81-0.12.patch
Задаем переменные окружения и собираем PostgreSQL (этот этап самый длительный).
# PATH=/opt/SUNWspro/bin:/usr/bin:/
usr/sbin:/usr/sfw/bin:/usr/local/bin:/
usr/ccs/bin
# export CC=/opt/SUNWspro/bin/cc
# export CFLAGS=-xO5
# export LDFLAGS=-lm
# ./configure —prefix=/disk/psql
-without-readline
# make
# make install
# cd contrib
# gmake
# gmake install
# cd mchar
На этом этапе необходимо отредактировать последнюю строку файла Makefile, где устанавливается переменная SHLIB_LINK так, чтобы она выглядела следующим образом:
SHLIB_LINK += -L/usr/local/lib -licuuc
# gmake
# gmake install
# cd ../fulleq
# gmake
# gmake install
# cd ../fasttrun
# gmake
# gmake install
Настраиваем PostgreSQL
# cd /disk/psql/
# mkdir data
# chown postgres data
# su — postgres
$ *LANG=ru_RU.UTF-8 **/disk/psql/bin/initdb
-D /disk/psql/data*
На экран будет выведено следующее сообщение:
Success. You can now start the database
server using:
/disk/psql/bin/postmaster -D /disk/psql/data
or
/disk/psql/bin/pg_ctl -D /disk/psql/data -l /disk/psql/data/logfile start
Необходимо также изменить некоторые настройки в файле /disk/psql/data/postgresql.conf:
default_with_oids = on
stats_row_level = off
listen_addresses = '*'
В конец файла /disk/psql/data/pg_hba.conf добавляем
host all all 0.0.0.0/0 md5
Запускаем PostgreSQL от имени пользователя postgres и устанавливаем пароль администратора в примере postgres
$ LANG=ru_RU.UTF-8 /disk/psql/bin/pg_ctl
-D /disk/psql/data -l /disk/psql/data/
logfile start
$ cd /disk/psql/bin/
$ ./psql -h localhost postgres postgres
Welcome to psql 8.1.5, the PostgreSQL
interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute
query
\q to quit
postgres=# ALTER USER postgres PASSWORD
'postgres';
Все. Система готова к созданию вашей базы.

Создание базы. После того как сервер «1С:Предприятия» подготовлен, на клиентском Windows-компьютере можно запускать инсталляционную программу «Конфигуратор 1С» и создавать соответствующие базы данных пакета «1С:Предприятие».

В качестве сервера «1С:Предприятия» необходимо указать test1c, а сервера базы данных PostgreSQL — сервер, где установлена СУБД PostgreSQL.
Автор: Павел Анни, Роман Иванов журнал PC Magazine