Пошаговое руководство по установке 1С и PostgreSql на Ubuntu в облаке DigitalOcean













Пошаговое руководство по установке 1С и PostgreSql на Ubuntu

Добрый день!

Я давно хотел попробовать поставить 1С 8.3.9 на Linux сервер. Обычно я работал либо с файловой конфигурацией, либо со стандартной Windows+MsSql. Но хотелось попробовать развернуть базу самому и посмотреть, насколько это сложно. 

Сразу скажу, что на Инфостарте была уже похожая публикация по установке на CentOs, но во-первых я делал установку несколько по-другому, во-вторых я рассмотрел вопрос включения отладки по http, и в-третьих я хотел сделать более пошаговую иструкцию, с нуля. Кстати сказать, остальные инструкции которые я находил, были либо устаревшими либо недостаточно подробными. А уж вопрос отладки серверных процедур по http для Linux-сервера я очень долго решал, и думаю он будет очень полезен. 

Шаг 1. Установка сервера DigitalOcean

Оказывается, у облачного провайдера DigitalOcean можно получить 10$ по реф ссылке.

И всего за 5$ развернуть Droplet с установленной Ubuntu 16.04 x64.

И вот ваша виртуальная машина уже готова.

Шаг 2. Установка Putty 

Немного непривычно, но с сервером придется работать через консольные команды. Для этого лучше всего подойдет утилита Putty. Среди прочих достоинств, она умеет вставлять в консоль текст по клику правой кнопки мышки или по нажатию shift-insert, что поможет в дальнейшей работе.

шаг 3. установка PostgreSQL 9.5 пропатченного

Пропатченная для 1С сборка PostgreSql лежит на сайте авторов PostgresPro, я взял версию 9.5. Также там есть и инструкции по установке, я их просто скопировал в окно putty.

sudo sh -c 'echo "deb http://1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list'
wget --quiet -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C-92 | sudo apt-key add - && sudo apt-get update
sudo apt-get install postgresql-pro-1c-9.5

После установки в консоли будет видно в каких папках установился PostgreSql, запомните где находится папка config.

в

Проверить работу сервера Postgresql можно с помощью команды

service postgresql status

Если установка была успешна, то вы увидите зеленую надпись «Active».

Шаг 4. установка Listen_adresses для соединения с pgAdmin.

 После установки PostgreSql мне понадобилось проверить как он работает, и я  стал соединяться с ним с помощью PgAdmin 1.22.1. Однако, соединиться не вышло, оказалось, нужно указать в конфигурации listen_addresses=’*’. И тут меня встретил консольный(!) текстовый редактор vi. Это вам не нежно любимый Notepad++ с дополнениями. Впрочем, после небольшого чтения мануалов, оказалось что с редактором просто работать: по умолчанию файл открывается на чтение; для редактирования нужно перейти в insert mode нажав i; после редактирования нажать Esc и набрать две команды :w — для сохранения и команду :q для выхода из редактора. Итак, выполним команду открытия postgresql.conf

sudo vi /etc/postgresql/9.5/main/postgresql.conf

Найдем в этом файле listen_addresses=» и поменяем на listen_addresses=’*’. После чего перезапустим postgresql с помощью команды 

service postgresql restart

Проверить какие сервисы сейчас слушают порты можно с помощью команды 

netstat -tlp

И у вас должна быть примерно такая картина: (здесь у меня уже включен сервер 1с и отладка)

Шаг 5. установка пароля на пользователя postgres

Далее получилось так, что сервер был запущен и listen_addresses были установлены, но возникала ошибка авторизации типа «пользователь postgres не прошел проверку подлинности по паролю». Как оказалось, по умолчанию у него пароль не установлен. Для его установки я поменял пользователя с root на postgresql , зашел в терминал postgresql  и выполнил команду password.

su postgres
psql
password

Шаг 6. Соединение через pgadmin 3 (ver 1.22.1)

После  всех этих настроек, соединение удалось. Как позже оказалось, базу на этом этапе через pgadmin создавать не надо! Главное что есть возможность подключиться и посмотреть таблицы БД. Проверьте что у базы postgres стоит сопоставление(collation) ru_RU.UTF8

Шаг 7. Установка необходимых пакетов для 1с

По нескольким статьям я собрал список пакетов, которые могут понадобиться для работы 1С:

imagemagick
unixodbc
ttf-mscorefonts-installer
t1utils
libgsf-bin

Вот тут обычно могут быть проблемы, но у меня все установилось гладко. Кстати, при установке 1С конфигурирование шрифтов с помощью выполнения config_system  больше не нужно, так как Утилита конфигурирования для работы в ОС Linux config_system удалена из состава поставки и шрифты должны подхватываться автоматически из каталогов типа /usr/share/fonts/msttfcorefonts

