Laravel / PyroCMS Webserver и разрешения PHP Composer - PullRequest
0 голосов
/ 29 сентября 2018

Может ли кто-нибудь помочь мне с некоторыми разрешениями 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ошибки.

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

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Вы должны запустить 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;
}

Тогда вы не можете изменять какие-либо разрешения для пользователя finn unix, но если возникнут проблемы, просто запустите следующийпод 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.

0 голосов
/ 29 сентября 2018

Поскольку у вас уже есть привилегии 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
...