Особенности национального ПО: обзор РЕД ОС

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Вводная часть

Всем привет!

В связи с последними событиями в мире вопрос отечественных разработок в сфере программного обеспечения и дистрибуции становится все более и более актуальным, и нам все чаще поступают запросы по переезду с западных дистрибутивов на отечественные операционные системы. По законодательству государственные учреждения, корпорации с государственным участием, объекты критической инфраструктуры (например, больницы и электростанции) обязаны использовать ПО из единого реестра российских программ. В свою очередь, для коммерческих проектов важна минимизация рисков санкций на ПО, которые могут косвенно или напрямую повлиять на работу.  

Именно поэтому было решено посвятить статью одному из таких продуктов. Речь пойдет о российской операционной системе РЕД ОС - дистрибутиве, построенном на базе ядра Linux и пакетной базе RPM. Со слов разработчиков дистрибутива, РЕД СОФТ опирается на опыт ведущих мировых сообществ Open Source и придерживается конвенций о наименовании пакетов и спецификации сборок.

Решающим фактором в выборе РЕД ОС является наличие свидетельства государственной регистрации программ ЭВМ и ее наличие в едином реестре российских программ.  

В рамках статьи будет продемонстрировано развертывание простого Bitrix-окружения на этой ОС, а именно развертывание стандартного LEMP (Linux, Nginx, MySQL, PHP) и установка дополнительных решений для работы проекта на данном дистрибутиве. Однако, мы посчитали скучным описание установки стека LEMP только из родного репозитория, поэтому решили в рамках статьи развернуть СУБД MySQL 5.7, пакеты которой отсутствуют в репозиториях РЕД ОС. Как показывает наша практика, данная версия MySQL все еще остается одной из самых популярных для LEMP-стек проектов. 

Сегодня в IT-сообществе нет общепринятого мнения по поводу российских дистрибутивов, именно поэтому мы хотим познакомить вас с их представителем, разобраться, кому подходит данный дистрибутив, развеять опасения о работе с ним, а также объективно оценить плюсы и минусы его использования.

Прежде чем начать, приглашаю вас подписаться на наш Telegram-канал DevOps FM и познакомиться с YouTube - мы всегда рады новым друзьям :)

Содержание:

  • Вводная часть;

  • Кому подойдет данный дистрибутив; 

  • Особенности дистрибутива;

  • Описание установки Nginx + Apache2;

  • Описание установки Docker + Docker Compose;

  • Описание установки PHP 7.4 через Docker;

  • Описание установки MySQL 5.7;

  • Описание установки демо-версии Bitrix и проведение тестов;

  • Описание установки вспомогательных сервисов;

  • Заключение;

Кому подойдет данный дистрибутив

В первую очередь, РЕД ОС подходит для государственных структур. При переходе на РЕД ОС для государственных структур выполняются требования по использованию российского ПО и дистрибуции. Со стороны разработчиков РЕД ОС представлена следующая информация по сертификации:  

РЕД ОС прошла испытания в системе сертификации средств защиты информации на соответствие требованиям:  

«Требования безопасности информации к операционным системам» (ФСТЭК России, 2016)»  

«Профиль защиты операционных систем типа А четвертого класса защиты. ИТ.ОС.А4.ПЗ» (ФСТЭК России, 2017)»  

Соответствует 4 уровню доверия согласно:  

«Требования по безопасности информации, устанавливающие уровни доверия к средствам технической защиты информации и средствам обеспечения безопасности информационных технологий», утвержденных приказом ФСТЭК России № 76 от 02 июня 2020 г.» 

В коммерческом секторе российский дистрибутив гарантирует санкционную устойчивость. Кроме этого, РЕД ОС  более выгоден по сравнению с ОС Windows по стоимости лицензии. Чуть позже мы также затронем совместимость данного дистрибутива с отечественным ПО.  

Особенности дистрибутива  

РЕД ОС представляется в двух вариациях издания:  

 Рабочая станция: 

Дистрибутив операционной системы с набором приложений для работы обычного пользователя.  

 Сервер: 

Платформа для построения ИТ инфраструктуры, включает в себя набор инструментов для обеспечения централизованного управления и мониторинга.  

Варианты установки:  

  • Графический сервер - вариант сервера с графическим интерфейсом для работы.  

  • Минимальный сервер - минимум установленных утилит, работа производится через консоль.  

В данной статье была использована последняя доступная (на момент написания статьи) версия РЕД ОС - 7.3.2 МУРОМ