Шаг 8. Передача на сервер и установка 1С.

Для передачи скачанных deb пакетов на сервер, я воспользовался входящей в Putty утилитой PSFTP. Положил все deb файлы в папку d:deb_83 и далее выполнил команды:

mkdir /root/onec/
cd /root/onec/
put -r d:deb_83\r
sudo dpkg -i 1c-enterprise83-common_8.3.9-2170_amd64.deb

Для установки пакетов я просто копировал их имена из Свойств файла в Windows в putty.
После установки проверяем запуск сервера 1С командой

service srv1cv83 status

Также должна быть зеленая надпись «Active». Нужно дать права на папки  созданному при установке пользователю usr1cv8:

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

Шаг 9. Создание базы из консоли администрирования 1С

В консоли администрирования под Windows я долго не мог подлючиться к своему серверу, так как появлялась ошибка «этот хост неизвестен». Оказалось, нужно в hosts файле в моей windows7 прописать адрес сервера кластера, где 207.0.0.0 — ваш IP Lunix-сервера

207.0.0.0 ubuntu-512mb-fraOnec-01

Далее я стал создавать базу 1С, и, как говорилось выше, надо создавать новую базу данных, для этого введите новое имя в поле «База данных», например db1cnew и не забудьте галочку «создать базу данных в случае ее отсутствия». Иначе может появиться ошибка «type mvarchar does not exist», если создавали из pgadmin базу.

Шаг 10. Отладка серверных модулей.

Естественно, после запуска базы, хочется ее отладить, но не все так просто. Для начала нужно запустить сервер с флагом отладки. Для этого открываем файл запуска сервера:

sudo vi /etc/init.d/srv1cv83

И раскомментируем там параметр SRV1CV8_DEBUG=1. 

Перезапустим сервер 1С , для просмотра его статуса выполним команду 

ps aux |grep 1с

Флаг -debug появился, но дальше после него стоит флаг -tcp. При режиме tcp отладки зайти в точку останова в серверных процедурах не получится, и нужно разбираться дальше. Включение отладки по http оказалось непростой задачей, потому что нигде я не смог найти рабочего решения. Как оказалось, нужно добавить флаг -http в скрипт запуска сервера в функции buildCommmandLine:

sudo vi /etc/init.d/srv1cv83
добавить в функции buildCommmandLine после -debug флаг -http
"$cmdline -debug -http"

Вот так это должно выглядеть:

Теперь для просмотра флагов процесса опять вызовем команду

ps aux |grep 1с

И увидим, что теперь процессы сервера 1С запущены с флагом http и добавился процесс сервера отладка dbgs:

После этого нужно в Конфигураторе в меню Сервис->Параметры->Отладка поставить «Отладка по протоколу HTTP»,  и отладка заработает:

Шаг 11. Нагрузочный тест Гилева

Также я решли провести нагрузочный тест от Гилева. Скачал dt, поставил на свою базу. Естественно, на 512 мегабайт он не работал, я в панели управления Digital Ocean сделал Resize своего сервера на 1 гигабайт оперативки, и поменял настройки PostgreSQL (возможно, что я сделал это неоптимально и буду рад прочитать в комментариях какие настройки нужны были).

shared_buffers = 256MB
temp_buffers = 64MB
work_mem = 512MB
maintenance_work_mem = 192MB
autovacuum_work_mem = -1 

Тест все равно вываливался с ошибкой «превышен максимальный расход памяти сервера за один вызов» и я поменял параметр «Безопасный расход памяти за один вызов» на -1 в настройках сервера 1С. это помогло, и тест завершился с оценкой 7.76. Еще один Resize сервера на 4GB и 2CPU  и оценка стала 12.41

Выводы

Разворачивание сервера с нуля и установка необходимых пакетов не занимает много времени. Как видно, работа с Linux может представлять вполне достойную альтернативу серверу на Window, особенно учитывая огромное количество облачных провайдеров и легкость развертывания сервера.

В этой статье я не рассмотрел такие интересные вопросы, как оптимизация настроек PostgreSQL, и создание из сервера с Ubuntu контейнера для Docker — это оставлю на будущее.

