Публикую актуальную на 2024 год инструкцию по настройке облачного хранилища в модуле "Облачные хранилища" для провайдера Selectel. Selectel в 2023 году переделал интерфейсы и управление доступом к ресурсам, поэтому старые инструкции для новых пользователей Selectel не работают.
Во вкладке "Подключение" заполняем поля: Активность: {важно чекбокс снять!!!} Сортировка: 500 Провайдер: S3 compatible storage Регион: {поле осталось пустым} Имя сервера (API host): s3.ru-1.storage.selcloud.ru Ключ доступа: {Access S3-ключ} Секретный ключ: {Secret S3-ключ} Подключаться с использованием https: {чекбокс отмечен} Контейнер: {оставить то, что подставилось автоматически} Только для чтения: {чекбокс снят} Каноническое имя домена (CNAME): {поле оставляем пустым}
Нажимаем "Применить".
Первый раз вышло сообщение "Ошибка добавления контейнера: нераспознанный ответ службы (ошибка #3)." Настоящая ошибка выглядела так "Error establishing an SSL connection". Поймал настоящую ошибку, изменив в файле bitrix/modules/clouds/classes/general/storage_service_s3.php массив для записи в лог. И в файле init.php включил логирование запросов к провайдеру с помощью константы define('BX_CLOUDS_TRACE', true);
Для исправления ошибки "Error establishing an SSL connection", открыл в браузере https://s3.ru-1.storage.selcloud.ru/ и экспортировал все сертификаты из цепочки. Сертификаты на сервере с сайтом добавил в доверенные.
После добавления сертификатов в доверенные ошибка ушла. Подключение сохранилось и в Selectel контейнер создался.
В Selectel контейнер создается как приватный. Переходим в контейнер на вкладку "Конфигурация" https://my.selectel.ru/storage/{storage uid}/containers/ru-1/{имя контейнера}/configuration, делаем контейнер публичным. После того как сделали контейнер публичным, рядом на вкладке "Домены", появляется ссылка на публичный домен. https://{контейнер uid}.selstorage.ru Копируем публичный домен без https:// в поле "Каноническое имя домена (CNAME)" на вкладке "Подключение" в Битриксе, которое ранее оставили пустым.
Когда поле Каноническое имя домена (CNAME) не заполнено, битрикс формирует ссылки такого вида: https://s3.ru-1.storage.selcloud.ru/{название контейнера}/{путь до файла}, по которым доступ к файлу запрещен. Когда в поле Каноническое имя домена (CNAME) вписываем публичный домен, который предоставляет Selectel, то ссылки становятся https://{публичный домен контейнера}/{путь до файла} и файлы начинают скачиваться.
Переходим на вкладку "Правила". По умолчанию там правило с пустыми полями. Заполняем значения в полях. Если оставить пустыми, то после активации подключения в хранилище полетят ВСЕ новые файлы.
Сохраняем.
В списке подключений https://example.ru/bitrix/admin/clouds...hp?lang=ru, когда все согласования пройдены, у подключения в контекстном меню нажимаем "Активировать", далее "Переместить файлы в облачное хранилище". Ждем перемещения, после этого сбрасываем кэш сайта.
Есть вопрос по доступу к файлам в бакете. Удалось ли запретить их отдачу по прямой ссылке, чтобы только Битрикс мог забирать файл и отдавать пользователю. А если у пользователя есть ссылка на файл, то он бы не мог его скачать? В Яндекс Клауде такое с ходу наладить не удалось и тему забросил.
По умолчанию создается приватный контейнер и доступ по прямой ссылке запрещен. Доступно ли в модуле "Облачные хранилища" чтение содержимого файла по API - не знаю. Не работал с приватными контейнерами.
Какое-то время не формировались фискальные чеки по оплатам. Потребовалось создание чеков коррекции для таких оплат. Требовалось выбрать завершенные оплаты за период, когда была сломана касса, и отобразить их как XML согласно документации XML сохранялся в файл и загружался в личном кабинете https://online.atol.ru/lk/ui/#/xml.
По умолчанию агенты на кроне запускаются раз в минуту.
Для запуска раз в секунду используется скрипт-прослойка.
# Содержимое command-every-second.sh
#!/bin/bash
command=$@
# Пробелы и косые в команде заменяются на нижние подчеркивания.
no_spaces=`echo $command | sed -e 's/\s/_/g' -e 's|/|_|g'`
# Имя файла для блокировки на время выполнения основной команды.
lockfile=/tmp/$no_spaces.lock
# Раз в секунду пытаемся поставить блокировку на команду и выполнить.
for i in {1..60}
do
/usr/bin/flock -n $lockfile $command
/bin/sleep 1
done
rm $lockfile
# Пример команды для крона.
crontab -e
* * * * * nice -n 1 ionice -c2 -n4 /var/www/www-root/data/command-every-second.sh /opt/php81/bin/php -f /var/www/www-root/data/www/example.ru/bitrix/php_interface/cron_events.php >/dev/null 2>&1
Утилиты nice и ionice устанавливаем отдельно под рутом, если не установлены. Утилиты используются для запуска агентов на кроне с более низким приоритетом, чем другие процессы на сервере.
Устанавливаем консольную утилиту для конвертации картинок в webp Оригинал: https://www.digitalocean.com/community...ur-website В оригинале есть как настроить для Ubuntu и Rewrite для Apache через .htaccess Для случаев, когда используется оригинальное имя картинки, требуется изменение в формировании webp_path. Например, в одну директорию заливают photo.jpeg и photo.png разного содержания, на выходе получается photo.webp для png, а картики в jpeg как будто и не было. Скрипты и настройки ниже делались для проекта с уникальными названиями картинок.
Сборка redis.so для ispmanager 5 Для php 8.1, для других версий меняется путь /opt/php74/, /opt/php82/ и т.д. Релизы в репозиториях igbinary и phpredis подбираются под версию php.
wget https://github.com/igbinary/igbinary/archive/refs/tags/3.2.14.zip -O igbinary.zip
unzip -o ./igbinary.zip
cd igbinary-3.2.14/
/opt/php81/bin/phpize
./configure --with-php-config=/opt/php81/bin/php-config
make && make install
#Обязательное расширение
echo 'extension=igbinary.so' > /opt/php81/etc/php.d/igbinary.ini
wget https://github.com/phpredis/phpredis/archive/refs/tags/5.3.7.zip -O phpredis.zip
unzip -o ./phpredis.zip
cd phpredis-5.3.7/
/opt/php81/bin/phpize
./configure --with-php-config=/opt/php81/bin/php-config --enable-redis-igbinary
make && make install
echo 'extension=redis.so' > /opt/php81/etc/php.d/redis.ini
#Рестарт сервера php, в данном случае apache
systemctl restart httpd
В php_info() проверить, что у redis появился доступный метод сериализации
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».