День добрый!
Возникла следующая проблема при обновлении платформы на linux-сервере.
Конфигурация:
Fedora server 40, апач 2.4, платформа 8.3.24.1761, СЛК 3.0.37.11710, файловые базы (бух и зуп).
После обновления платформы до любой версии 8.3.25 или 8.3.26 при запуске клиента (windows 10) выдает ошибку:
HTTP: Internal server error
Ошибка при работе с ресурсом /e1cib/login?vl=ru_RU&version=8.3.25.1445&clnPid=3152&dppw=0&nm=3328668772090033223&ld=jblw4QoT9SPskLuQZUhLrVZBO9bLL8bGv19OyBKTu_JkORg7LtWDV2lTyWWiRtOXzrvztRC8uIKI64c1Dq8WayexAUHJEyssxXCcVow-VScavyC6bc3tvmGYmOEAP4NQmQXQcEYPzzw4xh5jUU1KlL-UJB6_vTa68ZYo-LUal06XBY0jReG73hiip-21t3dcQQSkT_4OEc0lvaED1aNJThMUrP9p2lQEG3rS9D7y9fOdUuqGCetSU_tlTEjf_5ezZ0N6gLYX6VwNmL30DFqZcQ2AKnc4PjFbV1NkhAzgUCklQ5w3n3p0y2iWPaJJcTKOsFpPDP5zjDBIuDqt2d2FkVkKhRQIxs27g_VgaFAxUWv0_I6Ggdq3PibtXRFPdDPKuPpNr1_q6C0yl49dxFfjfy9bse_-g-NHbZ0LIq422Onc4KHtwQXsKbexccFqqeZH2YDeRpd4nvoTz_EUuN85_EmxjnL4XGqqk2kU1BKcrAwgo3ClVxGQuGHyKgA6OceXapld0yRm0cUG4DALQMN6CExVO0s5HOepkom_d9MwZ514EzqmEUbAmuSOmQUzZQFEjcisvXj_lbz39hv7RlXE9wiL8bHImN0dMdBqnr4TVx7oOYOsIt6U5bGZo40-rd4NFy32WOliUQRe7W2jHv8IV9Ub9HgWXpreiWqZ5F4yIbD81jotrQ7AfwmxFX3XgWnm4oaLNRGB243btLk2cBy3CNJuX30kOBJznDXV0s4UwO90BbaXygohs7FFHUyKBn8YqolxOlUEN7UFluDMQsGr388AAcMBtcnmWEF-ws_3xWe2LkdHMgqBHBS9-sIDwfae_WEGRY7ezkECLlD8Yy04Dr9TtT8JfswFVHwhGVk-P-U=&dpps&ni=2065678373&dppx=600&dppy=600&dpph=0&screenwidthcharunits=1755&clnId=cafe221e-fed9-4bb2-b109-ed3bbb4a3e31
При попытке открыть в браузере:
1C:Enterprise 8 application error: backbas: 2(0x00000002): No such file or directory
После возврата на платформу 8.3.24 (изменение пути к wsap24.so в конфиге и перезапуск апача) - все работает как и работало годами раньше.
В системных логах каких-либо ошибок доступа не наблюдается (в access.log апача только та же запись, что и в первой цитате).
Естественно, все права на файлы и каталоги у разных дистрибутивов платформы идентичные. Отключение SELinux эффекта также никакого не дало.
Саппорт, сославшись на то, что под Федорой они платформу не тестировали, умыл руки.
Кто-нибудь сталкивался с подобным? В какую сторону копать?
В общем, разобрался с причиной ошибки на Fedora Server.
Дело оказалось в настройке сервиса апача MemoryDenyWriteExecute.
По умолчанию, она включена.
Чтобы ее деактивировать, нужно отредактровать (либо создать, если ранее другие настройки апача не менялись) файл /etc/systemd/system/httpd.service.d/override.conf, добавив в секцию [Service] соответствующую строку:
[Service]
MemoryDenyWriteExecute=no
После необходимо обновить конфигурацию systemd, выполнив команду:
# systemctl daemon-reload
И (пере)запустить апач.
Проверил на релизах 8.3.26.1540 и последнем 8.3.27.1508 - полет нормальный.
При настройке нигде логины/пароли не указываются? Где-то они стали регистрозависимыми, т.е. заглавная буква или строчная имеет значение. И в пути публикации, имя базы, адреса каталогов, кажется, тоже.
(2) Нет, пароли нигде не указываются и до них дело не доходит - ошибка возникает до появления окна выбора пользователя.
Все пути также указаны с учетом регистра везде.
Я все же склоняюсь к тому, что проблема в правах доступа и/или каких-то специфических путях к файлам/каталогам, но локализовать это точнее не выходит. Пробовал менять расположение временных файлов в default.vrd, но также безрезультатно. Куда еще эта зараза пытается ломиться и что ей в этом мешает - непонятно.
(3) Скажите проблему не победили? Сейчас на Ред ОС 8 смаркетанил так же веб сервер и установил платформу 8.3.26.1521 сситуация аналогичная:
HTTP: Internal server error
Ошибка при работе с ресурсом /e1cib/login?clnPid=18939&clnId=8bd465bb-f880-46a2-8eb8-b8c87283ea4c&vl=ru_RU&ni=-772019788&screenwidthcharunits=1755&ld=jblw4QoT9SPskLuQZUhLrX19rGaChukDzYrzlNeWMNcRvutnk94NQoys_6Vyc1gu8R4VLKCZ5f3SXT6Pxir8teFlpYtrzvr5TS4htrL38HNFtRt8L5sV-bDVLVUlwQkHIdRuYD_gpWxBuZZKEUkC98fT47BRQ6XXGVHdiA1OO2k=&nm=25849381962358895&version=8.3.26.1521
Но у меня пока не было слишком много времени, чтобы вплотную ей заниматься.
Проверил только по списку зависимостей - все установлены, вряд ли дело в них.
Осталось разве что на голой ОС пробовать завести, чтобы исключить какие-нибудь внесенные на этапе конфигурирования настройки.
В общении с техподдержкой тоже особых идей новых не появилось ни у меня, ни у них.
Хотя в саппорте мне написали, что попробовали воспроизвести баг на РедОС и не обнаружили его:
Получилось перепроверить на ОС РедОС и Ubuntu 22 - на платформе 8.3.25.1501 такой проблемы нет.
(6) Да, но как уже писал выше, там мне ничем конкретным помочь не смогли, сославшись на то, что т.к. официально эту ОС не поддерживают, то не занимались тестированием работы платформы под Федорой.
А по описанию ошибок (которые не дают достаточной информации), без тестов, не могут подсказать, в чем именно может быть причина такого поведения.
Столкнулся с подобной ошибкой при попытке веб-доступа к БД на АльмаЛинукс, но правда права нигде не редактил особо.
Но где и как их выставлять правильно - тоже нигде не пишут, всё общими фразами...
Пока что грешу на права, тк 1С запускается из под клиента на винде
(8) Тоже склоняюсь к тому, что проблема с правами где-то в не очевидном для меня месте.
После очередной попытки обновиться до платформы v8.3.26.1540, ошибка, при попытке подключиться к базе через браузер, изменилась на чуть более подробную (но все равно недостаточно подробную для локализации проблемы):
1C:Enterprise 8 application error:
Ошибка загрузки компоненты backbas: 2(0x00000002): /opt/1cv8/x86_64/8.3.26.1540/backbas.so: cannot make segment writable for relocation: Permission denied
cannot make segment writable for relocation: Permission denied
У себя нашёл причину!!!
Нужно в папке дистра, например /opt/1cv8/x86_64/8.3.25.1374/ поменять права на файл wsap24.so - по дефолту там root:root и права 644, а нужно изменить права на 777 или изменить пользователя и группу этого файла, чтоб у апача (httpd) было право на выполнение этого файла.
И всё заработало!
(14) Права 777 я привёл для примера - это эффективный способ понять, поможет или нет.
Естественно, если это поможет, то нужно выставить соответствующие права, например 654, добавив юзера apache в группу 1с, кстати и наоборот тоже нужно сделать - юзера 1С в группу апача (видел статьи, в которых это описывалось)
По дефолту на файле права 644, то есть без возможности запуска - в этом случае не заработает без смены прав как ни крути
Ни повышение прав, ни смена владельца как отдельно на модуль веб-сервера, так и на всю директорию платформы с ее содержимым, не дали никакого результата в моем случае.
Да и версии вплоть до 8.3.24 тоже прекрасно обходятся стандартными правами.
(20) Я в эти выходные тестировал в виртуалках, в том числе и на других, поддерживаемых дистрах (после того как техподдержка в очередной раз послала, сославшись на отсутствие поддержки Федоры). На RedOS 8 тоже сначала не завелось, но после выставления httpd_execmem=1 в флагах SELinux, заработало. Ни с правами, ни с чем-то еще играть не пришлось. Попробуйте, если еще не.
Жаль, что на Fedora проблема не в этом.
Последнее, что удалось выжать из саппорта:
>> Сервер Fedora Linux x64,
>> На сервере ядро 6.11.8.
>> cannot make segment writable for relocation: Permission denied
Такое сообщение об ошибке может быть возвращено операционной системой при загрузке библиотеки, если операционная система не поддерживает "Generate position-independent code (PIC)".
Если информация об операционной системе осталась актуальной, то убедитесь, пожалуйста, в вашем дистрибутиве есть поддержка PIC и системные библиотеки собираются с его поддержкой.
На текущий момент есть факт: при загрузке библиотеки операционная система возвращает ошибку "cannot make segment writable for relocation: Permission denied".
Возможно, какая-то из системных библиотек была собрана без поддержки PIC.
Но что-то я в этом сильно сомневаюсь. Появились мысли, что возможно надо поискать в настройках сервиса апача в systemd, может он какие-то ограничения накладывает на доступ, но это уже в следующие выходные.
(22) Список всех флагов SELinux выводится по команде "getsebool -a" (можно погрепать: "getsebool -a | grep httpd", чтобы посмотреть только относящиеся к апачу).
Соответственно, установить (или снять) любой из них можно командой "setsebool <имя_флага> 1/0/on/off".
В данном случае, нужна команда "setsebool httpd_execmem 1" (будет работать до перезагрузки), либо "setsebool -P httpd_execmem 1" (будет работать постоянно).
(23) Спасибо!
После изменения флага пошла другая ошибка
Ошибка загрузки компонент работы с файловым вариантом информационной базы
по причине:
Ошибка загрузки компоненты 'help'
по причине:
Не удалось получить имя временного файла. Проверьте права доступа к директории временных файлов.
[AccessViolation]
Теперь понятно что с доступом беда.
apache сделал права доступа на базу + 1Cv8Temp в рекурсивно.
1С так рекомендует.
(24) посмотрел местоположение папки temp в /mnt/raid1/demo/default.vrd прописано temp="/mnt/raid1/temp/" дал на эту папку права apache. Не завелось ))).
Куда и какие еще права надо дать. Мне это дрочи....во надоело уже.
(25)
Я у себя в рабочем варианте делал temp="/tmp/1C".
Если для апача в файле сервиса systemd включено PrivateTmp, то он кладет временные файлы в каталог вида /tmp/systemd-private-...-httpd.service-.../tmp/1C.
Если PrivateTmp выключено, то сразу в /tmp/1C.
И в первом и во втором случае проблем с доступом к временным файлам у 1С больше не возникало.
Единственно, если баз крутится несколько, то надо назначить для них отдельные каталоги, например, /tmp/1C/Base1 и т.д., чтобы не было конфликта при совпадении имен файлов.
Еще как возможная причина - у этой директории нет контекста SELinux httpd_tmp_t, в отличие от стандартного временного каталога апача в /tmp.
Ну и каталогу с базами тоже желательно дать контекст httpd_sys_rw_content_t или, если планируется еще расшаривать доступ и для самбы, public_content_rw_t и разрешить апачу писать туда, включив флаг SELinux httpd_anon_write.
В общем, разобрался с причиной ошибки на Fedora Server.
Дело оказалось в настройке сервиса апача MemoryDenyWriteExecute.
По умолчанию, она включена.
Чтобы ее деактивировать, нужно отредактровать (либо создать, если ранее другие настройки апача не менялись) файл /etc/systemd/system/httpd.service.d/override.conf, добавив в секцию [Service] соответствующую строку:
[Service]
MemoryDenyWriteExecute=no
После необходимо обновить конфигурацию systemd, выполнив команду:
# systemctl daemon-reload
И (пере)запустить апач.
Проверил на релизах 8.3.26.1540 и последнем 8.3.27.1508 - полет нормальный.
Какой-то странный и вредный совет. Фактически, этот параметр запрещает выполнение кода в сегментах данных, по крайней мере запрещает писать в сегменты кода. На кой хрен 1С пытается там что-то изменить? Я не знаю. А может быть у чела на компе майнер завелся или еще чего. Вы это там осторожнее с настройками.
Кто ж ее знает. Даже саппорту неведомо, чего они там такого нахеровертили после 8.3.24.
Дополнительно посмотрел, как обстоят дела на RedOS в виртуалке: по умолчанию такой опции там у апача нет, поэтому все работает при прочих равных. При ее активации, ошибка также начинает воспроизводиться, как и на федоре.
Мужики добрый вечер, а скажите кто как справляется с раздуванием оперативной памяти при работе в с опубликованной файловой БД, а то 32гБ за два дня полны. Работает 5 человек. Спасибо!