0
Обложка: Как настроить облако на Linux Ubuntu 20.04, 1C и Apache

Как настроить облако на Linux Ubuntu 20.04, 1C и Apache

Уход западных вендоров корпоративных систем учета из России приводит наш бизнес к необходимости адаптировать отечественные аналоги. Одним из самых популярных решений для замены становится система 1С. Реалии ИТ сегодня таковы, что замещать приходится весь стек, на котором «крутится» корпоративный софт, включая сервера и ОС.

Демонстрируем, как может выглядеть настройка такого набора на примере комбинации 1С, Ubuntu и Apache.

Александр Рудницкий
Александр Рудницкий
Программист 1С компании CorpSoft24

Подготовка

Дано:

1. Компания, оказывающая облачные услуги, предоставляет доступ к серверу через SSH: адрес, порт, логин, пароль.

2. Подключаемся к серверу: ssh ip-адрес -p 22 -l пользователь

3. Чтобы большинство настроек выполнялось автоматически, и чтобы было удобней (для пользователей Windows привычней), установим графическую оболочку.

Также графическая оболочка нужна, чтобы работать в конфигураторе 1С. Самой быстрой, легкой и оптимальной в сочетании «удобство + производительность» является оболочка LXDE, поэтому устанавливаем ее.

apt install lxde

Размер оболочки чуть меньше 2 Гб.

Экранную программу можно выбрать любую, я выбрал gdm3.

В оболочке LXDE автоматически устанавливается анимационная заставка; в нашем случае она лишняя, поэтому удаляем:

dpkg --purge xscreensaver

4. Для безопасности устанавливаем обновления.

apt upgrade

5. Перезагружаемся

reboot

Основная часть

6. Создадим пользователя, под которым будем входить на сервер:

useradd rudnitsky -m

7. Изменение пароля пользователя:

passwd rudnitsky

8. Включить пользователя в группу sudo:

usermod -aG sudo rudnitsky

9. Теперь нужно войти на сервер в графическом режиме. По умолчанию в Linux отсутствует RDP-сервер (по сравнению с Windows), а также отсутствует аналогичный производительный терминальный сервер.

В Linux есть множество вариантов организации терминального сервера, однако большинство из них настолько низкопроизводительны и низкостабильны, что работать просто невозможно. Наиболее оптимальными в сочетании «скорость + стабильность» являются два RDP-сервера: XRDP и X2GO.

У обеих программ сбоит буфер обмена.

У программы XRDP плюсом является возможность подключиться встроенным RDP-клиентом Windows, но есть замечания к безопасности.

У программы X2GO есть минус в необходимости устанавливать клиент, зато плюсом является безопасность, так как работает через протокол SSH, поэтому выбор пал на X2GO (wiki.x2go.org).

Установка серверной службы:

apt-get install x2goserver x2goserver-xsession

Всего-то 18 Мб. В ранних версиях Ubuntu нужно было добавлять репозиторий:

add-apt-repository ppa:x2go/stable

В версии 20.04 программа уже присутствует в стандартном репозитории.

Проверяем, что сервер X2GO работает:

service x2goserver status

10. На своем компьютере (Linux Mint) устанавливаем клиент:

apt install x2goclient

Клиент x2go есть и для систем: Windows, OS X, Ubuntu, Raspbian, Fedora, Redhat, Slackware, FreeBSD; также можно собрать клиент из исходников.

В клиентском приложении X2GO настраиваем подключение.

и подключаемся

11. При первом запуске сеанса в целях безопасности нам предлагают сохранять историю сохранений и копирований, но эта опция мало на что влияет, поэтому «No».

12. Настраиваем рабочее окружение.

Для удобства оставляем только один рабочий стол.

13. Так как в x2go буфер обмена сбоит, а при установке и при выполнении настроек нужно часто копировать пароль, то временно нужно скопировать или вписать пароль в текстовом редакторе. Так как система Ubuntu Server, то удобные привычные текстовые редакторы отсутствуют, поэтому установим Geany:

