Публикация личного кабинета (Ubuntu, Apache)
Чтобы пользователи могли работать с личным кабинетом (далее — ЛК), информационная база (далее — ИБ) «Управление IT-отделом 8» должна быть опубликована на веб-сервере.
В этой статье рассмотрен случай, когда ИБ опубликована на Apache под Ubuntu.
Предусловие
Перед публикацией ЛК убедитесь, что ИБ уже опубликована и открывается в браузере. Все команды выполняются от имени администратора (через sudo).
В примерах используются такие значения — подставьте свои:
| Что | Значение в примерах |
|---|---|
| Папка публикации ИБ на диске | /var/www/1c/it4demo |
| Имя публикации ИБ (адрес) | it4demo |
| Папка ЛК на диске | /var/www/1c/it4demo_lk |
| Адрес ЛК | http://localhost/it4demo/lk/ |
Главное правило: папка ЛК лежит рядом с публикацией, а не внутри неё
Важно!
Не кладите файлы ЛК внутрь папки публикации базы — например, в /var/www/1c/it4demo/lk. Кабинет там не откроется.
Публикация 1С добавляет в настройки Apache блок вида <Directory "/var/www/1c/it4demo/"> с указанием передавать все запросы модулю 1С. Вложенные папки наследуют эту настройку, поэтому файлы кабинета уйдут в 1С вместо браузера — и вместо ЛК откроется страница 1С или ошибка 404.
Поэтому папку ЛК создаём соседней — /var/www/1c/it4demo_lk рядом с /var/www/1c/it4demo.
Имя папки на диске и адрес в браузере — разные вещи: папка называется it4demo_lk, а открываться кабинет будет по адресу http://localhost/it4demo/lk/. Связывает их настройка Apache, которую вы подготовите на шаге 5.
Часть 1. Установка
Шаг 1. Скачайте и распакуйте дистрибутив
Скачайте дистрибутив личного кабинета с нашего сайта — файл вида itlk_1_0_0_full.zip (цифры в имени — версия ЛК) — и распакуйте его во временную папку:
sudo apt install unzip # если unzip ещё не установлен
unzip ~/Загрузки/itlk_1_0_0_full.zip -d ~/Загрузки/itlk
ls ~/Загрузки/itlk
В распакованной папке должны быть каталоги app, deploy, docs и файлы README.html, CHANGELOG.md.

Шаг 2. Создайте папку для файлов ЛК
sudo mkdir -p /var/www/1c/it4demo_lk
Обратите внимание: папка создаётся рядом с папкой публикации базы /var/www/1c/it4demo, а не внутри неё (см. раздел выше).

Шаг 3. Скопируйте файлы ЛК
Скопируйте содержимое папки app — то есть сами файлы и папки, а не папку app целиком (точка в конце пути означает «содержимое»):
sudo cp -r ~/Загрузки/itlk/app/. /var/www/1c/it4demo_lk/
ls /var/www/1c/it4demo_lk
После копирования папка должна выглядеть так:
/var/www/1c/it4demo_lk/
├── index.html ← должен лежать здесь, а не в подпапке app
├── config.json
├── manifest.json
├── assets/
└── kb/
Выдайте права на чтение веб-серверу и проверьте, что они применились:
sudo chown -R www-data:www-data /var/www/1c/it4demo_lk
sudo chmod -R u=rwX,go=rX /var/www/1c/it4demo_lk
ls -lh /var/www/1c/it4demo_lk
В выводе ls -lh у каждой строки должно быть:
- владелец и группа —
www-data www-data; - у файлов права
-rw-r--r--: чтение открыто всем, запись — только владельцу; - у папок строка начинается с
d, а к правам добавленx— без него Apache не сможет в них зайти.
Частая ошибка
Скопирована сама папка app, и получился путь /var/www/1c/it4demo_lk/app/index.html. В этом случае кабинет не откроется — перенесите содержимое на уровень выше.

Шаг 4. Укажите адрес API
Откройте файл настроек кабинета:
sudo nano /var/www/1c/it4demo_lk/config.json
Впишите в строку apiUrl адрес обращения к API вашей базы:
{
"$schema": "./config.schema.json",
"apiUrl": "http://localhost/it4demo/hs/api/v2/"
}
Адрес строится по образцу http://[хост]/[имя публикации]/hs/api/v2/, где:
[хост]— адрес веб-сервера (localhost, доменное имя или IP);[имя публикации]— имя, под которым опубликована ИБ.
Сохраните файл: Ctrl + O, затем Enter, выход — Ctrl + X.
Проверьте адрес сразу:
curl -I http://localhost/it4demo/hs/api/v2/
Ответ 401 Unauthorized — адрес верный, сервер запрашивает авторизацию. Ответ 404 означает, что адрес неверный: уточните путь публикации базы.


