Я борюсь с правильной настройкой пользователей и разрешений на папки для Magento2. Сайт установлен в /var/www/html
, веб-сервер Apache работает как www-data:www-data
в Ubuntu 16.04.
Мой пользователь командной строки - mosadmin
, но у него нет разрешений на чтение и запись для некоторых папок, поэтому я вызываю большинство команд, используя sudo
.
Все работает нормально, если я задаю www-data как владельца и группу всего:
$ sudo chown -R www-data: /var/www/html
Проблема в том, что когда я устанавливаю модули или выполняю некоторые задачи администратора, мне обычно приходится звонить
$ sudo php bin/magento setup:upgrade
$ sudo php bin/magento setup:static-content:deploy
Когда я делаю это, некоторые папки, такие как подпапки var/generation
или var/cache
, получают root:root
как владелец, и Magento не может писать туда. Это вызывает ошибки и выводит весь сайт из строя, если я не верну вручную все данные в www-данные.
Очевидно, я хочу, чтобы разрешения были установлены так, чтобы мне больше не приходилось их трогать и убедиться, что даже после вызова команд администратора сайт будет работать. Я пробовал несколько вещей, но ничего из этого не сработало на 100%.
Одна вещь, которую я попробовал, - установить бит управления для некоторых папок, который гарантирует, что вновь созданные подпапки будут наследовать родительскую группу папок, а не группу пользователя, вызывающего команду:
$ cd /var/www/html
$ sudo chmod -R g+s pub/static pub/media var/cache var/generation
Это, похоже, решает проблему с тем, что папки кеша недоступны для записи, но я все еще получаю ошибки в var/generation
. Проблема здесь в том, что некоторые папки там восстанавливаются с владельцами root:www-data
, и, поскольку они имеют разрешения 755
, группа / apache не может писать туда, и я облажался.
Я думаю, что umask
должен решить эту проблему, но как ни странно, когда я звоню umask
, он дает мне 0002
, так что это должно дать разрешения на запись для группы. Тем не менее, когда я делаю sudo mkdir test
, у него есть разрешения 755. Если я изменяю маску на что-то другое, например umask 0022
, ничего не меняется, и разрешения для новых папок остаются прежними.
Я не гуру Linux, и у меня постепенно заканчиваются идеи. Есть ли лучший способ установить это так, чтобы мне не приходилось возвращать владельца всех файлов после каждой регенерации контента?