Каталог решений - Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана

Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана

Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана

В наличии

Если кратко описать мое отношение к Postgres: Использовал до того, как это стало мейнстримом.
Конкретнее: Собирал на нем сервера для компаний среднего размера (до 50 активных пользователей 1С).
На настоящий момент их набирается уже больше, чем пальцев рук пары человек (нормальных, а не фрезеровщиков).
Следуя этой статье вы сможете себе собрать такой же и начать спокойную легальную жизнь, максимально легко сделать первый шаг в мир Linux и Postgres.
А я побороться за 1. Лучший бизнес-кейс (лучший опыт автоматизации предприятия на базе PostgreSQL).
Если, конечно, статья придется вам по вкусу.

Категория:

Описание

Эпиграф:

Хорошо погуляли – это когда утром хочется начать новую жизнь. В новом городе. Под новым именем.

Внимательно прочитав данный материал, вы сможете самостоятельно собрать сервер на Linux и Postgres.
Отличное начало нового года.
 

Гарантии и отказ от них:

Подобные статьи устаревают достаточно быстро. Особенно неблагодарная вещь — публиковать цены.
Обязательно посмотрите дату, хотя бы год и сравните с текущим). 
Путь описанный в публикации позволит вам максимально просто установить полностью работоспособный сервер, только если вы будете следовать инструкциям.
Базовые знания Linux, Postgres и компьютерных технологий в целом будут вам хорошим подспорьем.

Все, что вы делаете, это ваш выбор и ваша ответственность.
То, что я написал эту статью, не значит, что я несу все риски и оказываю помощь в решении непонятных вопросов.
К тому же,  в это время года имею привычку работать за деньги, а многим это кажется странным.

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

Команды терминала выделены другим шрифтом

Постановка  задачи:

1. Вам не хочется переносить свои данные в облако.
(Я это полностью поддерживаю. Не буду повторяться здесь, достаточно уже копий сломано. Это как кредит – берешь чужие деньги на время, а отдаешь свои и навсегда)
2. Ваша компания перешла рубеж 5 пользователей и 1 программист (Для небольших организаций у 1С есть отличное решение  «сервер МИНИ на 5 подключений»)

3. У вас есть системный администратор (возможно приходящий, иначе – ваш путь в облако), либо некоторый набор технических знаний.

4. Вам нужна легальность в отношении программного обеспечения.

Лирическое отступление: Проверяющие органы вовсе не обязаны знать какое программное обеспечение под какой лицензией распространяется.
Поэтому, если хотите быть готовыми к проверке максимально – распечатайте, а еще лучше заверьте лицензии СПО используемого на ваших компьютерах.

5. Небольшим, но приятным бонусом идет возможность перестать бояться компьютерных вирусов

Если все это про вашу фирму – читайте дальше.

 

Порядок работы:

Выбор железа: 
Даны два варианта. Мое поколение, наверное, выберет Intel, даже с учетом стоимости. 
Лирическое отступление: 99% процентов разработчиков компилируют и отлаживают свои программы на ПК с Intel, хоть бы это и МакБук.
Поэтому AMD это всегда небольшой шаг в неизвестность и чуть худший расчет тепловой нагрузки.
Это сугубо мои наблюдения, можете с ними не соглашаться.

Цены в условных/реальных на декабрь 2018 г рублях.

КомплектующаяКол-воIntelЦенаСтоимостьAMDЦенаСтоимость
Корпус1Корпус mATX AEROCOOL Qs-240, черный2280,002280,00Корпус mATX AEROCOOL Qs-240, черный2280,002280,00
Блок питания1Блок питания THERMALTAKE TR2 S, черный4360,004360,00Блок питания THERMALTAKE TR2 S, черный4360,004360,00
Диск SSD2SSD накопитель SAMSUNG 860 EVO MZ-76E250BW 4390,008780,00SSD накопитель SAMSUNG 860 EVO MZ-76E250BW 4390,008780,00
Диск1Жесткий диск WD Caviar Blue WD10EZEX2990,002990,00Жесткий диск WD Caviar Blue WD10EZEX2990,002990,00
Вентилятор1Вентилятор DEEPCOOL XFAN 120250,00250,00Вентилятор DEEPCOOL XFAN 120250,00250,00
Вентилятор для диска1Система охлаждения TITAN TTC-HD22TZ510,00510,00Система охлаждения TITAN TTC-HD22TZ510,00510,00
Сетевой адаптер1Сетевой адаптер Gigabit Ethernet D-LINK DGE-530T680,00680,00Сетевой адаптер Gigabit Ethernet D-LINK DGE-530T680,00680,00
Процессор1Процессор INTEL Core i5 840017490,0017490,00Процессор AMD Ryzen 5 2600X16790,0016790,00
Материнская плата1Материнская плата GIGABYTE Z370 HD3P9550,009550,00Материнская плата ASUS PRIME B350-PLUS6760,006760,00
Память2Модуль памяти KINGSTON HyperX FURY Black HX426C16FB2/8 DDR4 — 8Гб5190,0020760,00Модуль памяти KINGSTON HyperX FURY Black HX426C16FB2K2/16 DDR4 — 2x 8Гб10590,0021180,00
Итого   67650  64580

В вашем городе могут отличаться, могут отличаться и ваши предпочтения – для этого у вас есть – см. п3. системный администратор

На выходе должен получиться системный блок, диски SSD надо собрать в RAID 1.
Крики про то, что RAID не настоящий – в комментарии.
Крайне не советую брать новинки, не все они доведены до ума, особенно в части долгой безостановочной работы.

Хотите сэкономить – возьмите половину памяти
В этом плане GIGABYTE  мой выбор – работает годами без проблем.

Переходим к софту.

В целях экономии – приобретаем лицензию на 32-х разрядный сервер 1С Предприятие и необходимое количество лицензий.
Крайне настойчиво рекомендую брать USB ключи.

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

А именно — Ubuntu 16.04 LTS причем desktop.
Лирическое отступление: на текущий момент нет подтверждения, что ядра desktop и серверной платформы Ubuntu кардинально отличаются.
А то что графический интерфейс сохранит вам потом и при настройке много-много рабочих часов — это факт.

Создание загрузочной флешки и старт с нее — первое домашнее задание.

При установке выбирайте русский язык и не придется потом переконфигурировать локаль.

locale-gen en_US

locale-gen ru_RU

update-locale LANG=ru_RU.UTF8

dpkg-reconfigure locales

1. После первого запуска отказываемся от предложения обновиться до 18.04,  обновляем пакеты и ставим Midnight Commander и переходим в него

sudo apt-get update

sudo apt-get upgrade



sudo apt-get install mc

sudo mc

Лирическое отступление: поколение Z забыло два синих экрана, а ведь это прадедушка графического интерфейса.
Получаем нормальный текстовый редактор.
К тому же не надо будет постоянно вводить sudo

2. Устанавливаем Postgres. Огромная благодарность компании Postgre Pro -за мануал сборку.

https://postgrespro.ru/products/1c_build

 

sudo sh -c ‘echo "deb http://1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list’

wget —no-verbose -O — http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | sudo apt-key add — && sudo apt-get update

sudo apt-get install postgresql-pro-1c-9.6

Проверка что Postgres стартовал

netstat -plan | grep 5432

Редактируем файл /etc/postgresql/9.6/main/pg_hba.conf — доверяем всем с локального компьютера

local   all             postgres                           trust

local   all             all                                     trust


 service postgresql restart

Лирическое отступление: и не вижу смысла менять обратно. Тот кто добрался до консоли сервера уж поверьте файл этот отредактирует.

Проверка что Postgres стартовал по другому, включаем в автозагрузку
service postgresql status

systemctl enable postgresql

меняем пароль

psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD ‘ваш пароль’"

3. Устанавливаем окружение по рекомендациям с ИТС

 

https://its.1c.ru/db/metod8dev/content/5822/hdoc

Редактируем  файл /etc/sysctl.conf

echo "kernel.shmmax = 134217728" >> /etc/sysctl.conf

echo 134217728 >/proc/sys/kernel/shmmax

Как вариант просто в конец файла дописываем

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

net.ipv6.conf.lo.disable_ipv6 = 1

Применяем изменения

sysctl -p

4. Добавляем архитектуру i386

dpkg —add-architecture i386

apt-get update

apt dist-upgrade

Проверяем

dpkg —print-foreign-architectures

5. Устанавливаем пакеты i386

apt-get install unixodbc:i386
apt install imagemagick-6.q16:i386
apt install libgsf-bin:i386 ttf-mscorefonts-installer
apt-get install libcanberra-gtk3-module:i386

6. Проверяем что все установилось без потерянных зависимостей

apt-get  -f install

7. Скачиваем с портала 1С и устанавливаем сначала сервер 



dpkg -i *.deb

service srv1cv83 start


Прове ряем 

service srv1cv83 status

7. А потом и клиента


dpkg -i *.deb

На этом моменте мы имеем установленный и работающий сервер 1С и сервер БД Postgres.

8. Вишенка на торте — 32-х разрядный apache2, устанавливаем из исходников

apt-get install build-essential
 apt-get install libc6-dev-i386
 wget http://archive.apache.org/dist/httpd/httpd-2.2.8.tar.gz
 tar xvfz httpd-2.2.8.tar.gz
 cd httpd-2.2.8
 export CFLAGS=-m32
 export CPPFLAGS=-m32

./configure —prefix=/etc/apache2 —build=i686-unknown-linux-gnu —enable-mode-shared=all build_alias=i686-unknown-linux-gnu —enable-modules=all —enable-mods-shared=all —disable-deflate

make

make install 

/etc/apache2/bin/apachectl -k start

9. Чтобы apache стартовал автоматически при загрузке

создаем символическую ссылку и добавляем в запуск 

ln -s /etc/apache2/bin/apachectl /etc/init.d/apache2

update-rc.d apache2 defaults

чтобы конфигуратор 1С при публикации находил веб сервер нужно создать еще одну символическую ссылку

ln -s /etc/apache2/conf/httpd.conf /etc/apache2/apache2.conf

10. Финальную проверку проводим с соседнего компьютера

На нем нужно иметь административную консоль 1С и pgAdmin 3 (pgAdmin 4 уж очень навороченный)

Если в вашей сети нет своего DNS сервера, то разрешение имени для сервера 1С нужно прописать в файл hosts

На этом этапе вы можете подключиться к серверу 1С в консоли администрирования, в серверу Postgres из pgAdmin 

Используя имя, а не IP адрес !


Можете создать базу 1С и открыть ее в браузере

Если этого не произошло — перечитываем и переделываем.

То же самое вы можете проделать и на самом сервере, помните мы на него установили GUI.


 

Переходим к настройкам 

1.  Postgres.

Еще раз благодарности Компании Postgres Professional пользуясь их сборкой достаточно установить параметры для установленного объема памяти и все.

Лирическое отступление: Как известно можно бесконечно смотреть как горит огонь, как течет вода и настраивать производительность сервера. Для желающих перейти к тонким настройкам и понять их — отличный ресурс https://postgresql.leopard.in.ua/. На нем же есть и быстрый конфигуратор для файла postgresql.conf https://pgtune.leopard.in.ua

Техническое отступление: Как и любой уважающий себя сервер SQL Postgres допускает конфигурирование скриптами SQL.
У меня пока этот метод не сработал. Поэтому приведу его здесь для информации, но как рабочее решение пока не могу.

Добавлено 2019-01-08 Из серии: и тут я вспонмил где оставил свой велосипед.
Файл postgresql.auto.conf нашелся по адресу  /var/lib/postgresql/9.6/main/postgresql.auto.conf

Все работает. Не все правда применяется.

И есть параметр рекомендованный 1С 

effective_io_concurrency = 2

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

ALTER SYSTEM
postgres=# select * from pg_file_settings where not applied;
                    sourcefile                     | sourceline | seqno |       name       | setting | applied |            error
—————————————————+————+——-+——————+———+———+——————————
 /etc/postgresql/9.6/main/postgresql.conf          |         59 |     5 | listen_addresses | *       | f       |
 /etc/postgresql/9.6/main/postgresql.conf          |         64 |     7 | max_connections  | 100     | f       |
 /etc/postgresql/9.6/main/postgresql.conf          |        113 |    12 | shared_buffers   | 128MB   | f       |
 /var/lib/postgresql/9.6/main/postgresql.auto.conf |          3 |    36 | max_connections  | 1000    | f       | setting could not be applied
 /var/lib/postgresql/9.6/main/postgresql.auto.conf |          4 |    37 | shared_buffers   | 512MB   | f       | setting could not be applied
 /var/lib/postgresql/9.6/main/postgresql.auto.conf |          8 |    41 | wal_buffers      | 16MB    | f       | setting could not be applied
(6 строк)

 

 

Приведу цитату из официальной документации:
 

ALTER SYSTEM

ALTER SYSTEM — изменить параметр конфигурации сервера

Синтаксис

ALTER SYSTEM SET параметр_конфигурации { TO | = } { значение | 'значение' | DEFAULT }

ALTER SYSTEM RESET параметр_конфигурации
ALTER SYSTEM RESET ALL

Описание

Оператор ALTER SYSTEM применяется для изменения параметров конфигурации сервера, распространяющихся на весь кластер баз данных. Пользоваться им может быть удобнее, чем вручную редактировать файл postgresql.conf. ALTER SYSTEM записывает заданное значение параметра в файл postgresql.auto.conf, который считывается сервером в дополнение к postgresql.conf. При указании в качестве значения параметра DEFAULT или применении формы RESET соответствующий элемент конфигурации удаляется из postgresql.auto.conf. Удалить все настроенные таким способом параметры позволяет предложение RESET ALL.

Значения, установленные командой ALTER SYSTEM, вступают в силу только после следующей перезагрузки сервера (SIGHUP или pg_ctl reload), либо после следующего перезапуска, если эти параметры устанавливаются только при запуске сервера.

Проверить применились ли параметры можно командой 

select * from pg_file_settings where not applied;

Таким образом в теории мы можем с из pgAdmin настроить сервер, но у меня не сработало.

Поэтому я рекомендую odl скул — прямое редактирование  postgresql.conf

И параметры для настройки брать такие :

RAM — размер памяти

* shared_buffers = 1/8 RAM или больше (но не более 1/4);
* work_mem в 1/20 RAM;
* maintenance_work_mem в 1/4;
* fsync = true;
* wal_sync_method = fdatasync;
* commit_delay = от 10 до 100 ;
 commit_siblings = от 5 до 10;
* random_page_cost = 2 ;
* cpu_tuple_cost = 0.001 ;
* cpu_index_tuple_cost = 0.0005 ;

         * autovacuum = on

         * autovacuum_vacuum_threshold = 1800

* autovacuum_analyze_threshold = 900

Не все они могут сработать. Не забыть сделать копию postgresql.conf!

Техническое отступление: Такое описание настроек разошлось тысячными тиражами по интернет.
Но первоисточник его здесь http://wiki.etersoft.ru/PostgreSQL/Optimum?v=xnq 
Компания Etersoft уже больше 10 лет делает рабочие сборки Postgres для 1С. Обычно про таких говорят — обогнал свое время. Огромное им спасибо за эту работу.

Благодарность уважаемому oldcopy за ссылку на ИТС — Настройки PostgreSQL для работы с 1С:Предприятием https://its.1c.ru/db/metod8dev#content:5866:hdoc

 

 1.  Кластер и сервер 1С.

Поскольку сервер у нас 32-х разрядный, то он сможет получить примерно 3.5 Гб оперативной памяти, не более.
Под это и сделаны ограничения

Максимальный объем памяти рабочих процессов = 3500000000
Безопасный расход памяти за один вызов = 3000000000
Техническое отступление: Я всегда считал, что превышение Максимальный объем памяти рабочих процессов+Безопасный расход памяти за один вызов дает ошибку "Недостаточно памяти". https://its.1c.ru/db/v8312doc#bookmark:cs:TI000000158 Но при экспериментах с описанной конфигурацией обратил внимание, что 1С оценивает отдельно показатель Безопасный расход памяти и если он превышен при вызове- то выдает ошибку "Недостаточно памяти". Поэтому поднял его до 3000000000.
Количество ИБ на процесс = 1
Количество соединений на процесс = 15


Так же ограничивается разрастание рабочих процессов и настроен их перезапуск раз в сутки

Интервал перезапуска = 86400
Допустимый объем памяти = 2000000
Интервал превышения допустимого объема памяти = 120
Выключенные процессы останавливать через = 600

Все команды приведенные здесь проверены в двух различных виртуальных машинах, если и найдутся опечатки — это автозамена Word, не более того.

Сами виртуальные машины выложу, если Postgres Professional разрешит это сделать.

Так же попробую выложить настроенные файлы postgresql.conf

 

Добавлено 2018-12-26

Поскольку вышел спор из-за графического интерфейса, сообщаю — он отъедает 500 Мб памяти, на мой взгляд немного

Это видно на принтскринах 


Как отключить графическую оболочку

sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target

 

Добавлено 2018-25-27 

Эксперты присутствующие в теме высказали предположение, что графический интерфейс отъедает память не сразу, а со временем (?)

Получилось 40 Мб в день.

 

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

Щелкнув два раза левой кнопкой мыши на файле пакета.
Внимание! Когда выложу сборки под виртуальные машины — в них 1С не будет.

Ее (или их — пакеты) надо будет загрузить с портала 1С по действующей подписке ИТС и установить.
Самое просто именно так — Щелкнув два раза левой кнопкой мыши на файле пакета.

Добавлено 2018-25-28 

В комментариях было сказано, что apache2 на один сеанс берет 1 Гб памяти и все пропадет и рухнет.
Прилагаю принтскрины на которых запущено 5 веб клиентов и виден расход памяти

Управление торговлей, редакция 11 (11.4.6.174) 
Конфигуратор + Толстый клиент + 5 веб клиентов с выполненным отчетом Валовая прибыль с 2010 года

 

Бонус для тех, кто дочитал.

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

Из образа конечно удалены все дистрибутивы и все файлы 1С, их нужно будет скачать с портала 1С и установить самостоятельно.

От компании Postgre Pro разрешение получено.

Лицензия GNU General Public License, для желающих прочесть — внутри.

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

Если вы не представляете: что такое 1С Предприятие,  Linux, PostgeSQL и зачем вам нужна эта кухня.

Все файлы из интернет считаете зараженными вирусом.

Если физиологические, моральные, религиозные или другие причины не позволяют вам заполнять справочники, документы, настраивать отчеты 1С и запускать обработки.

А платить вы за это не будете так как программист с десятилетним стажем.

Закройте эту страницу не продолжая чтения дальше.

Для адекватных людей:

Если у вас есть здравые предложения или замечания — пишите.

Все что по разным соображениям не вошло в статью напишу в комментариях.
Туда же можете обрушить поток справедливого гнева.

has been added to your cart:
Оформление заказа