Начнем с основ: под капотом РЕД ОС для работы с пакетами находится RPM (Redhat Package Manager). Данная особенность означает, что в случае необходимости установки пакетов не входящих в официальные репозитории РЕД ОС, имеется возможность воспользоваться пакетами, предназначенными для семейства систем RHEL (Red Hat Enterprise Linux), чуть позже вернемся к этому :)  

А что же входит в родные репозитории РЕД ОС? С полным списком входящих пакетов вы можете ознакомиться тут, дополнительно мы составили таблицу с самым распространенным ПО для работы Bitrix-проектов.  

Для каких систем подойдет данная ОС? На официальном сайте дистрибутива представлен список совместимого оборудования и программного обеспечения, ознакомиться с ним вы можете тут.  

Категория ПО

В репозитории РЕД ОС

Инструменты централизованного мониторинга и управления информационной инфраструктурой организации

Система мониторинга Zabbix для отслеживания состояния информационной инфраструктуры предприятия. Ansible, Cockpit, Webmin и прочие

Почтовый сервер

SMTP‐сервисы: Postfix, Exim, iRedMail, sendmail.  

Web-серверы

Apache, NGinx, lighttpd  

Реляционные базы данных 

PostgreSQL, MariaDB, Firebird 

Нереляционные базы данных

Memcached, Redis  

Поисковые движки

Sphinx, ElasticSearch

Ниже представлено самое распространенное программное обеспечение из различных сфер, совместимое с данным дистрибутивом:  

  • управление процессами предприятий 1С‐Предприятие, 1С Битрикс24;

  •  1С‐Битрикс: Управление сайтом; 

  • облачные офисные пакеты ONLYOFFICE, Р7‐Офис, Мой офис;

  • банковские информационные системы iDБанк, iSimpleBank, ЦФТ‐Банк;

  • медицинские информационные системы КМИС.Регион, БАРС.МИС, МИС Инфоклиника;

  • СУБД Ред База Данных, СУБД Jatoba, Postgres Pro;

  • почтовый сервер Tegu, МойОфис Почта, CommuniGate Pro.

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

Описание установки Nginx + Apache2

Перед началом работ необходимо выполнить обновление всех пакетов, отключить SELinux (Security-Enhanced Linux, системы принудительного контроля доступа) и выполнить перезагрузку системы. Отключение принудительного контроля необходимо для корректной работы сервисов (запись/чтение логов, проксирование и т.п.) без дополнительных вмешательств со стороны администратора. 

#dnf update
# echo 'SELINUX=disabled' > /etc/sysconfig/selinux
#reboot

Итак, начнем с WEB-Серверов, а именно Nginx и Apache2. Оба веб-сервера присутствуют в родном репозитории и никаких проблем с установкой не возникнет. 

# dnf install nginx
# dnf install httpd

Перед запуском сервисов необходимо внести изменения в конфигурацию Apache2. Дело в том, что веб-сервер по умолчанию работает на том же порту, что и Nginx. Для этого в /etc/httpd/conf/httpd.conf изменим:

-Listen 80
+Listen 127.0.0.1:81

Остальные  настройки веб-серверов ранее описывались в рамках серии статей по настройке LEMP:

Настройка LEMP сервера для простых проектов. Инструкция для самых маленьких. Часть первая

Настройка LEMP сервера для простых проектов. Инструкция для самых маленьких. Часть вторая

Настройка LEMP сервера для простых проектов. Инструкция для самых маленьких. Часть третья

После чего проверим статус работы веб-серверов:

# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
     Active: active (running) since Wed 2022-12-07 16:35:07 +07; 1s ago
    Process: 55490 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
    Process: 55491 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
    Process: 55492 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
   Main PID: 55493 (nginx)
      Tasks: 3 (limit: 2323)
     Memory: 2.9M
        CPU: 58ms
     CGroup: /system.slice/nginx.service
             ├─55493 nginx: master process /usr/sbin/nginx
             ├─55494 nginx: worker process
             └─55495 nginx: worker process
