1C÷Linux÷PostgreSQL÷Apache

Дружим 1С с Линуксом ИЛИ Установка окружения для работы с 1С на Линуксе под Постгресом и Апачем.

Платформа 1С в последнее время бурно развивается, приобретая много различных функций, в том числе поддержку различных операционных систем (ОС). Возможность установки сервера 1С на линукс существует еще с платформы 8.2 и даже на данном портале можно найти множество статей и руководств по данной тематике. Но все же я опишу процесс подготовки тестового (или даже боевого) сервера на линуксе в современных реалиях.

Пару лет вынашивал идею написать эту статью, но никак не брался за нее, а в свете текущих политических тенденций за импортозамещение данная тема становится все актуальнее.  На момент написания статьи актуальная платформа 8.3.11. Сразу скажу, что здесь будут только основы для подготовки окружения без настройки всяких оптимизаций, безопасности и прочего. Минимальные знания ОС GNU/Linux необходимы. Картинок в статье не будет, так как вся дальнейшая работа будет происходить в черной-черной консоли. Ну, помчали…

 

1) Установка GNU/Linux

За основу серверной операционной системы возьмем свежий 64-х разрядный дистрибутив Ubuntu 17.10.1 (https://www.ubuntu.com/download/server). Устанавливаем операционную систему на физический или виртуальный сервер (я использовал виртуализацию на основе VirtualBox (https://www.virtualbox.org/wiki/Downloads)). Думаю, что с установкой проблем не должно возникнуть, если не понимаете, соглашайтесь с установщиком.

После входа в систему обновим ее:

# apt update && apt upgrade -y && reboot

Здесь и далее команды, начинающиеся с ‘#’ выполняются под суперпользователем, а с ‘$’ — под текущим пользователем с ограниченными правами.

Можно удалить старое ядро и исходники:

# apt purge linux-image-4.13.0-21
# apt purge linux-headers-4.13.0-21

Если вы проделываете установку на VirtualBox, то необходимо установить дополнения гостевой ОС:

а) установим необходимые пакеты для дальнейшей сборки дополнений:

# apt install -y dkms build-essential

б) подключим гостевые дополнения и перезагрузимся:

# mount /dev/cdrom /media/cdrom
# cd /media/cdrom
# ./VBoxLinuxAdditions.run
# reboot

в) (необязательный) подключим шару для простой возможности обмена файлами между хостом и гостем и перезайдем в систему:

# usermod -G vboxsf -a ИмяПользователя
$ logout

Теперь для удобства русифицируем консоль (сменим шрифт):

# nano /etc/default/console-setup

Должно быть так:

    ACTIVE_CONSOLES="/dev/tty[1-6]"
    CHARMAP="UTF-8"
    CODESET="guess"
    FONTFACE="Fixed"
    FONTSIZE="8×16"

$ setupcon

Сменим локаль (данный шаг важен, если будете ставить Постгрес):

# dpkg-reconfigure locales

Выберем

    ru_RU.UTF-8 UTF-8

и отметим ее по умолчанию.

Для возможности удаленного администрирования установим ssh

# apt install -y openssh-server

На этом элементарную предподготовку ОС можно считать выполненной.

 

2) Установка 1С

Теперь ставим платформу 1С. Я использовал 64-х битную платформу 8.3.11.3034 (deb-пакеты, с национальными языками).

Скачиваем файл deb64.tar.gz (https://releases.1c.ru/project/Platform83), распаковываем данный архив:

$ tar -xzvf deb64.tar.gz

Устанавливаем пакеты через менеджер:

# dpkg -i 1c-enterprise83-common_8.3.11-3034_amd64.deb
# dpkg -i 1c-enterprise83-server_8.3.11-3034_amd64.deb
# dpkg -i 1c-enterprise83-ws_8.3.11-3034_amd64.deb

Если вам нужны дополнительные языки, кроме английского и русского, то ставим nls-пакеты

# dpkg -i 1c-enterprise83-common-nls_8.3.11-3034_amd64.deb
# dpkg -i 1c-enterprise83-server-nls_8.3.11-3034_amd64.deb
# dpkg -i 1c-enterprise83-ws-nls_8.3.11-3034_amd64.deb

Даем созданному эской пользователю права на директорию с установленной платформой:

# chown -R usr1cv8:grp1cv8 /opt/1C

Ставим шрифты от M$ (соглашаемся с лицензией при установке):

# apt install -y ttf-mscorefonts-installer

Доустанавливаем нужные зависимые библиотеки:

# apt install -y libfontconfig1
# apt install -y imagemagick

Запускаем 1с сервер:

# service srv1cv83 start

Проверим состояние службы (должна быть в состоянии active):

$ service srv1cv83 status

Если у вас отсутствует DNS-сервер, который будет резолвить имена, то нужно прописать имя сервера в хосты на клиенте:

# nano /etc/hosts

    xxx.xxx.xxx.xxx    servername

 

Установим драйвер аппаратных лицензий платформы (HASP):

а) скачиваем на сайте 1С либо на сайте производителя (https://safenet-sentinel.ru/helpdesk/download-space/) и распаковываем:

$ unzip sentinel_ldk_run_time_linux.zip

б) так как пакет под 32-битную архитектуру, то нужно доустановить 32-х разрядные библиотеки:

# sh install_32bit_compatibility_package_for_x64.sh

в) устанавливаем пакет через менеджер:

# dpkg -i --force-architecture aksusbd_7.63-1_i386.deb

г) проверим состояние службы (должна быть в состоянии active):

$ service aksusbd status

Учтите, что для 64-х разрядного сервера 1С нужен соответствующий ключ защиты.

 

3) Установка PostgreSQL

Следующим шагом будет установка бесплатной СУБД PostgreSQL от "Postgres Pro" (https://postgrespro.ru/products/1c)

Сначала установим необходимые пакеты:

# apt install -y gnupg2

Скачаем ключ репозитория:

$ wget --quiet -O - http://repo.postgrespro.ru/pgpro-9.6/keys/GPG-KEY-POSTGRESPRO | sudo apt-key add -

Подключим репозиторий:

#  sh -c 'echo "deb http://repo.postgrespro.ru/pgpro-9.6/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro.list'

И установим саму СУБД (данная сборка создана на основе открытой PostgreSQL с патчами от фирмы 1С):

# apt update
# apt install -y postgresql-pro-1c-9.6

Проверим состояние службы (должна быть в состоянии active):

$ service postgresql status

Меняем пароль учетной записи psql "postgres", созданной по умолчанию:

$ sudo -u postgres psql

# password

Вводим новый пароль и выходим из консоли управления psql:

# q

 

На этом этапе можно создать клиент-серверную версию демонстрационной базы от 1с с именем demo

а) перейдем в каталог платформы:

$ cd /opt/1C/v8.3/x86_64

б) запустим кластер серверов:

$ ./ras --daemon cluster

в) прочитаем инфу о кластере:

$ ./rac cluster list

г) получим список баз по данному кластеру (CLUSTER_UID — идентификатор кластера с предыдущего шага):

$ ./rac infobase --cluster=CLUSTER_UID summary list

д) добавим администратора кластера:

$ ./rac cluster admin --cluster=CLUSTER_UID register --name=admin --pwd=Pa$$w0rD --auth=pwd

е) добавим базу:

$ ./rac infobase create --cluster=CLUSTER_UID --create-database --name=demo --dbms=PostgreSQL --db-server=localhost --db-name=demo --locale=ru --db-user=postgres --db-pwd=Pa$$w0rD --cluster-user=admin --cluster-pwd=Pa$$W0rD --license-distribution=allow

 

4) Установка Apache

Устанавливаем Web-сервер:

# apt install apache2

Проверим состояние службы (должна быть в состоянии active):

$ service apache2 status

Создадим папку для vrd-файла:

# mkdir -p /var/www/1c/8.3.11.3034/demo

Создадим файл конфигурации apache:

# touch /etc/apache2/conf-available/demo.conf

Переходим в каталог платформы:

$ cd /opt/1C/v8.3/x86_64/

Публикуем базу:

# ./webinst -apache24 -wsdir demo -dir '/var/www/1c/8.3.11.3034/demo' -connstr 'Srvr="localhost";Ref="demo";' -confPath /etc/apache2/conf-available/demo.conf

Подключаем демо конфигурацию:

# a2enconf demo

Перезапускаем веб-сервер с применением изменений:

# service apache2 reload

Теперь можно открыть конфигурацию в веб-браузере по ее URL: 
    http://servername/demo

 

На этом этапе окружение готово и его можно применять в целях тестирования (либо в небольшой конторе, тем самым сэкономив на лицензиях забугорных товарищей 😉 ).

Конечно, для реальной эксплуатации еще нужно правильно настраивать Постгрес, повышать безопасность через файервол и т. д. и т. п., но это уже другая история…