Шаг 5. Подготовьте файл настроек Apache
Скопируйте из архива файл deploy/apache/lk-alias.conf в каталог настроек Apache и откройте его:
sudo cp ~/Загрузки/itlk/deploy/apache/lk-alias.conf /etc/apache2/conf-available/
sudo nano /etc/apache2/conf-available/lk-alias.conf
Под шапкой из комментариев есть две пары строк: рабочая — с путями Windows, и закомментированная — с путями Ubuntu. Поменяйте их местами: поставьте # в начале первых двух строк и уберите # у следующих двух.
Было:
Define ITLK_PATH /it4demo/lk
Define ITLK_DIR C:/www/it4demo_lk
# Ubuntu:
# Define ITLK_PATH /it4demo/lk
# Define ITLK_DIR /var/www/1c/it4demo_lk
Стало:
# Define ITLK_PATH /it4demo/lk
# Define ITLK_DIR C:/www/it4demo_lk
# Ubuntu:
Define ITLK_PATH /it4demo/lk
Define ITLK_DIR /var/www/1c/it4demo_lk
Значения подставьте свои:
| Строка | Что указать | Пример |
|---|---|---|
ITLK_PATH | адрес, по которому будет открываться кабинет | /it4demo/lk |
ITLK_DIR | папка из шага 2 | /var/www/1c/it4demo_lk |
Кавычки вокруг значений не ставятся. Остальную часть файла менять не нужно: значения подставляются во все настройки сами.