33 Comments

  1. Infactum

    Это вы с включенным флагом отладки мерили производительность? Какой толк то?

    Reply
  2. kiv1c

    (1) Да, что-то я не учел влияние отладки на производительность. после выключения отладки даже на 512 МБ тест выдал оценку в 7.92

    Reply
  3. pythonchik

    С учетом того, что сервер торчит в интернет, рекомендация listen_addresses=» и поменяем на listen_addresses=’*’ выглядит сомнительной. Зачем все адреса слушать? Чтобы извне этот сервер долбили постоянно всякий «кулхацкеры»?

    Достаточно, чтобы он по локальному адресу отвечал лишь на запросы сервера 1С.

    Reply
  4. baracuda

    Вопрос с лицензиями как решили?

    Reply
  5. mixperm

    Отличная статья. Теперь не буду тратить времени на такой эксперимент т.к. 12 баллов плохо. Мне надо как минимум 45. И вообще мечтаю когда скорость SQL баз сравняется с файловыми. Сейчас если в файловой 90 производительность, то на SQL со всеми разгонами около 40-50.

    Reply
  6. kiv1c

    (5) а файловая у вас на SSD лежит? если проблем с блокировками нет, то действительно быстрее получается)

    Reply
  7. mixperm

    (6)на PCI — E SSD. на sql тоже куча блокировок бывает

    Reply
  8. dock
    Пропатченная для 1С сборка PostgreSql лежит на сайте авторов PostgresPro

    почему именно эта сборка, а не с официального сайта 1С ?

    сам же и отвечу :

    ВЕРСИИ PostgreSQL и 1С

    Начиная с версии 8.3 платформа 1С поддерживает PostgreSQL версии 9.4. Для этого фирмой 1С был выпущен набор патчей для PostgreSQL 9.4.2. В предлагаемых пакетах используется более новый PostgreSQL 9.4.10. Эта версия СУБД имеет множество улучшений, прежде всего связанных с отказоустойчивостью.

    Reply
  9. vshish

    Пробовал все тоже самое.

    В качестве испытуемых дистрибутивов были: OpenSUSE, Debian, Ubunttu, CentOS, AltLinux

    Во всех дистрибутивах кроме АльтЛинукс приходилось для нормальной полноценной установки танцевать с бубнами.

    В АльтЛинукс у меня все проходит просто.

    Установил минималку, установил из репозитария АльтЛинукса пакеты Постгреса 9.4 1С, 1С-преинсталл и еще парочку, и установил 1С и ВСЕ

    ну еще конечно есть маленькая хитрость перед установкой 1С нужно в файл hosts прописать имя компьютера на 127.0.0.1, иначе 1с-сервер не запускается почему-то, ну и на клиентах нужно либо прописывать адрес и имя сервера 1С в hosts, или прописывать его в DNS.

    Как минимум пять таких серверов нормально работают, на производительность на жалуюсь. Инструкция по установке сервера 1С на ALTLinux есть на вики-сайте AltLinux. короче рекомендую отечественного производителя. С хаспом тоже проблем нет.

    Reply
  10. vshish

    А вообще плюсую. Побольше таких инструкций, как для чайников.

    Но с линуксовыми серверами, у меня лично проявилась одна проблема.

    У клиента есть ЭДО с провайдером ТЕНЗОР. У них есть 1С обработка для интеграции с системой. Так вот она не работает с Линукс серверами.

    1. кое-что сохраняет на диск(слешы виндовые)

    2. настройки в архиве в макете (имена файлов в архиве на кирилице) в Линуксе Некорректная перекодировка имен.

    ну и еще некоторые моменты. и добиться их исправления у разработчика не получилось.

    Пришлось исправлять самому, но явно исправил не все и на исправление следующей версии их обработки не стоит

    Reply
  11. kiv1c

    (9)

    1С на ALTLinux

    я сам был удивлен что всё прошло достаточно гладко, обычно самая частая проблема — не ставились какие-то пакеты, особенно libgsf или шрифты. За Альтлинукс — плюсую, у них тоже хорошая инструкция

    Reply
  12. oldfornit

    4. sudo apt-get install nano

    sudo nano /etc/postgresql/9.5/main/postgresql.conf

    11. Рекомендую ознакомиться с http://infostart.ru/public/325482/

    Далее — повысить уровень логов и читать рекомендации самого postgres в логах. Точнее не рекомендации, а диагностические сообщения.

    Reply
  13. spock

    Присоединяюсь к вопросу из (4)

    Reply
  14. oldcopy

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

    По хорошему было бы неплохо завернуть все соединения в VPN.

    Также стоит упомянуть про локали, автору повезло, у него из коробки была ru_RU-UTF8, в противном случае Postgres окажется непригодным к работе с 1С.

    Reply
  15. СергейК

    (7) Подскажите а в файловой базе на SSD какая конфигурация 1С8 объем базы и количество пользователей?

    Reply
  16. AlkB

    Не описано как установить лицензии для 2 вариантов:

    1) если ключ USB

    2) если ключ электронный

    Reply
  17. mixperm

    (15) файловая база УТ11.3, объем 10 ГБ. Платформа 8.3.9 с размером таблиц 64К. Пользователей нет т.к. эта база резервная копия sql версии для тестирования обмена с бух и она явно быстрей работает раза в 2

    Reply
  18. СергейК

    (17)

    …Платформа 8.3.9 с размером таблиц 64К….

    1.А что за параметр «Размер таблиц» 64К? Или имеете ввиду размер кластера раздела NTFS?

    2. А не тестировали как влияет на производительность сжатие БД 1Cv8.1CD средствами NTFS?

    У меня на тестовой БД сжатый файл УТ11 размером 14 Гб занимает физически 4,75 Гб. У меня SSD-шка маленькая, экономлю место.

    Reply
  19. mixperm

    (18) почитайте про нововведения в 8.3.8. Именно из-за увеличенных таблиц в файловой базе и возможность изменять размер таблиц базу созданную на 8.3.8 и выше нельзя открыть на старых платформах.

    Reply
  20. СергейК

    (19) понял, спсб!

    Reply
  21. spezc

    А вы пробовали установить Apache и опубликовать базу?

    Reply
  22. Nelson666

    Спасибо автору. Очень полезная статья!

    Но прошу помощи участников. Хотел бы отлаживать серверные процедуры на такой системе, но после включения параметра HTTP

    «$cmdline -debug -http»

    не запускается корректно процесс ragent с вытекающими. Подробности

    тут
    Reply
  23. Nelson666

    (22) Отвечу сам себе:

    не запускается корректно процесс ragent

    Установил 8.3.10.2168. Все что было описано тут в шаге 10 — заработало!

    Reply
  24. kiv1c

    (23) возможно дело было в Astra Linux. я вот пробовал только на Убунту 16.04, как писал в начале.

    Reply
  25. user721182

    Спасибо за инструкцию, будем пробовать. Один косяк есть, в случае если хранится база клиентов в 1с, то сервер по закону должен быть в РФ.

    Reply
  26. Spaser

    (9)Мучаюсь сейчас с OpenSUSE. После того, как замучился с файловой базой. Вечно то один клиент виснет, то другой. Периодически приходится перезапускать сервер, что ни есть гуд. Причину выяснить не удалось.

    Застрял на этапе аутентификации postgresql. Как бы я ни менял пароль, всё равно пишет, что аутентификация не удалась. Может, подскажете куда копать?

    Reply
  27. Spaser

    (9)Мучаюсь сейчас с OpenSUSE. После того, как замучился с файловой базой. Вечно то один клиент виснет, то другой. Периодически приходится перезапускать сервер, что ни есть гуд. Причину выяснить не удалось.

    Застрял на этапе аутентификации postgresql. Как бы я ни менял пароль, всё равно пишет, что аутентификация не удалась. Может, подскажете куда копать?

    Reply
  28. vshish

    (22) для включения возможности отладки в /etc/sysconfig/srv1cv83 найти строку #SRV1CV8_DEBUG= убрать решетку и написать SRV1CV8_DEBUG=1, записать.

    После этого сервер 1С будет запускаться в режиме отладки.

    Reply
  29. vshish

    (28) пробовал OpenSUSE 1С ставить проблемно.

    Остановился на AltLinux последние версии на http://basealt.ru

    есть хорошая инструкция у них на сервере https://forum.altlinux.org/index.php/topic,30681.0.html и https://www.altlinux.org/1C

    почитай может поможет(это если дистрибутив уже не сменить). Второй совет поменять дистрибутив на AltLinux. Я сервер на нем делаю за 2-3 часа включая установку системы. рекомендую.

    Reply
  30. Spaser

    (30)Спасибо. Действительно подробная инструкция. Чувствую, что поплясать с бубном придётся не мало, чем сегодня и занимался целый день. Пока безуспешно. Никак не хочет открываться порт 1541. Что только ни перепробовал. В итоге снёс postgresql в надежде найти пропатченую для 1с. Тоже пока успеха не добился. Та, что лежит у них на сайте, требует библиотеку, которой нет.

    Сменить дистрибутив тоже проблематично. Уж больно много настроено уже на серваке. Да и изучать мне его придётся. Никогда не имел дела с altlinux.

    Reply
  31. Nigelist

    (13) а что за проблема с лицензиями? Как минимум вы должны знать, что до 12 клиентов серверный ключ для Linux сервера не требуется.

    Reply
  32. vshish

    (31) АльтЛинукс практически ничем не отличается от других. Кроме того в его дистрибуьтиве уже есть пропатченный postgres. и есть пакет устанавливающий доп библиотеки для 1С

    Reply
  33. vshish

    (31) я обычно когда делаю такой сервер. ничего на него не навешиваю дополнительного. постгрес, 1С, апач и все. это все настраивается за 2 часа максимум. Удаленный доступ по ССШ уже включен по умолчанию. ну разве, что РДП настроить. Но это обычно можно и на потом оставить. Зато отсутствие проблем с установкой и настройкой 1С+Postgres и публикации базы экономит кучу времени.

    Reply

Leave a Comment

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