Продвинутого опыта работы с линуксом не было. Но в сети довольно много позитивного опыта развертки такой архитектуры, и мы решились. Данная статья точно НЕ является мануалом по установке линукс, но уверен, будет неплохим дополнением.
Что нам было необходимо от сервера:
- Сервер 1С (с СУБД) для рабочих баз + некоторое количество файловых рабочих баз
- Веб-сервер
- Общий каталог для отдельных файловых баз
- Система резервного копирования
- Работа принтеров в офисе
- И еще нам зачем-то нужен был wine, сейчас уже не вспомню зачем.
Вводные данные:
Как вы помните из предыдущего - мы небольшая фирма, активных пользователей округленно до 10 человек. Было принято решение взять виртуальный сервер в аренду у компании МАРС Телеком, т.к. посоветовали знакомые, которые давно с ними работают. Характеристики сервера: Тариф Enterprise, процессор Xeon 3.3 ГГц 6 ядер, оперативной памяти 18 Гб; Дисковая подсистема SSD 1 Тб.
Настраивать виртуальную машину решили самостоятельно, хотя компания предлагала нам бесплатную настройку от своих технических специалистов. Ниже представлен перечень действий которые мы совершали и то, к чему они привели, сгруппировано по функциям. Фактически это выборка из различных статей по установке линукса, которые были актуальны для нас. А также результаты и наши выводы по трудозатратам.
Совместимость программного обеспечения мы проверяли здесь.
Дистрибутив
Мы выбрали дистрибутив Ubuntu Desktop 18.04 по разным причинам. Установить дистрибутив мы как раз попросили технических специалистов МАРС Телеком.
Установки 1С
Тут никаких проблем особо нет - выкачиваем все дистрибутивы, устанавливаем все последовательно через графический установщик, соблюдая зависимости. Собственно в другой последовательности установить и не даст. 1С устанавливается в каталог /opt/1C/v8.3/x86_64.
Apache
Сервер Apache устанавливается стандартными средствами Linux введя в консоли команду
sudo apt install apache2
У нас установилась версия 2.4, работает нормально.
-
-
Проблема с установкой Apache - при публикации на веб сервере из конфигуратора, 1C почему-то показывает версию Apache 2.2, хотя нужно выбрать версию 2.4 - соответственно. Откуда там 2.2 - не ясно.
-
Проблема с использованием внешних файлов Apache - все каталоги перенесены в группу www-data, права для всех все.
-
Доступ к ФАЙЛОВОЙ базе данных одновременно из Apache и через 1С в файловом режиме - похоже неразрешимая задача, т.к. каталог должен принадлежать 2 группам одновременно.
-
В файле envvars необходимо раскомментить строку
. /etc/default/locale
иначе внешние файлы через веб-клиента 1С будет называть в кривой кодировке (для файлов с кириллицей в имени).
-
-
Проблема со шрифтами в 1С решается установкой следующего пакета:
sudo apt install ttf-mscorefonts-installer
Не смотря на то, что в официальной документации написано - качайте вручную на sourceforge. Как вариант - выкачать по ссылке с сорсфордж, экзешники открыть архиватором и распаковать в одну папку. Выбрать оттуда только файлы шрифтов. В каталоге ~ создать каталог ./fonts и запихать все шрифты туда. Проделать это для каждого пользователя. Это точно поможет.
-
Общие нужные команды
Для работы со службами используется команда systemctl используется для старта (start), остановки (stop), перезапуска службы (restart) , проверки состояния службы (status).
Пример:
Перезапустить сервер Apache.
systemctl restart apache2
Запустить сервер 1C.
systemctl start srv1cv83
Проверить состояние PostgreSQL.
systemctl status postgresql
(должно показывать active)
Имена служб:
- srv1cv83 - демон (служба) сервера 1С
- apache2 - демон (служба) апача
- postgresql - постгре
Проверить правильность работы службы постгре (см. ниже).
netstat -na|grep tcp
Проверить работу службы сервера:
top – u usr1cv83
(должны работать службы ragent, rphost,rmngr)
Мониторинг нагрузки на железо:
htop
Мониторинг запущенных процессов (служб)
ps
Ctrl + U - скопировать в буфер текущую строку (в терминале контр Ц не работает.
Ctrl + Y - вставить скопированную строку
Добавление пользователей, редактирование прав доступа - через графическую оболочку вполне посильная задача.
-
Служба терминалов и графическая оболочка.
Подробная инструкция здесь.
Установка xrdp - ничего необычного.
sudo apt install xrdp
Ставим mate-core — это рабочая среда MATE Desktop (почему мате - см. ниже):
sudo apt-get install mate-core
Добавляем конфиг:
sudo echo mate-session> ~/.xsession
Если запущен файрволл — добавляем исключение, принимать подключения на порт 3389 (по-умолчанию):
sudo ufw allow 3389/tcp
Перегружаем:
sudo reboot
И пробуем пользоваться удаленным рабочим столом. Но, бывает иногда и так, что этих шагов оказывается недостаточно.
Тогда ищем файл /etc/xrdd/startwm.sh и в нем комментируем строки (вероятно, будут последними):
test -x /etc/X11/Xsession && exec /etc/X11/Xsession exec /bin/sh /etc/X11/Xsession
и вместо них добавляем другие две строчки:
unset DBUS_SESSION_BUS_ADDRESS exec mate-session
Заходим в /etc/xrdp/sesman.ini
Находим параметры - убивать дисконнектуных пользователей через 300 секунд (проблема нагрузки на проц скринсейвером лок-экрана).
Почему MATE:
Попробовали xfce4 - слишком унылая и непонятная для привыкших к винде людей.
Cinnamon - жрет 60% ЦПУ.
Повышение производительности графической оболочки.
В первую очередь необходимо осуществить переход в рамках главного меню системы: «Меню — Параметры — Окна», перейти на вкладку «Общие» открывшегося окна и убрать флажок «Включить программный композитный оконный менеджер».
После этого необходимо осуществить еще один переход в рамках главного меню системы: «Меню — Параметры — Mate tweak», перейти в раздел «Окна» открывшегося окна и в подразделе «Оконный менеджер» сменить значение параметра «Оконный менеджер» с «Marco + Compositing» на «Marco».
-
Далее нужно удалить Compiz. Для этого следует открыть окно терминала и ввести в него следующую команду (используйте функции копирования/вставки):
sudo apt-get remove compiz-core
Наиболее удобная графическая оболочка для меня выглядит следующим образом: Меню-Параметры-Внешний вид - вкл.Тема - Traditional Ok : Меню — Параметры — Mate tweak - Панель - выбрать Redmont.
Убрать галку в настройках хранителя экрана "запускать хранитель экрана когда компьютер заблокирован" как вариант -убивать дисконнектунтых пользователей xrdp (см. выше).
-
PostgreSQL
Ради бога не ставьте новую версию, посмотри совместимость еще раз здесь: https://v8.1c.ru/tekhnologii/sistemnye-trebovaniya-1s-predpriyatiya-8.
Качаем дистрибутивы с portal.1с.ru и ставим 3 пакета. Доппакеты не качал, зависимости не качал. Всё заработало и так.
Прописываем в файле /etc/postgresql/10/main/pg_hba.conf два раза trust в нужных местах.
Обязательно зайди в "обновление программ" и отключи автообновление, иначе постгря обновится на новый релиз из репозитория и все сломается.
Переходим в оболочку администрирования psql
sudo -u postgres psql
Меняем пароль:
\password
Вводим его два раза, выходим из оболочки:
\q
Пользователь postgres, пароль "1".
Общая информация:
Настроечные файлы /etc/postgresql/10/main/postgresql.conf - здесь можно посмотреть где физически хранятся файлы баз данных (параметр data_directory).
Команды работы с БД: (теряют смысл при наличии оболочки администрирования кластера серверов, что не может не радовать).
Подключиться к серверу sql (перейти в оболочку).
sudo -u postgres psql
Вывести список баз в оболочке:
\l \du
- список всех пользователей и их привилегий.
удалить базу данных:
DROP DATABASE <имя базы>;
- регистр имеет значение, точка с запятой на конце нужна. НЕ ЗАПРАШИВАЕТ ПОДТВЕРЖДЕНИЕ, ТУПО УДАЛЯЕТ ВСЕ!!!
Выйти из оболочки
\q
Ошибки.
На следующий день после установки отвалился postgre с ошибкой:
Не удалось подключиться к серверу: Connection refused (0x0000274D/10061).
Он действительно работает по адресу "localhost" (127.0.0.1) и принимает TCP-соединения (порт 5432)?
Оказалось, что 1с-ный релиз постгры обновился до следующего релиза из репозитория и отказался работать. Решение - удалить постгрю серверную часть и клиентскую. и поставить заново из deb пакетов скачанных с portal.1c.ru.
Базы данных, настройки, пользователи при этом остаются на месте, никуда не удаляются.
Правильная работа постгре проверяется следующей командой:
netstat -na|grep tcp
В выводе должны быть следующие строки:
tcp 0 0 0.0.0.0:1540 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1541 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1560 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1561 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1562 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1563 0.0.0.0:* LISTEN
-
Ставим winehq-stable для полноценной работы с графической оболочкой и офисом:
sudo apt install winehq-stable
Если не запускается - заходим вот сюда, качаем для i386 и ставим сначала faudio, потом wine-stable, а потом winehq.
-
SAMBA
Скачан установлен по умолчанию, в /etc/samba/samba.conf в конце дописываем следующее:
[samba] path = /srv/samba #это путь до расшариваемой папки, меняем как нам надо browsable = yes witable = yes quest ok = yes read only = no create mask = 0777 # важно, чтобы файлы создаваемые всеми были доступны для записи/чтения всеми
Перезапускаем самбу.
Не заработало. Постоянные конфликты пользователей. файловая база в шаре не запускается от двух пользователей одновременно.
Дальнейшее администрирование - через webmin!!!!
Добавляю всех пользователей в одну группу. Делаю ее основной для каждого пользователя. В настройках самбы шары - эту же группу вставляем в Force Unix group.
Теперь медленно вкуриваем мануал и понимаем суть написанного:
При работе под управлением ОС Linux, система «1С:Предприятие» создает файлы с явно выданными разрешениями 0660 (привилегия чтение/запись для владельца файла и группы владельца).
Теперь база, размещенная в шаре доступна каждому из пользователей.
На самом деле, шара на линухе - это адский ад. Ключевая проблема - нет наследуемости прав. Шара просто теряет свойства шары, если ты не можешь поделиться каталогом без плясок с бубном (я знаю про umask, но это тоже пляски с бубном, и 1с не рекомендует использовать).
-
Администрирование кластера серверов 1С
В идеальном мире:
Запуск службы админ кластера:
/opt/1C/v8.3/i386/ras --daemon cluster
Запуск программы работы с кластером:
/opt/1C/v8.3/i386/rac cluster list
В моем случае: демон ras не запускается. Для его запуска идем по адресу https://forum.infostart.ru/forum86/topic236353/, читаем коммент №3 скачиваем скрипт, делаем его исполняемым.
- положить в /etc/init.d/
- выполнить systemctl daemon-reload
- запустить собственно службу: /etc/init.d/ras1c start (мне помогло по-другому: systemctl start ras1c, причем после перезагрузки сервера)
Проверяем что служба ras1c работает:
systemctl status ras1c
Видим актив - значит все хорошо.
Веселимся с этим всем, и понимаем что ну его в пень дырявый такое администрирование.
!!! Устанавливаем под виндой консоль mmc.
Сначала под администратором(!) запускаем "Регистрация утилиты администрирования серверов 1С Предприятия".
Потом запускаем "администрирование кластера серверов".
Подключаемся к нашему серверу и получаем нормальный интерфейс администрирования кластера серверов.
Установили webmins.
Webmins работает по ip адресу сервера на 10000 порту. В нашем случае это //192.168.88.111:10000.
Управление пользователями - здесь удобнее, настройка самбы и постгры - тоже удобнее, чем из терминала.
-
БЭКАПЫ - штатная программа pgdump, чуть позже настроить по инструкции например здесь: //infostart.ru/public/73972/ Спойлер - так и не настроили.
-
ПРИНТЕРЫ
- Принтеры не пробрасываются через rdp. Более того, чтобы пробрасывались диски, необходимо УБРАТЬ галку "принтеры" в настройках Rdp (это для клиента на windows).
- Подключение принтера usb в сети.
Не заработало.
sudo apt install pyton-smbc sudo apt install pyton3-smbc Edit "/etc/cups/cupsd.conf" Change:
AuthType Default Require user @SYSTEM Order deny,allow To:AuthType None # AuthType Default # Require user @SYSTEM Order deny,allow Работа с принтерами осуществляется через веб-интерфейс \\localhost:631
Для полного счастья в /etc/cups/printers.conf нужно сделать AuthInfoRequired none.
Результат - Ноль без палочки.
Вывод
Через 2 месяца такой развлекухи, снесли линукс к едреней фене, и поставили винду. Пара-пара-пам. Фьють!
При этом вполне можно на линуксе поднимать однозадачные сервера (напр только для АТС, только для сервера 1С, только для веб-сервера итд) без общего доступа и без RDP. Это удобно, относительно быстро и надежно. Многофункциональный сервер на линуксе без богатого опыта администрирования - это зло и потеря времени.