# systemctl status httpd  
● httpd.service - The Apache HTTP Server  
     Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)  
    Drop-In: /usr/lib/systemd/system/httpd.service.d  
             └─php-fpm.conf  
     Active: active (running) since Mon 2023-01-23 18:31:36 +07; 20min ago  
       Docs: man:httpd.service(8)  
   Main PID: 879 (httpd)  
     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec"  
      Tasks: 27 (limit: 2326)  
     Memory: 89.5M  
        CPU: 7.717s  
     CGroup: /system.slice/httpd.service  
            ├─879 /usr/sbin/httpd -DFOREGROUND  
            ├─957 /usr/sbin/httpd -DFOREGROUND  
            ├─975 /usr/sbin/httpd -DFOREGROUND  
            ├─976 /usr/sbin/httpd -DFOREGROUND  
            ├─977 /usr/sbin/httpd -DFOREGROUND  
            └─981 /usr/sbin/httpd -DFOREGROUND

По итогу имеем установленные веб-сервера Nginx и Apache2 следующих версий:

# nginx -v  
nginx version: nginx/1.18.0
# httpd -v  
Server version: Apache/2.4.54 (RED OS) 
Server built: Jun 27 2022 10:23:14

Nginx имеет следующие модули в итоговой сборке:

# nginx -V
nginx version: nginx/1.22.1
by gcc 8.3.1 20191121 (Red Hat 8.3.1-6) (GCC)
built with OpenSSL 1.1.1q FIPS 5 Jul 2022
TLS SNI support enabled  configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_geoip_module=dynamic --with-stream_geo  ip_module=dynamic --add-dynamic-module=modsecurity-nginx-v1.0.3 --add-dynamic-module=nginx-push-stream-module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-cc-opt='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIF Y_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' --with-ld-opt='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,-E

Если же SELinux не был отключен, при запуске веб-сервера Apache2 будет получена ошибка. 

В логах будет следующая запись ошибки:

(13)Permission denied: AH00091: httpd: could not open error log file /var/www/redtest.ru/log/apache2/error.log.
AH00015: Unable to open logs
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/redtest.ru/log/apache2/error.log.
AH00015: Unable to open logs
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/redtest.ru/log/apache2/error.log.
AH00015: Unable to open logs
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/redtest.ru/log/apache2/error.log.
AH00015: Unable to open logs

Для устранения ошибки необходимо выполнить: 

# cd /var/www/DOMAIN_NAME/log/apache2/
# semanage fcontext -a -t httpd_sys_rw_content_t 'error.log'

semanage - утилита, используемая для настройки политики SELinux, где: 

 fcontext - флаг, указывающий добавление контекста в правила; 

-a -t - добавить тип объекта в политику SELinux;

 httpd_sys_rw_content_t - добавить сервису httpd (Apache2) возможность записи и чтения; 

 'error.log' - файл, на который распространяются данные правила. 

Далее  проверим установленные правила:

# restorecon -v 'error.log'

Сохраним установленные правила в системе:

# setsebool -P httpd_unified 1

После выполненных действий проблем в поднятии веб-серверов не возникнет. 

Однако, далее при проверке работы связки данных веб-серверов, если у вас версия с графической оболочкой, система уведомит вас о следующем: 

Уведомление SELinux
Уведомление SELinux

Данное окно уведомляет об обращении Nginx к Apache2. 

Для предоставления доступа и решения конфликта необходимо: 

Разрешить Apache2 прослушивать порт 81 (или же порт, который вы указывали при конфигурации):

# semanage port -a -t http_port_t -p tcp 81

Выполнить поиск по журналу аудита SELinux и создать правила политики на доступ к обращению Nginx по 81 порту:

# ausearch -c 'nginx' --raw | audit2allow -M my-nginx

Затем применить правила политики:

# semodule -X 300 -i my-nginx.pp


Описание установки MySQL 5.7

Итак, приступим к установке СУБД для нашего проекта. Из родного репозитория нам доступна **MariaDB 10.5**:

# dnf install mysql
Last metadata expiration check: 0:06:10 ago on Wed Nov 30 15:44:47 2022.
Dependencies resolved.
=============================================================================================================================
 Package                     Architecture           Version                   Repository           Size
=============================================================================================================================
Installing:
 mariadb                       x86_64              3:10.5.17-1.el7              updates              6.0 M
Installing dependencies:
 mariadb-common                x86_64              3:10.5.17-1.el7              updates              27 k
 perl-Sys-Hostname             x86_64              1.22-454.el7                 base                 16 k

Transaction Summary
===============================================================================================================================
Install  3 Packages

Total download size: 6.1 M
Installed size: 38 M
Is this ok [y/N]:

Для установки MySQL 5.7 необходимо добавить репозиторий **MySQL 5.7 Community Server**, для добавления будет создан файл репозитория **/etc/yum.repos.d/mysql-community-5.7.repo** и внесено в него:

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0

