Сайты в пуле BitrixVM - добавление, каталоги, права и доступ
Заводим сайт в пуле окружения, раскладываем права на файлы и настраиваем доступ к серверу для разработки.
Решение
Смотрим состав пула и каталоги сайтов:
/opt/webdir/bin/bx-sites -a list # сайты пула, их домены и каталогиls -ld /home/bitrix/www /home/bitrix/ext_www/* # корни основного и остальных# сайт, созданный руками мимо этого списка, окружение не обслуживаетОсновной сайт живёт в отдельном каталоге, дополнительные - каждый в своём. Окружение обслуживает только те сайты, которые числятся в этом списке, и всё остальное для него не существует.
Добавляем сайт в пул:
/opt/webdir/bin/bx-sites -a create -s shop -u shopuser \ --site_type=kernel --dir=/home/bitrix/ext_www/shop# окружение само создаст каталоги, пул процессов и конфигурацию веб-сервераЗаведённый через меню сайт сразу получает своё окружение целиком: конфигурацию веб-сервера, пул процессов, место для сертификата и резервных копий. Каталог, созданный руками, ничего этого не получает.
Проверяем и выставляем права на файлы:
# владелец - пользователь сайта, группа - пользователь веб-сервераchown -R bitrix:bitrix /home/bitrix/wwwfind /home/bitrix/www -type d -exec chmod 755 {} \;find /home/bitrix/www -type f -exec chmod 644 {} \;Права теряются при копировании от имени администратора и при распаковке архивов. Симптом всегда один: сайт открывается, а загрузка файлов и обновление модулей падают с ошибкой записи.
Настраиваем доступ для разработки:
# ключ кладём пользователю сайта, а не root: файлы должны создаваться от негоmkdir -p /home/bitrix/.ssh && chmod 700 /home/bitrix/.sshcat developer.pub >> /home/bitrix/.ssh/authorized_keyschown -R bitrix:bitrix /home/bitrix/.sshПодключение от имени администратора создаёт файлы с чужим владельцем, и через день сайт перестаёт их читать. Разработку ведут от пользователя сайта, а административные права поднимают только там, где они нужны.
Несколько сайтов на одном сервере различаются доменами, а не сетевыми адресами. Один внешний адрес обслуживает их все: веб-сервер выбирает нужный сайт по имени из запроса, и отдельного адреса каждому из них не требуется.
Разделение сайтов по пользователям имеет смысл там, где у проектов разные владельцы. Тогда каждый видит только свой каталог, а случайная команда в чужом корне попросту не выполняется. Для сайтов одного владельца общий пользователь проще и не создаёт лишней путаницы с правами.
Локаль системы стоит проверить до первой установки окружения. Меню и его скрипты выводят русский текст, и в чужой локали он превращается в мусор, а имена файлов с русскими названиями ломаются уже при распаковке архивов.
Типичные проблемы
Меню окружения не видит сайт.
Он заведён руками, минуя меню. Окружение обслуживает только сайты своего пула: сертификаты, копии и почта проходят мимо остальных.
Сайт открывается, но не сохраняет файлы.
Владелец файлов - администратор, а не пользователь сайта. Веб-сервер читает такие файлы, но писать в каталог не может.
Второй сайт открывает содержимое первого.
Домен не привязан к своему сайту в настройках окружения. Веб-сервер отдаёт сайт по умолчанию.
После работы из среды разработки сломались права.
Подключение шло от администратора, и новые файлы получили его владельца. Разработку ведут от пользователя сайта.
Русские имена файлов превращаются в мусор.
Локаль системы отличается от UTF-8. Это видно и в меню окружения, и при распаковке архивов.
Частые вопросы
Сколько сайтов держать на одном сервере?
Столько, сколько выдерживает память: у каждого свой пул процессов PHP. Магазин с обменом и посещаемостью обычно не сосуществует с чужими проектами.
Можно ли перенести сайт между пулами?
Да, как обычный перенос: файлы, база и настройки подключения. Запись в пуле нового сервера создают через меню до переноса файлов.
Нужен ли отдельный пользователь на каждый сайт?
На общем сервере с разными владельцами - да, это разделяет доступ к файлам. Для сайтов одного владельца достаточно общего пользователя.
Как отдать разработчику доступ только к одному сайту?
Отдельным пользователем с правами на каталог этого сайта. Права на каталоги соседних сайтов при этом не выдаются.
Смежное
-
BitrixVM и веб-окружение - оглавление подтемы
-
Установка и настройка BitrixVM - первый запуск окружения
-
Мультисайтовость - несколько сайтов одной установки
-
Перенос сайта на другой сервер - переезд между пулами
-
Поддомены и второй сайт: одна установка или две - что выбрать под второй проект
-
Меню окружения и службы: что где лежит и как перезапустить - меню окружения и его правила
-
Доступ к серверу: учётные записи, ключи, права, отзыв - кто и как заходит на этот сервер
-
Сертификат не обновился: разбор причин - сертификат заведён не у всех сайтов пула