43 Comments

  1. spezc

    Несмотря на то, что подобных статей вагон и тележка — все равно спасибо. Таких статей много не бывает.

    Reply
  2. vano-ekt

    а в десктопе можно и клиент поставить (в т.ч. этот ваш Конфигуратор)

    Reply
  3. Gilev.Vyacheslav

    VirtualBox под продуктив?

    Reply
  4. SerVer1C

    (3) Улыбнуло… )) Использую тестовое окружение на VirtualBox для тестирования/отладки веб-клиента. Если серьезно, то любой спец. по IT должен понимать, что алгоритм в «железе» выполнится в разы быстрее аналогичного софтового алгоритма.

    Reply
  5. quick

    подтянул полезные команды в свою сборку 1С в docker.

    Все руки не дойдут простенький веб интерфейс сделать для rac

    Reply
  6. oldfornit

    а насколько необходимо ставить -nls-пакеты на более-менее свежих дистрибутивах?

    Кстати, dpkg -i 1c-enterprise83-common_8.3.11-3034_amd64.deb и далее для каждого пакета можно заменить на

    dpkg -i ./*.deb — установка всех deb-ов из текущего каталога

    Reply
  7. SerVer1C

    (6) По умолчанию, в дистрибутив включены языки «en» и «ru». Если вы хотите еще 15 дополнительных языков, то ставьте nls-пакеты. Про замену команд тут неоднозначно: если у вас в данной папке нет других файлов, то да, можно написать «dpkg -i *» , а если есть другие файлы, то, чтобы не путать читателя, написал полный список команд.

    Reply
  8. kuld

    А где SSL и HTTPS? Я уж не говорю о настройке бесплатного сертификата от доверенного CA.

    А где настройка по расписанию бэкапов средствами pgdump и cron?

    А где Kerberos для авторизации пользователей от AD на линуксовом сервере?

    Не, не зачет )) вот моя, более полная инструкция

    Reply
  9. morohon

    Ubuntu 17.10.1 взята для примера? Может стоит сделать оговорку касательно срока поддержки Linux дистрибутивов и намекнуть использовать LTS (а лучше CentOS)?

    Reply
  10. Gilev.Vyacheslav

    (4) тестирование в среде отличной от продуктива приводит к «неожиданностям» в продуктиве

    тут дело даже не в скорости, а в предсказуемости результата

    если уж виртуализация «неизбежна», ну тогда хотя бы тестируйте в клоне виртуалки продуктива

    Reply
  11. DjSpike

    За статью спасибо. Для 1с все также не подходит оригинальный postgresql из дистрибутива ???

    Reply
  12. SerVer1C

    (8) Вы сначала к своему сайту SSL привяжите )) Цель гайда — показать простоту развертывания актуальной платформы 1с на linux, а не умение админить сервера.

    Reply
  13. SerVer1C

    (9) Версия Ubuntu 17.10.1 с ограниченным сроком поддержки взята исключительно в качестве примера как один из свежих дистрибутивов. Что использовать в качестве боевого линукса — вопрос риторический.

    Reply
  14. SerVer1C

    (11) Оригинальный Постгрес будет работать с 1С, но не во всех сценариях использования. Так что нужно обязательно накладывать патчи от фирмы 1С на оригинальную версию СУБД.

    Reply
  15. SerVer1C

    (11) В продакшн — не подойдет.

    Reply
  16. SerVer1C

    (10) Полностью с вами согласен. Но для разработки в 1с под веб подойдет и *nix в виртуалке.

    Reply
  17. 79123890854

    Помогите пожалуйста, застрял на этапе установки postgresql

    # echo deb http://1c.postgrespro.ru/archive/2017_12_26/deb artful main > /etc/apt/sources.list.d/postgrespro-1c.list

    apt update

    Ошибка на скриншоте.

    Reply
  18. SerVer1C

    (17) Вот новая информация от Postgres Pro (см. https://postgrespro.ru/products/postgrespro/download/9.6.8.2):

    # sh -c ‘echo «deb http://repo.postgrespro.ru/pgpro-9.6/ubuntu $(lsb_release -cs) main» > /etc/apt/sources.list.d/postgrespro.list’

    wget —quiet -O — http://repo.postgrespro.ru/pgpro-9.6/keys/GPG-KEY-POSTGRESPRO | sudo apt-key add —

    # apt update

    Reply
  19. 79123890854

    (18) Это отработало без ошибок.

    Далее apt install -y postgresql-pro-1c-9.6.

    Не удалось найти пакет.

    Reply
  20. SerVer1C

    (19) В *nix системах регистр букв важен! Поэтому «1С» <> «1c»

    Reply
  21. 79123890854

    (20) по всякому уже пробовал, не получается.

    Reply
  22. SerVer1C

    (21) Попробуйте найти точное имя пакета через команду

    apt-cache search postgresql-pro

    Reply
  23. beregnov.av_2015

    (19) Попробуйте вот так

    apt-get update -y
    apt-get install -y wget gnupg2
    wget -O — http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | apt-key add —
    echo deb http://1c.postgrespro.ru/archive/2018_03_02/deb bionic main > /etc/apt/sources.list.d/postgrespro-1c.list
    apt-get update -y
    apt-get install -y postgresql-pro-1c-9.6
    Reply
  24. ogre2007

    Народ, а что с торговым оборудованием в *nix? Сколько мозгов нужно, чтобы настроить СШК, ПЭ, ТСД? Есть банальная печать ШК? Есть успешные внедрения с ТО, с каким?

    Reply
  25. morohon

    (13) Да, вы полностью правы. Просто многие не берут этот важный фактор во внимание.

    Reply
  26. Berckk

    (0) За статью спасибо.

    Но устаревшие ядра лучше удалять перед перезагрузкой и автоматически.

    Т.е. вместо

    # apt update && apt upgrade -y && reboot

    # apt purge linux-image-4.13.0-21

    # apt purge linux-headers-4.13.0-21
    # apt update &&  apt upgrade -y &&  apt autoremove -y && reboot
    
    Reply
  27. 79123890854

    До 12 подключений можно потестить без ключика?

    Reply
  28. SerVer1C

    (27) Платформу 8.3.10 можно (при наличии клиентской лицензии), а вот в 8.3.11 лазейку прикрыли… Для веб-клиента в любом случае обязательно нужна серверная лицензия.

    Reply
  29. baracuda

    (8) у вас реально топ статья) лайкую

    Reply
  30. 79123890854

    Ну postgrespro поставил. Дальше опять затык.

    Reply
  31. SerVer1C

    (30) Белым по черной консоли написано: «Администратор кластера не аутентифицирован»

    Используйте команду с ключами аутентификации:

    ./rac infobase —cluster=CLUSTER_UID —cluster-user=admin —cluster-pwd=Pa$$w0rD summary list

    Reply
  32. 79123890854

    (31) Не получается. Как сменить пароль администратора кластера?

    ./rac cluster admin —cluster=9e1f4732-3171-11e8-5d9a-0800278d84a0 register —name=newadmin —pwd=1234 —auth=pwd

    не работает, пишет:

    Ошибка операции администрирования

    Администратор кластера не аутентифицирован.

    Reply
  33. xioxao

    Нет мудрее связки чем WINDOWS+MSSQL)

    Reply
  34. SerVer1C

    (32) Вам для экспериментов проще создать новый кластер:

    ./rac cluster insert —host=localhost —port=2541 —name=NewCluster

    Reply
  35. 79123890854

    (34) Новый кластер тоже не дает создать. Старый видимо нужно удалить?

    Reply
  36. the1

    (25) А можно подробнее про это?

    Reply
  37. Fox-trot

    если гугл внезапно тебя забанил, прошу сюды https://ru.wikipedia.org/wiki/Ubuntu#LTS

    Reply
  38. SerVer1C

    (35) Переустановите сервер 1с и проделайте шаги строго по инструкции из статьи.

    Reply
  39. 79123890854

    Предлагаю в этой инструкции Pa$$w0rD везде поменять на 1234, а то если не поменять на своё по невнимательности, оно на самом деле принимает значение Pa2543w0rD.

    Reply
  40. SerVer1C

    (24) Из своего опыта могу сказать, что в современных линуксах настроить печать не сложнее, чем в «окнах». Если, конечно, это не Win-принтер, который тоже можно настроить, имея определенные знания. А многие печатающие устройства ШК — это обыкновенные принтеры. Про остальную торговую периферию не скажу точно. Да, с ней могут возникнуть трудности, т. к. драйвер может быть только под win или будет использоваться какой-то COM-объект или какая-то управляющая утилита будет только для винды и т. п. В каждом случае придется разбираться отдельно. Но мир не стоит на месте, Linux активно движется и в клиентскую сферу.

    Reply
  41. CSiER

    За упоминание ОС в правильном варианте «GNU/Linux» отдельный плюс!

    Reply
  42. Sergey_Borisovi4

    На этапе смены локали (dpkg-reconfigure locales) при выборе локали по умолчанию может отсутствовать ru_RU.UTF-8 UTF-8. В этом случае ее надо предварительно установить: sudo apt-get install language-pack-ru

    Reply
  43. SerVer1C

    (44) Если взять другой дистрибутив, то там может и sudo не оказаться.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *