Эпиграф:
Хорошо погуляли – это когда утром хочется начать новую жизнь. В новом городе. Под новым именем.
Внимательно прочитав данный материал, вы сможете самостоятельно собрать сервер на Linux и Postgres.
Отличное начало нового года.
Гарантии и отказ от них:
Подобные статьи устаревают достаточно быстро. Особенно неблагодарная вещь - публиковать цены.
Обязательно посмотрите дату, хотя бы год и сравните с текущим).
Путь описанный в публикации позволит вам максимально просто установить полностью работоспособный сервер, только если вы будете следовать инструкциям.
Базовые знания Linux, Postgres и компьютерных технологий в целом будут вам хорошим подспорьем.
Все, что вы делаете, это ваш выбор и ваша ответственность.
То, что я написал эту статью, не значит, что я несу все риски и оказываю помощь в решении непонятных вопросов.
К тому же, в это время года имею привычку работать за деньги, а многим это кажется странным.
В публикации будут лирические и технические отступления, они выделены курсивом, на общий ход повествования влияния они не оказывают.
Команды терминала выделены другим шрифтом
Постановка задачи:
1. Вам не хочется переносить свои данные в облако.
(Я это полностью поддерживаю. Не буду повторяться здесь, достаточно уже копий сломано. Это как кредит – берешь чужие деньги на время, а отдаешь свои и навсегда)
2. Ваша компания перешла рубеж 5 пользователей и 1 программист (Для небольших организаций у 1С есть отличное решение «сервер МИНИ на 5 подключений»)
3. У вас есть системный администратор (возможно приходящий, иначе – ваш путь в облако), либо некоторый набор технических знаний.
4. Вам нужна легальность в отношении программного обеспечения.
Лирическое отступление: Проверяющие органы вовсе не обязаны знать какое программное обеспечение под какой лицензией распространяется.
Поэтому, если хотите быть готовыми к проверке максимально – распечатайте, а еще лучше заверьте лицензии СПО используемого на ваших компьютерах.
5. Небольшим, но приятным бонусом идет возможность перестать бояться компьютерных вирусов
Если все это про вашу фирму – читайте дальше.
Порядок работы:
Выбор железа:
Даны два варианта. Мое поколение, наверное, выберет Intel, даже с учетом стоимости.
Лирическое отступление: 99% процентов разработчиков компилируют и отлаживают свои программы на ПК с Intel, хоть бы это и МакБук.
Поэтому AMD это всегда небольшой шаг в неизвестность и чуть худший расчет тепловой нагрузки.
Это сугубо мои наблюдения, можете с ними не соглашаться.
Цены в условных/реальных на декабрь 2018 г рублях.
В вашем городе могут отличаться, могут отличаться и ваши предпочтения – для этого у вас есть – см. п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 -- размер памяти
* autovacuum = on
* autovacuum_vacuum_threshold = 1800
Не все они могут сработать. Не забыть сделать копию 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С и запускать обработки.
А платить вы за это не будете так как программист с десятилетним стажем.
Закройте эту страницу не продолжая чтения дальше.
Для адекватных людей:
Если у вас есть здравые предложения или замечания - пишите.
Все что по разным соображениям не вошло в статью напишу в комментариях.
Туда же можете обрушить поток справедливого гнева.