Разрешения веб-сервера Laravel / PyroCMS и PHP Composer

Может ли кто-нибудь помочь мне с некоторыми разрешениями unix? Я борюсь с этим уже несколько месяцев и не могу понять это правильно.

Мой веб-сервер работает как www-data в группе www-data, и я делаю свои композиторские вещи как пользователь с именем finn с привилегиями sudo (но я определенно не sudo composer: joy :).

Судя по тому, что я читал, пользователю часто легче владеть всеми файлами / каталогами, но он должен быть в группе www-data, поэтому для этого я написал сценарий bash:

#!/bin/bash
sudo chown -R finn:www-data /srv/pyrocms
sudo usermod -a -G www-data finn
sudo find /srv/pyrocms -type f -exec chmod 664 {} \;
sudo find /srv/pyrocms -type d -exec chmod 775 {} \;
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

Где цель 1. Сделайте все для меня 2. Добавьте меня в группу www-data 3. Установите разрешения на чтение / выполнение. 4. Измените группу на www-data для всех важных storage и bootstrap/cache. 5. Дайте мне и группе www-data права на чтение / запись / выполнение на storage и bootstrap/cache.

Эта проблема! После выполнения composer update в качестве пользователя finn я часто сталкиваюсь с проблемами, когда веб-сервер не может записывать файлы кеша в storage/streams/{site-slug}/cache/, и он выбрасывает 500 ошибок.

Что я могу сделать, чтобы это исправить?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
126
2

Ответы 2

Поскольку у вас уже есть привилегии sudo и вы используете sudo, может быть проще войти в систему как пользователь www-data и выполнять все задачи как www-data. Если все будет принадлежать www-data, проблем с привилегиями не будет:

sudo su -s /bin/bash www-data
composer install

В качестве альтернативы (и, возможно, лучше) вариант было бы создать выделенного пользователя (например, www-finn) и всегда запускать PHP как www-finn. Этого должно быть довольно легко добиться, если вы используете php-fpm для запуска процессов PHP для обработки веб-запросов:

[www-finn]  
user = www-finn
group = www-finn
...
listen.owner = www-finn
listen.group = www-finn

Добавьте www-data в группу www-finn, чтобы веб-сервер имел доступ к файлам www-finn. А затем сделайте www-finn владельцем вашего веб-приложения:

usermod -a -G www-finn www-data
sudo chown -R www-finn:www-finn /srv/pyrocms

Это не должно работать. По крайней мере, на моем сервере я не мог запустить его с аналогичной конфигурацией.

Piterden 29.09.2018 05:39

Спасибо, rob006! Я вижу, что вы, Питерден, имеете идею запустить PHP-Fpm как мой пользователь, так что я займусь этим!

Finn LeSueur 29.09.2018 09:02

Вы должны запускать composer create-project pyrocms/pyrocms pyrocms из папки /home/finn/srv и под finn и определенно НЕ пользователем sudo (finn может быть sudoer или нет, это не имеет значения).

Конфигурация пула PHP-FPM:

[finn]
user = finn
group = finn

listen = /run/php/finn-fpm.sock
listen.allowed_clients = 127.0.0.1

listen.owner = www-data
listen.group = www-data

Конфигурация хоста Nginx:

location ~ [^/]\.php(/|$) {
  fastcgi_param     SCRIPT_FILENAME $document_root$fastcgi_script_name;

  fastcgi_pass      unix:/run/php/finn-fpm.sock;
  fastcgi_index     index.php;
  include           /etc/nginx/fastcgi_params;
}

Тогда вы не можете изменять какие-либо разрешения под своим пользователем unix finn, но если возникнут проблемы, просто запустите следующий под пользователем finn:

find /home/finn/srv/pyrocms -type f -exec chmod 644 {} \;
find /home/finn/srv/pyrocms -type d -exec chmod 755 {} \;
chmod -R /home/finn/srv/pyrocms/storage 777
chmod -R /home/finn/srv/pyrocms/bootstrap/cache 777
chmod -R /home/finn/srv/pyrocms/public/app 777

Также обратите внимание, что sudo вам понадобится только для редактирования ваших конфигураций в папке /etc.

Спасибо, Питерден! Есть ли какие-либо опасения по поводу запуска PHP от имени привилегированного пользователя? И почему в этих папках должно быть 777? Зачем миру нужны чтение / запись / выполнение, когда наверняка достаточно чтения / записи пользователя / группы?

Finn LeSueur 29.09.2018 08:59

Не совсем понимаю, что вы имеете в виду, говоря о запуске php от имени привилегированного пользователя. В любом случае ваша служба php-fpm работает под root.

Piterden 29.09.2018 13:44

Ха, а не могли бы вы объяснить мне, зачем вашей группе finn эти разрешения? Мы говорим только о пользователе finn, а не о группе. Кроме того, почему у вас 664 и 775? Правильные разрешения должны быть 640 и 750.

Piterden 29.09.2018 13:47

Я перешел на 644 и 755, как в вашем примере ? Группе finn, вероятно, не нужны эти разрешения, вы правы

Finn LeSueur 05.10.2018 20:39

Не совсем - в данный момент я не использую FPM. Конфигурация Apache по умолчанию была с модом PHP7, так что я просто прикидываю ?

Finn LeSueur 06.10.2018 13:11

Другие вопросы по теме