Где: 

  • name - произвольное имя репозитория;

  • baseurl - путь, по которому система может забирать пакеты из репозитория;

  • enabled - опция включает или выключает репозиторий;

  • gpgcheck - нужно ли проверять цифровую подпись пакетов.

Опытные пользователи могут заметить, что мы используем репозитории, предназначенные для **RHEL 7**. 

Далее импортируем ключ репозитория командой:

# rpm --import http://repo.mysql.com/RPM-GPG-KEY-mysql

Перед установкой можем убедиться в наличии нашего добавленного репозитория:

# dnf repolist all
идентификатор репозитория имя репозитория состояние
base RedOS - Base включено  
kernels Kernels updates for RED OS 7.3 включено  
mysql57-community MySQL 5.7 Community Server включено  
updates RedOS - Updates включено

После добавления репозитория выполним установку пакетов на сервере: 

# dnf install mysql-community-server

По завершении установки необходимых пакетов переходим непосредственно к самой установке MySQL 5.7:

# mysql_secure_installation

В первом пункте необходимо ввести пароль root-пользователя:

Enter password for user root:

Данный пароль автоматически генерируется в **/var/log/mysqld.log**, поэтому чтобы его получить просто выполните:

grep 'A temporary password' /var/log/mysqld.log |tail -1

После ввода временного пароля необходимо будет создать новый пароль. В MySQL вшит плагин *validate_password*, вследствие чего пароль должен включать в себя как буквы разного регистра и цифры, так и специальные символы. В качестве генератора сложных паролей можете использовать утилиту pwgen, чтобы не получить следующую ошибку:

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

... Failed! Error: Your password does not satisfy the current policy requirements

После установки пароля установщик предложит убрать анонимных пользователей:

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for testing,
and to make the installation go a bit smoother.

You should remove them before moving into a production environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Success.

Для безопасности всегда убирайте анонимных пользователей, поэтому жмем 'y'.

Далее будет предложено отключить возможность подключения root пользователя извне:

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Success.

Еще одна очень важная для безопасности настройка, нажимаем 'y'.

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

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes 
made so far will take effect immediately

Заключительный шаг настройки - перечитывание таблиц привилегий. Если в предыдущем пункте тестовая база была удалена, то также соглашаемся, чтобы не делать это потом вручную. 

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Success.All done!

Вот и все, настройка MySQL завершена. 

Проверим статус и убедимся, что наша СУБД  работает корректно:

# systemctl status mysqld.service
● mysqld.service - MySQL Server
     Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
     Active: active (running) since Wed 2022-12-07 12:51:42 +07; 3min 54s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
    Process: 52777 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
    Process: 52829 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
   Main PID: 52831 (mysqld)
      Tasks: 28 (limit: 2323)
     Memory: 344.1M
        CPU: 4.584s
     CGroup: /system.slice/mysqld.service
             └─52831 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Проверим версию: 

# mysql -V  
mysql Ver 14.14 Distrib 5.7.41, for Linux (x86_64) using EditLine wrapper

На этом установка и настройка MySQL была завершена, переходим к следующему пункту.

Описание установки PHP 7.4

Для актуального Bitrix окружения на момент написания статьи требовалась версия PHP 7.4 или выше - эта версия как раз является стандартной в РЕД ОС. C 01.02.2023 Битрикс официально перестает поддерживать версии php ниже 8.0. 

Необходимо выполнить следующую команду:

# dnf install php php-cli php-common \
 php-devel php-gd \
 php-imap php-json php-ldap php-mbstring \
 php-mysqlnd php-opcache php-pdo \
 php-pear php-pear-DB php-pecl-apcu \
 php-pecl-apcu-bc php-pecl-geoip \
 php-pecl-mcrypt php-pecl-memcache  \
 php-pecl-ssh2 php-process php-pspell php-xml php-zipstream

Далее выполним проверку установленной версии:

# php -v  
PHP 7.4.33 (cli) (built: Oct 31 2022 10:36:05) ( NTS )  
Copyright (c) The PHP Group  
Zend Engine v3.4.0, Copyright (c) Zend Technologies  
with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies

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

Для модуля *opcache* необходимо внести следующие поправки в /etc/php.d:

opcache.max_accelerated_files = 100000
opcache.revalidate_freq = 0

А также создать файл bitrexenv.ini и внести в него:

display_errors = Off
error_reporting = E_ALL
error_log = '/var/log/php/error.log'