apt install geany

14. И для редактирования системных файлов, чтобы исключить сбои настроек (такая ошибка присутствует в Linux), установим другой текстовый редактор, например, gedit:

apt install gedit

Устанавливаем русский язык:

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

17. Добавляем раскладку клавиатуры.

18. После перезапуска сеанса почему-то перестает открываться файловый менеджер PCManFM, поэтому устанавливаем другой файловый менеджер Thunar, легковесный, быстрый, удобный, достаточно функциональный.

apt install thunar

Всего 11 Мб для файлового менеджера.

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

mkdir /C

 

chmod -R u-rwx,g=rwx,o=rwx /C

20. Файл с настройками из эталонного профиля заменяем на общий системы:

cp /home/rudnitsky/.config/lxpanel/LXDE/panels/panel /etc/xdg/lxpanel/default/panels/panel

 

cp /home/rudnitsky/.config/lxpanel/LXDE/panels/panel /etc/xdg/lxpanel/LXDE/panels/panel

 

cp /home/rudnitsky/.config/openbox/lxde-rc.xml /etc/xdg/openbox/LXDE/rc.xml

21. Проверяем указание имени сервера в файле hosts:

sudo gedit /etc/hosts

 

127.0.0.1 localhost

 

127.0.1.1 prod

22. Скачиваем дистрибутив PostgreSQL с сайта 1С

В данном случае я скачал PostgreSQL-14.3-1.1C.

23. Распаковываем архив в отдельный каталог и запускаем установку:

dpkg -i ./*.deb

В описании к данной версии указано, что протестировано на Ubuntu 20.04, однако, как видим, версия от 1С сходу отказывается устанавливаться.

Пробуем автоисправление зависимостей и ошибок:

apt install -f

Повторная попытка установки безрезультатна. Читаем, какие зависимости требуются: libreadline7.

Находим: оказывается, пакет принадлежит дистрибутиву Ubuntu 18.04 (Bionic) — странная ситуация.

Скачиваем и пробуем установить пакет.

Опять препятствие; и похоже, что «чем дальше в лес», тем больше может быть неудовлетворенных зависимостей, поэтому придется добавить источник пакетов Bionic:

sudo gedit /etc/apt/sources.list

Добавлена строка:

deb http://cz.archive.ubuntu.com/ubuntu bionic main

Пробуем снова:

apt update

 

apt install -f

 

dpkg -i ./*.deb

Ошибка исчезла, остались другие:

Устанавливаем требуемые зависимости:

apt install -f

 

apt install postgresql-common

 

apt install libicu60

 

apt install libllvm6.0

Фиксируем пакет, чтобы исключить обновление и поломку работоспособности

apt-mark hold libicu60

Еще попытка:

dpkg -i ./*.deb

Оказывается, автоматически установилась версия postgresql-common меньше, чем требуемая, и это тоже странно. Ищем более новую версию.

Версия 229 присутствует между дистрибутивами Ubuntu impish и jammy, а оба они более поздние, т. е. новее.

Здесь внимание! Нельзя указывать источник пакетов из более нового дистрибутива, так как пакеты могут обновиться, зависимости пересекутся и в результате невозможно будет установить ни одно приложение — проверил на собственном опыте.

Так как далее придется скачивать и устанавливать по одному пакету, для удобства установим менеджеры пакетов gdebi:

apt install gdebi

 

apt install aptitude

Устанавливаем зависимости:

apt install libjson-perl

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

https://packages.ubuntu.com/jammy/all/postgresql-client-common/download

dpkg -i ./postgresql-client-common_238_all.deb

https://packages.ubuntu.com/jammy/postgresql-common

https://packages.ubuntu.com/jammy/all/postgresql-common/download

dpkg -i ./postgresql-common_238_all.deb

Теперь попытка установки PostgreSQL проходит успешно с автоматической инициализацией кластера баз:

dpkg -i ./*.deb

Проверим работоспособность:

service postgresql status

 

netstat -tlnp

 

su postgres

 

psql

24. В СУБД меняем пароль postgres:

su postgres

 

psql

 

alter user postgres password 'СложныйПароль';

25. Подключаемся к базе под пользователем postgres с указанием пароля (стандартная практика при создании базы 1С):

26.

psql template1 -U postgres;

 

Ошибка: по умолчанию разрешен вход только под системным пользователем postgres.

Включаем возможность авторизации по паролю.

sudo gedit /etc/postgresql/14/main/pg_hba.conf systemctl restart postgresql

Теперь подключение успешно:

27. Скачиваем дистрибутив платформы 1С с сайта 1С

В данном случае я скачал 8.3.21.1302, выбрав строку «Технологическая платформа 1С:Предприятия (64-bit) для Linux».

28. Распаковываем архив, двойным кликом запускаем установку:

sudo ./setup-full-8.3.21.1302-x86_64.run

29. Установка выглядит так, как будто мы работаем в Windows:

30. В файле службы включаем отладку:

sudo gedit /opt/1cv8/x86_64/8.3.21.1302/srv1cv8-8.3.21.1302@.service

 

Environment=SRV1CV8_DEBUG=-debug

31. В последних платформах 1С для Linux исключено автосоздание службы.

Создаем её вручную.

Для платформы до 8.3.21:

ln -s /opt/1cv8/x86_64/8.3.20.1549/srv1cv83 /etc/init.d/srv1cv83

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

systemctl enable srv1cv83

 

systemctl restart srv1cv83

 

systemctl status srv1cv83

Для платформы, начиная с 8.3.21:

systemctl link /opt/1cv8/x86_64/8.3.21.1302/srv1cv8-8.3.21.1302@.service

 

systemctl enable srv1cv8-8.3.21.1302@

 

systemctl restart srv1cv8-8.3.21.1302@default

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

systemctl daemon-reload

Проверяем, что служба работает:

systemctl status srv1cv8-8.3.21.1302@default

 

netstat -tlnp

32. Создаем базу 1С.

При создании базы может быть ошибка: «Authentication method 10 not supported».

Понижаем уровень шифрования пароля до md5:

sudo gedit /etc/postgresql/14/main/postgresql.conf

 

password_encryption = md5

Заодно можно сразу и настроить параметры в соответствии с данным сервером.

ssl = off
max_connections = 1000
shared_buffers = 8GB
temp_buffers = 256MB
work_mem = 32MB
autovacuum_naptime = 2min
synchronous_commit = off
row_security = off
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
log_duration = on
log_min_duration_statement = 5000 #записывать запросы, которые выполнялись более 5 секунд.

Для применения изменений перезагружаем службу:

systemctl restart postgresql

33. Устанавливаем Apache.

apt install apache2

Проверяем работу в браузере

34. Если извне закрыты порты 80 и 443, то их нужно открыть (можно только для конкретного адреса или пути), чтобы проверить работу веб-сервера и публикуемых баз 1С:

ufw allow 80

 

ufw allow 443

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

35. Устанавливаем бесплатный сертификат от «Let’s Encrypt» через certbot. Каждые 3 месяца сертификат продлевается автоматически.

snap install core

 

snap refresh core

 

snap install --classic certbot

 

certbot –apache

При запросе домена, если домен отсутствует, указываем "ip-адрес сервера".sslip.io

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

Адрес базы по умолчанию:

https://"ip-адрес сервера".sslip.io/ИмяБазы

Заключение

Как видим, развертывание 1С в Linux-среде c базой данных PostreSQL является полностью выполнимой задачей, а все возникающие трудности с настройкой в процессе носят вполне рабочий характер.

Linux и раньше был рабочим вариантом для развертывания 1С, и вендор предпринимал шаги для адаптации платформы под эту ОС. В новых условиях развития экономики использование Linux в качестве основной среды для всего комплекса задач корпоративного учета является оптимальным решением, поэтому мы продолжим серию публикаций на эту тему.