Шаг 6. Подключите файл и нужные модули
Файл настроек кабинета нужно подключить до блока публикации базы: Apache применяет первое подходящее правило, и при обратном порядке адрес /it4demo/lk перехватит публикация 1С.
Найдите, где объявлена публикация:
sudo grep -rn 'Alias' /etc/apache2/apache2.conf \
/etc/apache2/conf-enabled/ /etc/apache2/sites-enabled/
Вы ищете строку вида Alias "/it4demo" "/var/www/1c/it4demo/". Дальше действуйте по тому, в каком файле она нашлась.
Публикация в apache2.conf (так её обычно дописывает публикатор 1С). Откройте файл:
sudo nano /etc/apache2/apache2.conf
и непосредственно перед найденной строкой вставьте:
Include conf-available/lk-alias.conf
Публикация в одном из файлов conf-enabled/ (например 1c-demo.conf). Откройте apache2.conf, найдите строку IncludeOptional conf-enabled/*.conf и вставьте ту же строку Include перед ней — так настройки кабинета прочитаются раньше всего каталога.
Публикация внутри <VirtualHost> в sites-enabled/. Порядок в apache2.conf тут не поможет: директивы виртуального хоста проверяются раньше. Перенесите содержимое lk-alias.conf внутрь того же блока <VirtualHost>, выше строк публикации.
Почему не a2enconf
Команда a2enconf подключает файлы через каталог conf-enabled, а он читается в той строке apache2.conf, где стоит IncludeOptional conf-enabled/*.conf. Публикация 1С обычно дописана выше — и тогда её Alias оказывается первым, а кабинет открывается ошибкой 1С «HTTP: Not found». Явный Include перед блоком публикации от этого избавляет.
Затем включите модули, которые нужны кабинету:
sudo a2enmod headers alias
Если модули уже включены, Apache сообщит об этом — это нормально.

Шаг 7. Проверьте настройки и перезапустите Apache
Сначала — проверка синтаксиса. Она не трогает работающий сервер:
sudo apachectl configtest
Ожидаемый ответ — Syntax OK. Если вместо него выводится ошибка, в сообщении указаны файл и номер строки: чаще всего это опечатка в пути.
Важно!
Не перезапускайте Apache, пока не получите Syntax OK. С ошибкой в настройках сервер не запустится, и вместе с кабинетом станет недоступна опубликованная база 1С.
После успешной проверки примените настройки:
sudo systemctl reload apache2

Шаг 8. Проверьте результат
Откройте в браузере адрес личного кабинета:
http://localhost/it4demo/lk/
Должна появиться форма входа.

Проверка после установки
Пройдите список целиком — это пара минут:
- Кабинет открывается, появляется форма входа.
- Кабинет не спрашивает адрес информационной базы. Если спрашивает — не прочитан
config.json. - Вход выполняется, открывается список задач.
- Открывается вкладка «База знаний», статьи читаются, в статьях видны схемы и цветная подсветка кода.
- Задача с вложением открывается, вложение скачивается без повреждений.
- Обновление страницы (F5) не приводит к выходу из системы.
Часть 2. Обновление версии
Обновление — это замена файлов кабинета. Настройки Apache при этом не меняются: их достаточно было выполнить один раз при установке. Перезапускать Apache тоже не нужно.
Шаг 1. Сохраните config.json
sudo cp /var/www/1c/it4demo_lk/config.json ~/config.json.backup
В нём указан адрес API вашей базы — это единственное, что нужно сохранить.
Шаг 2. Распакуйте новую версию
unzip ~/Загрузки/itlk_1_0_1_full.zip -d ~/Загрузки/itlk-new
Шаг 3. Очистите папку кабинета
sudo rm -rf /var/www/1c/it4demo_lk/*
Проверьте путь перед выполнением
Команда удаляет всё содержимое указанной папки без подтверждения. Убедитесь, что в ней написано именно /var/www/1c/it4demo_lk/*.
Именно удалите, а не копируйте поверх
Между версиями меняются имена файлов. При копировании поверх старые файлы останутся в папке, будут занимать место, а браузер может взять из кэша старый файл. Саму папку и настройки Apache удалять не нужно.
Шаг 4. Скопируйте файлы новой версии
sudo cp -r ~/Загрузки/itlk-new/app/. /var/www/1c/it4demo_lk/
Шаг 5. Верните config.json и права
sudo cp ~/config.json.backup /var/www/1c/it4demo_lk/config.json
sudo chown -R www-data:www-data /var/www/1c/it4demo_lk
sudo chmod -R u=rwX,go=rX /var/www/1c/it4demo_lk
Шаг 6. Проверьте результат
Откройте кабинет в браузере и обновите страницу с очисткой кэша: Ctrl + F5.
Убедитесь, что версия обновилась:
head -3 /var/www/1c/it4demo_lk/manifest.json
Значение поля version должно совпадать с версией нового архива. Что изменилось в версии, описано в CHANGELOG.md в корне архива.

Совет
Храните архив предыдущей версии, пока новая не проработает без замечаний хотя бы несколько дней. Откат выполняется тем же способом: распакуйте прежнюю версию и верните свой config.json.
Если что-то не работает
| Что видно | Причина и решение |
|---|---|
Вместо кабинета — текст с HTTP: Not found и Ошибка при выполнении запроса GET к ресурсу /lk | Отвечает публикация 1С: она перехватила адрес кабинета. Строка Include conf-available/lk-alias.conf должна стоять выше блока публикации в apache2.conf (шаг 6). Если вы подключали файл через a2enconf, отключите: sudo a2disconf lk-alias — и пропишите Include вручную |
| Открывается 1С или ошибка 404, хотя файлы на месте | Кроме порядка подключения (строка выше) проверьте ещё два места. Первое: папка ЛК не должна лежать внутри папки публикации /var/www/1c/it4demo — перенесите её рядом, в /var/www/1c/it4demo_lk, и поправьте ITLK_DIR. Второе: если публикация 1С описана внутри виртуального хоста (файл в /etc/apache2/sites-available/), перенесите содержимое lk-alias.conf внутрь того же блока <VirtualHost>, выше строк публикации 1С |
| Пустая страница, в консоли браузера — ошибки загрузки файлов | Скопирована сама папка app. Проверьте, что index.html лежит прямо в /var/www/1c/it4demo_lk (шаг 3) |
| Кабинет спрашивает адрес информационной базы | Не прочитан config.json: проверьте, что файл лежит рядом с index.html, поле apiUrl заполнено и не нарушен синтаксис (лишняя запятая, одинарные кавычки) |
| Вход не проходит, ошибка 401 | Логин и пароль не приняты самой 1С. Проверьте учётную запись, войдя с ней в базу напрямую |
| Ошибка 403 | Нет прав на чтение папки. Повторите команды chown и chmod из шага 3 |
| Список файлов вместо кабинета | Не применились настройки из lk-alias.conf: проверьте sudo apachectl configtest и что выполнены a2enconf lk-alias и systemctl reload apache2 |
| Нет диаграмм и подсветки кода, шрифты стандартные | Не скопирована папка assets — скопируйте её из app целиком |
| После обновления интерфейс ведёт себя странно | Браузер использует файлы из кэша. Обновите страницу с очисткой кэша: Ctrl + F5 |
Журнал ошибок Apache: /var/log/apache2/error.log. Посмотреть последние записи:
sudo tail -n 50 /var/log/apache2/error.log
Что приложить к обращению в поддержку
- Файл
manifest.jsonиз папки кабинета целиком. - Адрес, по которому открывается кабинет, и значение
apiUrlизconfig.json. - Ваш файл
/etc/apache2/conf-available/lk-alias.conf. - Вывод команд
sudo apachectl -Sиsudo apachectl -M. - Снимок вкладки Console браузера (клавиша F12) с сообщениями об ошибках.
Важно!
Описанный в статье функционал доступен в конфигурации «Управление IT-отделом» редакции 4.0.