Меню сайта
Мини-чат
Наш опрос
Оцените мой сайт
Всего ответов: 1
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Поиск
Календарь
«  Март 2013  »
Пн Вт Ср Чт Пт Сб Вс
    123
45678910
11121314151617
18192021222324
25262728293031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Среда, 08.04.2026, 10:49ГлавнаяРегистрацияВход
    Мой сайт
    Приветствую Вас Гость | RSS
    Главная » 2013 » Март » 21 » Настройка терминального сервера под Ubuntu Linux и свя
    08:13
     

    Настройка терминального сервера под Ubuntu Linux и свя

    Настройка терминального сервера под Ubuntu Linux и связки 1С+RX@Etersoft+Wine@Etersoft+PostgreSQL for 1C+Сервер 1С 8.2+Apache

    Задача:

    • Настроить сервер 1С 8.2 на Linux,

    • Использовать СУБД PostgreSQL, создать базу Postgres в каталоге /bases

    • Обеспечить терминальный доступ к серверу и запуск 1С в терминальном сеансе, подобно серверу терминалов Windows

    • Обеспечить Web-доступ к базе 1С 8.2

    Имеем:

    • Локальная сеть 192.168.1.0/255.255.255.0

    • Железный сервер, само собой.

    • Ключ от сервера "1С:Предприятие 8" 32-х битный

    • Платформа 1С:Предприятие 8

    • Многопользовательский ключ от "1С:Предприятие 8" на 20 пользователей

    • Диск 1С:ИТС DVD

    • Локальный репозиторий Ubuntu 10.04 у нас в офисе по адресу ftp://bainov/os/linux/ubuntu/main-repo
      Локальное зеркало значительно ускоряет установку.
      У вас должен быть другой путь к репозиторию. Например, стандартный:
      http://ru.archive.ubuntu.com/ubuntu/

    Поехали:

    1. Установить Linux Ubuntu Server 32 битный.

    Почему именно 32-битный Linux? Т.к. сервер 1С у нас 32-битный, то на 64-битной платформе он откажется работать.

    В случае, если в нашем распоряжении ключ от 64-битного сервера 1С, то следует устанавливать 64-битную ОС. На 32-битной ОС 32-битный сервер будет работать с 64-битным ключом, но возможностей 64-битной версии конечно же не предоставит.

    2. Настроить сетевой адрес:
    правим файл /etc/network/interfaces
    выставим ему адрес 192.168.1.210 временно

    Пример:

    auto lo iface lo inet loopback auto eth1 iface eth1 inet static address 192.168.1.210 netmask 255.255.255.0 network 192.168.1.0 gateway 192.168.1.1

    3. правим файл /etc/hosts
    делаем так, чтобы имя bainov указывало на адрес 192.168.1.9
    С этого адреса будем делать апдейт, т.к. на нем лежит копия репозитория убунты и доступна через анонимный ftp

    Пример:
    127.0.0.1 localhost 192.168.1.9 bainov.rbsoft.local bainov # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts

    4. При настройке внутри нашей сетки не трогаем файл /etc/resolv.conf
    Для переноса сервера в сеть клиента надо будет настроить уже под их сеть
    Пример:

    # Generated by NetworkManag nameserver 192.168.1.1

    5. настраиваем список источников ПО для дальнейшей установки пакетов и апдейтов.
    Для ускорения работы делаем это не с официальных серверов, а с нашего внутреннего репозитория. (только при работе в офисе РБ-Софт! Не трогаем, если работаем со стандартным репозиторием.)

    nano /etc/apt/sources.list #RBSoft repositories deb ftp://bainov/os/linux/ubuntu/main-repo lucid main restricted universe multiverse deb ftp://bainov/os/linux/ubuntu/main-repo lucid-updates main restricted universe multiverse deb ftp://bainov/os/linux/ubuntu/main-repo lucid-security main restricted universe multiverse

    Записываем файл: Ctrl-X и на запрос о записи файла отвечаем Y

    Не забываем, что репозиторий здесь указан наш, локальный. Если ставим не в офисе "РБ-Софт", то пишем вместо ftp://bainov/os/linux/ubuntu/main-repo например адрес общедоступного репозитория http://ru.archive.ubuntu.com/ubuntu/ или другого локального репозитория.

    Даем команду на апдейт:
    Обновление списка пакетов из наших источников

    apt-get update

    Обновление пакетов установленной системы из новых источников

    apt-get upgrade

    6. Устанавливаем наш любимый Midnight Commander:

    apt-get install mc

    ставим виндовые шрифты:

    aptitude install ttf-mscorefonts-installer

    7. Будем делать из нашего сервера аналог терминального сервера Windows с крутящимся внутри 1С. Поэтому нам понадобится графическая оболочка.
    Поставим Gnome:

    apt-get install ubuntu-desktop

    8. Закачиваем с сервера http://www.etersoft.ru продукты RX@Etersoft и WINE@Etersoft SQL
    Первый из низ реализует терминальный сервер под Линукс
    Второй - позволяет запускать 1С под Линукс и SQL приложения

    Для закачки софта на сервер я использовал ftp (proftpd), поднятый на моей рабочей машине.
    То есть выкачиваю софт с инета и кладу в папку ftp-сервера на своей машине. На сервере, зайдя по ssh запускаю mc и пользуясь встроенным в него ftp-клиентом выкачиваю софт со своей машинки на сервер.

    9. Предварительная настройка SSH-сервера
    Изменяем файл /etc/ssh/sshd_config
    В ssh-сервере должна включена авторизация по ключу (PubkeyAuthentication yes).
    Если вы используете директиву AllowUsers в Вашем ssh-сервере, добавьте туда пользователя nx.
    Если используется авторизация с помощью ssh-сервера, а не с помощью passdb, необходимо также включить авторизацию по паролю (PasswordAuthentication yes)

    делаем рестарт сервера ssh:

    /etc/init.d/ssh restart

    логинимся заново к нашему серверу уже на 32 порт:

    ssh -l administrator -p 32 192.168.1.210

    10.Установка freenx-server
    Я записал скачанные с Etersoft пакеты в каталог /etc/install/Etersoft

    apt-get install expect

    Переходим в каталог с софтом для терминального сервера

    cd /install/Etersoft/TermServer/RX

    Ставим то, что там есть:

    dpkg -i freenx-server*.deb nx*.deb

    Производим инициализацию:

    nxsetup --setup-nomachine-key --install

    команда выдает кучу предупреждений:

    ----> Testing your nxserver configuration ... Warning: Invalid value "KDE_PRINTRC=/root/.kde/share/config/kdeprintrc". ENABLE_KDE_CUPS will not work. For root it's normal. Try to run 'nxloadconfig --check' by user. Warning: Warning: Invalid permissions on "/usr/lib/cups/backend/ipp". Valid permissions are 711. Users will not be able to enable printing. Warning: Invalid value "CUPS_ETC=/etc/cups/" Users will not be able to enable printing. Warning: Invalid value "DEFAULT_X_SESSION=/etc/X11/xdm/Xsession" Users might not be able to request a default X session. Warning: Invalid value "COMMAND_START_KDE=startkde" Users will not be able to request a KDE session. Warning: Invalid value "COMMAND_START_CDE=cdwm" Users will not be able to request a CDE session. Warning: Invalid permissions on "/sbin/mount.cifs". Valid permissions are "4711". You'll not be able to use SAMBA. Warning: Invalid permissions on "/sbin/umount.cifs". Valid permission are "4711". You'll not be able to use SAMBA.

    выставляем требуемые права на /sbin/mount.cifs:

    chmod 4711 /sbin/mount.cifs

    и аналогично:

    chmod 4711 /sbin/umount.cifs chmod 711 /usr/lib/cups/backend/ipp chmod 755 /usr/sbin/cupsd

    На сообщения про KDE и CDE забиваем - у нас их не установлено

    Меняем /etc/nxserver/node.conf:

    SSHD_PORT=32 NX_LOG_LEVEL=1 #Это на первое время, чтобы анализировать ошибки

    перeзапускаем сервер:

    nxserver --restart

    При подключении клиента не забываем снять галочку в настройках подключения: Disable encryption of all traffic
    поскольку с описанными здесь настройками соединение у нас будет шифрованным

    11. Устанавливаем WINE Etersoft

    Если стоял до этого родной Wine - удаляем его. Причем смотрим чтобы папочки wine не оставались ни в /etc ни в каталоге пользователя
    Установка ничем не примечательна
    ставим командой dpkg -i wine*.deb

    dpkg -i hasp*.deb dpkg -i font*.deb dpkg -i etercifs*.deb dpkg -i dkms*.deb

    После установки копируем файл лицензии WINE_ETERSOFT.LIC в каталог /etc/wine

    Запускаем под обычным юзером wine
    под рутом не запустится - будет ругаться, причем по английски

    12. Установка 1С

    Заходим терминальным клиентом в графическую оболочку.
    Запускаем терминал
    Включаем загрузку hasp драйвера в wine:

    winecfg

    откроется окно программы
    на закладке "Ключи защиты" будет список поддерживаемых ключей.
    выделяем строку с HASP HL
    жмем кнопку "Загружать"
    жмем ОК

    Втыкаем ключи защиты HASP в сервер
    Они должны распознаться и загореться.

    Копируем дистрибутив 1С в папку wine_c в домашнем каталоге - это теперь диск C для wine-программ

    Включаем программу "Командная строка Wine" или "Менеджер файлов", переходим в каталог с дистрибутивом 1С и запускаем setup.exe
    Далее установка как обычно, за исключением того, что не надо устанавливать драйвер ключа защиты - он уже загружен wine.

    После установки 1С можно запустить, перейдя в меню Приложения/Wine/Программы/1С Предприятие 8.2

    Программа администрирования серверов 1С у меня не запустилась, но 1С 8.2 запустилась в файловом режиме нормально.

    13. Установка сервера PostgreSQL для 1C

    1С предоставляет пакеты для линукс в rpm-пакетах
    Надо переделать в deb-пакеты для установки в наш Ubuntu.

    ставим сначала chkconfig и alien

    apt-get install chkconfig apt-get install alien

    теперь перейдем в каталог с дистрибутивом PostgreSQL от 1С
    у меня длинный путь... у вас может быть короче, если вы положили дистрибутив "поближе"

    cd /install/1c/82/PLATFORM/postgresql/8.4.3-3.1C/linux/i386

    Переделка пакетов:

    alien --scripts --to-deb *.rpm

    ругается error: incorrect format: unknown tag
    установка все равно нормально проходит

    groupadd -g 5026 -o -r postgres useradd -g postgres -o -r -d /var/lib/pgsql -s /bin/bash -c "PostgreSQL Server" -u 5026 postgres

    Переходим в каталог сервера 1С

    cd /install/1c/82/PLATFORM/8.2.11.236/linux/debian/i386

    ставим сервер

    dpkg -i *.deb

    14. Теперь надо сделать ссылки на библиотеки, которые нужны 1с-совскому постгресу , почему то старые

    cd /lib ln -s libreadline.so.5.2 libreadline.so.4 ln -s libncurses.so libtermcap.so.2 ln -s libssl.so.0.9.8 libssl.so.4 ln -s libldap-2.4.so.2 libldap-2.2.so.7 ln -s libldap_r-2.4.so.2 libldap_r-2.2.so.7

    15. Добавляем настройки для postgres

    echo 134217728 >/proc/sys/kernel/shmmax echo 134217728 >/proc/sys/kernel/shmall echo kernel.shmmax=134217728 >>/etc/sysctl.conf echo kernel.shmall=134217728 >>/etc/sysctl.conf /usr/share/locales/install-language-pack en_US

    16. Настройка
    создаем папку для базы данных и даем на нее права

    mkdir /bases mkdir /bases/monroe chown -R postgres:postgres /bases

    17. Теперь сама инициализация

    su postgres initdb -D /bases

    ЗДЕСЬ ВОЗМОЖНА ПРОБЛЕМА:
    Выдается ошибка:

    fgets failure: Победа Программа "postgres" нужна для initdb, но она не найдена в той же директории, что и "/usr/bin/initdb".
    Оказалось, что сообщение выдается из-за того, что postgres не может запуститься из-за отсутствия необходимой библиотеки.
    пытаемся запускать его командой postgres

    Выдается ошибка:

    postgres: error while loading shared libraries: libldap-2.2.so.7: cannot open shared object file: No such file or directory

    В нашей системе присутствует более новая библиотека libldap-2.4.so.2

    Делаем вывод: надо сделать символическую ссылку на необходимое имя библиотеки:

    ln -s libldap-2.4.so.2 libldap-2.2.so.7

    Эту проблему я уже учел выше при создании ссылок. Но в будущем могут быть и другие подобные проблемы.
    В общем решение такое:
    1)запускаем постгрес командой,
    2)смотрим чего ему не хватает,
    3)находим у нас в системе файл с текущей версией
    4)делаем с него символическую ссылку на тот файл, который нужен 1Совскому постгресу

    Повторяем до тех пор, пока не получим при инициализации такой текст:

    postgres@nxsrv:/usr/lib$ initdb -D /bases Файлы, сопутствующие этой системе баз данных, будут принадлежать пользователю "postgres". Этот пользователь также должен быть владельцем процесса сервера. Кластер баз данных будет инициализирован с локалью ru_RU.UTF-8. Кодировка базы по умолчанию установлена в UTF8. Конфигурация полнотекстового поиска по умолчанию установлена в "russian". исправление прав на существующую директорию /bases ... ок создание поддиректорий ... ок выбирается значение по умолчанию для max_connections ... 100 выбирается значение по-умолчанию для shared_buffers ... 32MB создание конфигурационных файлов ... ок создание базы template1 в /basesbase/1 ... ок инициализация pg_authid ... ок инициализация зависимостей ... ок создание системных представлений ... ок загрузка системных описаний объектов ... ок создание конверсий ... ок создание словарей ... ок установка привилегий для встроенных объектов ... ок создание информационной схемы ... ок сборка мусора в базе template1 ... ок копирование template1 в template0 ... ок копирование template1 в postgres ... ок ВНИМАНИЕ: используется аутентификация "trust" для локальных подключений. Вы можете её поменять, отредактировав pg_hba.conf или используя опцию -A, при следующем выполнении initdb. Успех. Вы теперь можете запустить сервер баз данных: postgres -D /bases или pg_ctl -D /bases -l logfile start

    18. стартуем postgres

    pg_ctl -D /bases -l /bases/pg.log start

    19. Сервер 1с запускается обычно

    /etc/init.d/srv1cv81 start

    Проверяем

    netstat -atu

    если вот такие строки видно, то значит все должно быть хорошо.

    tcp 0 0 *:1560 *:* LISTEN tcp 0 0 *:postgresql *:* LISTEN tcp 0 0 *:1561 *:* LISTEN tcp 0 0 *:1562 *:* LISTEN tcp 0 0 *:1563 *:* LISTEN

    20. Запуск утилиты конфигурирования сервера 1С

    cd /opt/1C/v8.2/i386/utils ./config_server

    ругается:

    No truetype conversion utility found! Please install ttf2afm or ttf2pt1!

    скачиваем и устанавливаем пакет ttf2pt1_3.4.4-1.1_i386.deb . Для 64 битной системы можно взять здесь: ftp://rbsoft.ru/1c/linux/ttf2pt1_3.4.4-1.4_amd64.deb

    dpkg -i ttf2pt1_3.4.4-1.1_i386.deb

    опять запускаем ./config_server
    если призадумалось - значит запустилось

    после минуты работы программа молча завершается.

    21. Делаем скрипт запуска:

    nano /etc/init.d/postgresql

    Копируем туда текст скрипта:

    #!/bin/sh case $1 in restart) sudo -u postgres -H pg_ctl -D /bases -l /bases/pg.log stop sudo -u postgres -H pg_ctl -D /bases -l /bases/pg.log start ;; start) sudo -u postgres -H pg_ctl -D /bases -l /bases/pg.log start ;; stop) sudo -u postgres -H pg_ctl -D /bases -l /bases/pg.log stop ;; *) echo start|stop|restart return 1; ;; esac

    Жмем Ctrl-X, сохраняем

    Делаем файл исполняемым

    22. И последний штрих - настраиваем автозапуск скриптов

    update-rc.d postgresql defaults update-rc.d srv1cv82 defaults

    23. останавливаем сервер SQL

    /etc/init.d/postgresql stop

    стартуем сервер SQL

    /etc/init.d/postgresql start

    останавливаем сервер 1С

    /etc/init.d/srv1cv82 stop

    стартуем сервер 1С

    /etc/init.d/srv1cv82 start

    24. делаем рестарт железного сервера

    reboot

    25. после перезапуска проверяем все ли взлетело автоматом.

    netstat -atn|grep 0.0.0.0:15 Должны увидеть что типа:
    root@nxsrv:/install/1c/82/PLATFORM/8.2.11.236/linux/debian/ubuntu_addon# netstat -atn|grep 0.0.0.0:15 tcp 0 0 0.0.0.0:1541 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1560 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1561 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1562 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1563 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1564 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1565 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1566 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1567 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1568 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1569 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1540 0.0.0.0:* LISTEN

    если так, то идем дальше, нет, ищем ошибки и устраняем.

    ps xau | grep post

    Далее необходимо задать пароль для пользователя, который будет соединяться с нашей БД. Для этого в сначала в файл /bases/monroe/pg_hba.conf следует добавить строку local all all trust - доверие ко всем локальным пользователям, перезагрузить сервер postgresql, а затем выполнить команду

    service postgresql restart psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD 'ваш пароль'"

    26. Теперь необязательное редактирование postgresql.conf .
    Значения , устанавливаемые в этом файле зависят от многих факторов и собственно служат для настройки оптимальной производительности.

    nano /bases/monroe/postgresql.conf listen_addresses = '127.0.0.1'

    если соединения с базой будут только с локального хоста, то надежнее сделать именно так, чтобы порт 5432 слушался только на адресе 127.0.0.1
    если же соединения не только с локального хоста - оставить значение по умолчанию

    fsync = off

    значение on сильно снижает производительность, поскольку все транзакции непосредственно пишутся на жесткий диск без использования кэширования, но повышается надежность.
    Значение off есть смысл устанавливать, когда установлены надежные диски и надежный же UPS .

    effective_cache_size = 2048MB

    На нашем сервере 8Гб ОЗУ, но система 32 битная.
    Поэтому я предположил, что этот параметр надо выставить в половину доступного ОЗУ (4Гб), как рекомендует 1С для постгреса 8.2

    work_mem = 16MB

    Насколько я понимаю, этот параметр зависит от среднего размера таблиц, в любом случае, для тонкой настройки надо тестировать на конкретном сервере с конкретной базой.

    26. Запускаем на своей машине консоль управления серверами 1С
    Создаем администраторов кластера серверов
    При создании базы данных на сервере 1С будет запрос авторизации. Необходимо будет авторизоваться администратором сервера 1С.

    27. Создаем новую базу данных 1С.
    Запускаем 1С на своей машине, создаем базу.

    Видим ошибку:

    Лечение:
    Входим рутом на наш сервер Linux и даем команду:

    locale-gen en_US

    Пробуем снова создание базы... Получаем работающую базу.
    Я сначала создавал пустую базу. Загрузил в нее базу из файла выгрузки 1С (dt-файл)

    28. Установка http-сервера apache

    Реализовываем доступ к 1С из интернет-браузера
    Ставим веб-сервер апач:

    apt-get install apache2

    все, апач установлен и уже работает ,
    проверяем зайдя браузером по адресу http://192.168.1.210

    если вэб-сервер не планируется использовать для других целей, то он готов к работе с 1с.

    Запомним строку подключения Srvr="nxsrv";Ref="base1c";

    Идем в любимый терминал под рутом.

    mkdir /var/www/base1c /opt/1C/v8.2/i386/webinst -apache22 -wsdir monroe -dir '/var/www/base1c/' -connStr 'Srvr="nxsrv";Ref="base1c";' -confPath /etc/apache2/httpd.conf

    Убедимся в правильности внесенных изменений

    nano /etc/apache2/httpd.conf LoadModule _1cws_module "/opt/1C/v8.2/i386/wsap22.so" # 1c publication Alias "/base1c" "/var/www/base1c/" <Directory "/var/www/base1c/"> AllowOverride None Options None Order allow,deny Allow from all SetHandler 1c-application ManagedApplicationDescriptor "/var/www/base1c/default.vrd" </Directory>

    Теперь посмотрим что вписалось в файле default.vrd

    nano /var/www/base1c/default.vrd <?xml version="1.0" encoding2="UTF-8"?> <point xmlns="http://v8.1c.ru/8.2/virtual-resource-system" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" base="/base1c" ib="Srvr=&quot;nxsrv&quot;;Ref=&quot;base1c&quot;;"/> chown -R www-data:www-data /var/www/base1c

    Отключаем в браузере блокировку всплывающих окон, иначе мы ничего не увидим. Вносим сайт в список довереных в Explorer

    Рестартуем апач

    /etc/init.d/apache2 restart

    и заходим браузером на адрес http://192.168.1.210

    получаем

    Теперь желательно провести работы:

    • каталог /bases примонтировать к отдельному тому LVM
    • написать скрипт для автоматического резервного копирования тома по расписанию в течение рабочего дня
    • написать скрипт резервного копирования средствами СУБД
    • смоделировать ситуации сбоя и восстановления базы данных
    • провести нагрузочное тестирование сервера при 30 и 40 активно работающих пользователях
    Просмотров: 6678 | Добавил: ittewhe | Рейтинг: 0.0/0
    Всего комментариев: 0

    Бесплатный конструктор сайтовuCozCopyright MyCorp © 2026