Введение
С далеких времен 1С работает и на *nix-системах. Чем больше времени проходит, тем лучше платформа чувствует себя на разных дистрибутивах. В последнее время к нам все чаще обращаются с вопросами о том, как наше решение работает в том же Debian. Это подтолкнуло к написанию статьи на тему публикации личного кабинета с собственной авторизацией на Linux.
Что понадобится
В первую очередь нам нужна собственно машина с Linux. Так же нам нужны: платформа 1С (можно взять подходящую тут https://releases.1c.ru/total), консольный текстовый редактор (например nano), веб-сервер Apache, сертификаты для подключения по https.
Apache – начало
Если в системе еще не установлен Apache, то необходимо это сделать следующим образом:
sudo apt install apache2 -y
Ждем окончания выполнения операции. Если все хорошо, то проверяем, что сервер запущен:
service apache2 status
Если все хорошо, то должна быть подобная картина:
Сертификат это просто
Перейдем теперь к генерации самоподписанного сертификата(если нет другого). Для этого переходим в директорию, где хотим сохранить сертификаты(например /etc/ssl/certs) и выполняем следующую длинную команду:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout <SERVER>.key -out <SERVER>.crt
Вместо <SERVER> следует указать имя компьютера, на котором выпущены сертификаты.
Во время выполнения команды будет задано несколько вопросов. Для "Common Name (e.g. server FQDN or Your bane)" нужно также указать имя сервера. Остальные поля заполняются произвольно (кроме "Country name" - здесь можно оставить по умолчанию).
Публикуем базу и сервисы
Для публикации базы нам в первую очередь нужно перейти в каталог с установленной платформой:
cd /opt/1C/v8.3/x86_64/<Номер платформы>
И выполнить собственно публикацию для серверной базы:
sudo ./webinst -publish -apache24 -wsdir <ИМЯ_ПУБЛИКАЦИИ> -dir /var/www/<ИМЯ_ПУБЛИКАЦИИ> -connstr “Srvr=<ИМЯ СЕРВЕРА;Ref=<ИМЯ БАЗЫ>” -confpath /etc/apache2/apache2.conf
Или для файловой базы:
sudo /webinst -publish -apache24 -wsdir <ИМЯ_ПУБЛИКАЦИИ> -dir /var/www/<ИМЯ_ПУБЛИКАЦИИ> "File=<ПУТЬ_К_БАЗЕ>;" -confpath /etc/apache2/apache2.conf
Для файловой базы так же нужно установить права доступа:
sudo chown -R apache:apache <ПУТЬ_К_БАЗЕ>
Если все сделали правильно, должны увидеть сообщение Publication successful.
Следующий шаг — подключаем сертификаты к нашему серверу. Для этого переходим в каталог с публикацией:
cd /etc/apache2/sites-available
и с помощью любого редактора открываем файл настроек:
sudo nano 000-default.conf
В самый конец файла добавляем следующие строки:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile <ПУТЬ_К_ФАЙЛУ_СЕРТИФИКАТА>
SSLCertificateKeyFile <ПУТЬ_К_ФАЙЛУ_КЛЮЧА>
</VirtualHost>
Должно получиться примерно так:
Теперь почти все готово — осталось только подключить SSL к нашему серверу командой
sudo a2enmod ssl
И перезапустить Apache:
systemctl restart apache2
Если все сделано правильно, то наша база будет опубликована и доступна через браузер.
Публикуем веб-сервисы и личный кабинет
Публикация web-сервисов и личного кабинета с собственной формой авторизации будет значительно проще, чем публикация базы. Для этого нам нужно всего отредактировать один файл: «/var/www/<ИМЯ_ПУБЛИКАЦИИ>/default.vrd»
Пример команды:
sudo nano /var/www/UIT/default.vrd
И привести его к виду:
Тут следует обратить внимание на две строки:
ib="File="/home/data/work/InfoBase";usr="lk";Pwd="123";">
В этой строке у нас указана опубликованная файловая база и параметры служебного пользователя, который нужен для работы собственной авторизации с именем «lk» и паролем «123». Следует обратить внимание, что вместо кавычек внутри строки используется "
И вторая строка:
<standardOdata enable="true" — собственно и отвечает за включение сервисов.
Снова перезапускаем наш Apache и проверяем. Если все правильно, то мы получим доступ к личному кабинету.