; Set some more PHP parameters
enable_dl = Off
short_open_tag = On
allow_url_fopen = On

# Security headers
mail.add_x_header = Off
expose_php = Off
...

Готово, установка пакетов PHP для работы Bitrix завершена.

Описание установки Docker + Docker Compose

Не на всех проектах для работы вашего Bitrix требуется именно 7.4 версия php, в особенности если проектов несколько и требуются разные версии под их работу. Поэтому, чтобы не производить манипуляций с установкой пакетов непосредственно на сам хост, будет произведена установка Docker и сопутствующих пакетов Docker compose. 

В официальном репозитории РЕД ОС присутствуют пакеты для установки данных утилит контейнеризации. Итак, выполняем: 

dnf install docker-ce docker-compose

После установки выполняем проверку статуса сервиса:

# systemctl status docker  
● docker.service - Docker Application Container Engine  
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)  
Active: active (running) since Mon 2023-01-23 21:05:45 +07; 9min ago  
TriggeredBy: ● docker.socket  
Docs: https://docs.docker.com  
Main PID: 54641 (dockerd)  
Tasks: 9  
Memory: 101.3M  
CPU: 1.924s  
CGroup: /system.slice/docker.service  
└─54641 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

И обязательно включаем сервис в автозагрузку системы:

# systemctl enable docker

Более подробный процесс создания контейнеров и их конфигурирования описан в серии статей:

Настройка LEMP-сервера с помощью docker для простых проектов. Часть первая: База

Настройка LEMP-сервера с помощью docker для простых проектов. Часть вторая: docker-compose

Настройка LEMP-сервера с помощью docker для простых проектов. Часть третья: docker-compose, Dockerfile

Крайне рекомендуем вам ознакомиться с ними. 

В качестве тестирования был использован контейнер с Apache2-php7.4 - он также используется инженерами нашей команды. 

Билд контейнера прошел без ошибок:

[..]
Step 12/15 : COPY docker-entrypoint.sh /
 ---> 34852322c5be
Step 13/15 : ENTRYPOINT ["/docker-entrypoint.sh"]
 ---> Running in 3a20a8f3385b
Removing intermediate container 3a20a8f3385b
 ---> d2e6c51519ea
Step 14/15 : COPY apache2-foreground.sh /usr/local/bin/
 ---> d0055e385c47
Step 15/15 : CMD apache2-foreground.sh
 ---> Running in a8eba95531ab
Removing intermediate container a8eba95531ab
 ---> 80692a9eb418
Successfully built 80692a9eb418
Successfully tagged test_apache2:latest

Далее контейнер был успешно поднят после его билда:

# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
7c954678fac8   test_apache2   "/docker-entrypoint.…"   6 seconds ago   Up 5 seconds   80/tcp    php74-apache2

Описание установки демо-версии Bitrix

Для данного пункта был использован официальный установщик битрикс.  

Выполнить его загрузку можно следующей командой в директории площадки:

# wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php

При переходе в браузере к данному файлу получаем окно установки:

Начальное окно установщика 1C-Битрикс
Начальное окно установщика 1C-Битрикс

По прохождении всех пунктов установщика получаем прохождение всех тестов кроме Серверного окружения:

Результаты проверки перед установкой
Результаты проверки перед установкой

По завершении установки получаем заветное окошко панели управления.

Панель управления 1С-Битрикс
Панель управления 1С-Битрикс

Битрикс проект готов к работе над ним!

Описание установки вспомогательных сервисов

Исходя из опыта нашей команды, наиболее часто встречаемыми ПО в Bitrix проектах являются: 

  • Поисковый движок Sphinx

  • Сервис кэширования данных Memcached

  • Нереляционная БД Redis 

Все эти сервисы доступны в родном репозитории РЕД ОС и каких-либо проблем с их установкой для вашего использования не возникнет. Вывели для удобства их версии из родного репозитория. 

Memcached версии 1.6.6:

# telnet localhost 11211  
Trying ::1...  
Connected to localhost.  
Escape character is '^]'.  
version  
VERSION 1.6.6

Sphinx версии 2.2.11:

# searchd  
Sphinx 2.2.11-id64-release (95ae9a6)  
Copyright (c) 2001-2016, Andrew Aksyonoff  
Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)

Redis-server версии 7.0.5:

# redis-server --version  
Redis server v=7.0.5 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=c4711b3d0a7f3969

На данном этапе хотим завершить с установкой и разбором ПО.

Проблематика перехода на РЕД ОС

Большинство CMS Битрикс24 разворачиваются при помощи BitrixVM с учетом минимального взаимодействия системного администратора. Однако BitrixVM не входит в список единого реестра российских программ в отличие от самого ПО Битрикс. Ознакомиться со списком можно здесь.  

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

Как правило, при переходе с популярных дистрибутивов, у которых имеется обширное комьюнити и база знаний, на довольно новые дистрибутивы (по меркам рынка) по типу РЕД ОС, команда может столкнуться с малым опытом в администрировании, что негативно скажется на скорости развития проекта и решения поступающих проблем.  

Для ведения и сопровождения проекта на требуемой ОС необходим компетентный инженер. В случае, если такой инженер отсутствует, и работы ведут неподготовленные инженеры, время на решения поступающих задач будет увеличено по сравнению с работой на BitrixVM.  

При необходимости выполнить требования по соблюдению использования российского ПО или же требования по минимизации рисков санкций и повышения санкционной устойчивости со стороны IT-отдела коммерческой компании, IT-блок может не иметь нужного специалиста по сопровождению проекта со стороны сервера при работе проекта на BitrixVM. Так как администрирование CMS Битрикс на BitrixVM требует минимальных знаний по администрированию Linux систем, то при переходе на систему без автоматизированной настройки требуются компетенции для развертывания и обслуживания проекта.  

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

Заключение

Исходя из всего вышенаписанного, давайте пройдемся по плюсам и минусам РЕД ОС.  

Плюсы:   

  • Удобная файловая система

Все любители RHEL систем будут чувствовать себя максимально уверенно.  

  • Совместимость с наиболее популярным отечественным ПО 

На официальном сайте имеется 17 страниц совместимого ПО, что говорит о том, что работы по выпуску специальных версий под данный дистрибутив реально ведутся.   

Минусы:   

  • Не самый богатый выбор программного обеспечения из родного репозитория

Для работы Bitrix проекта перечень представленного ПО вполне достаточен, однако если говорить про собственные крупные разработки, то тут уже могут возникнуть проблемы, влекущие за собой дополнительные трудозатраты по установке и развертыванию более специфического ПО.  

  • Малая популярность дистрибутива.

Как следствие малый охват по поиску решения как тривиальных, так и специфических проблем и задач. 

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

Актуальность ПО на последней версии системы оставляет желать лучшего, учитывая, что новое ядро Bitrix требует версию PHP 8.0 и выше. Данный пункт может усложнить жизнь проектов, которые привыкли своевременно выполнять обновления.  

Подводя итоги работы с РЕД ОС, хочется отметить как удобный пакетный менеджер RPM, так и вполне обширный пул отечественного ПО для данного дистрибутива. Однако минусы РЕД ОС существенны. В первую очередь, данная ОС подойдет для проектов главным стеком которых являются отечественные разработки. Для развертывания собственных решений все же лучше выбрать более крупных игроков на рынке - это удобнее, а благодаря обширной базе комьюнити, вы точно сможете найти ответы на интересующие вопросы.  

Всем большое спасибо, кто дочитал до этого момента :)  

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

Подписывайтесь на наш telegram‑канал DevOps FM — там много полезного для DevOps‑инженеров и системных администраторов.

А на нашем YouTube-канале вас ждут классные видео-туториалы по разным инструментам DevOps!

Источник: https://habr.com/ru/company/nixys/blog/723082/


Интересные статьи

Интересные статьи

В предыдущих публикациях мы сделали обзор самых интересных на наш взгляд специальных публикаций NIST по информационной безопасности. В данном посте мы рассмотрим два документа от NIST, которые посвяще...
Перевод статьи "Natural and Artificial Intelligence: A brief introduction to the interplay between AI and neuroscience research", опубликованной в сентябре 2021 года. Оригинал статьиИсходно перевод де...
Представим ситуацию: у вас есть продукт, в котором ваши клиенты создают собственный контент. Этот контент нужно распространить на аудиторию, говорящую на разных языках. Как помочь клиенту сделать проц...
Привет, Хабр! Сегодня я публикую статью с подробным обзором очень старого ноутбука — Zenith Mastersport 386sx. Он был выпущен в 1990 году, и благодаря своей надежности сумел стать довол...
Качество продукции в конечном итоге определяет пользователь. Реабилитационная индустрия при всех её особенностях – не исключение. Об этом свидетельствует опыт множества проектов, как успешных, та...