Composer, ubuntu и права
Composer, ubuntu и права
Всем привет! Имеем ubuntu, php7, nginx
Создал папку /var/www/somesite
Подтянул туда проект через git
Изменил владельца sudo chmod -R www-data:www-data /var/www/somesite
1) Пишут, что composer нужно использовать не через sudo, а без sudo выдает мне permissions denied. Что нужно сделать? Может как то подправить пользователя, от имени кого composer команды выполняются?
2) после composer install файлы и папки (которые появились) - не принадлежат www-data, что тут делать?
3) вообще, обязательно ли, чтоб проект был от www-data? и как composer\git без sudo использовать?
4) даже php init без sudo не отрабатывает
5) composer локально или глобально нужно ставить?
Создал папку /var/www/somesite
Подтянул туда проект через git
Изменил владельца sudo chmod -R www-data:www-data /var/www/somesite
1) Пишут, что composer нужно использовать не через sudo, а без sudo выдает мне permissions denied. Что нужно сделать? Может как то подправить пользователя, от имени кого composer команды выполняются?
2) после composer install файлы и папки (которые появились) - не принадлежат www-data, что тут делать?
3) вообще, обязательно ли, чтоб проект был от www-data? и как composer\git без sudo использовать?
4) даже php init без sudo не отрабатывает
5) composer локально или глобально нужно ставить?
Последний раз редактировалось S c 2017.09.18, 15:10, всего редактировалось 1 раз.
Re: Composrt, ubuntu и права
myuser:www-data
Re: Composrt, ubuntu и права
Дмитрий, спасибо. После этого я могу не использовать sudo?
Re: Composrt, ubuntu и права
Как по мне хранить проекты удобнее в директории пользователя.Создал папку /var/www/somesite
Код: Выделить всё
/home/boris/usr/www/somesite.dev
Re: Composrt, ubuntu и права
тема совсем же о другом...
Re: Composrt, ubuntu и права
Запускать от пользователя Либо в fpm пул настроить на определенного пользователя, а если апач, то mpm itk
и никаких проблем с правами и по безопасности чутка повыше
и никаких проблем с правами и по безопасности чутка повыше
Re: Composrt, ubuntu и права
как запускать тот же композер\гит от пользователя www-data к примеру?
Re: Composrt, ubuntu и права
www-data не будет участвовать вообще
Все будет управляться от реального пользователя.
Создаем юзера webuser
Создаем fpm pool для этого юзера:
/etc/php/7.1/fpm/pool.d/webuser.conf
Код: Выделить всё
[webuser]
user = webuser
group = webuser
listen.owner = nginx
listen.group = nginx
listen = /run/php/webuser-fpm.sock
// прочие настройки
Код: Выделить всё
location ~ \.php {
fastcgi_pass unix:/run/php/webuser-fpm.sock;
}
Re: Composrt, ubuntu и права
Интересное решение, спасибо!
Re: Composer, ubuntu и права
Мой "рецепт" запуска composer'a такой:
С недавних времен для разработки использую Ubuntu + Docker. Файловая система ext4.
Есть 3 контейнера: NGINX, MariaDB, PHP7. В последнем контейнере у меня также установлен Composer и разная мелочь.
Настройки PHP-FPM:
Настройки NGINX (nginx.conf)
Source код проектов лежит в каталоге на моей дев хостовой машине и маунтится в контейнеры NGINX и PHP7. (это наверное не best practices, но вроде довольно распространено при разработке)
Мой текущий пользователь на хостовой машине имеет тот же UID/GID что и пользователь www-data внутри контейнеров. Поэтому нет проблем с разрешениями на файлики созданные PHP и наоборот.
Когда я "захожу" в консоле в контейнер с PHP, там я становлюсь по дефолту root пользователем, и естественно если я запущу composer create-project он выполнится от рута и на хостовой машине будут проблемы с правами на созданные композером файлики .
Поэтому я запускаю компоузер так:
выполняю substitute user и становлюсь пользователем www-data:
выполняю нужные мне команды композера (уже выполнятся от пользователя www-data)
заканчиваю быть пользователем www-data и становлюсь обратно root
Если у Вас не получится выполнить "su www-data", посмотрите что у Вас содержится в файлике:
Обычно там строка пользователя www-data имеет такой вид:
- тут обратите внимание на конец строки, и выполните правку в привычном текстовом редакторе (vi, vim, nano...)
..и попробуйте вновь выполнить
С недавних времен для разработки использую Ubuntu + Docker. Файловая система ext4.
Есть 3 контейнера: NGINX, MariaDB, PHP7. В последнем контейнере у меня также установлен Composer и разная мелочь.
Настройки PHP-FPM:
Код: Выделить всё
listen.owner = www-data
listen.group = www-data
...
user = www-data
group = www-data
Код: Выделить всё
user www-data;
Мой текущий пользователь на хостовой машине имеет тот же UID/GID что и пользователь www-data внутри контейнеров. Поэтому нет проблем с разрешениями на файлики созданные PHP и наоборот.
Когда я "захожу" в консоле в контейнер с PHP, там я становлюсь по дефолту root пользователем, и естественно если я запущу composer create-project он выполнится от рута и на хостовой машине будут проблемы с правами на созданные композером файлики .
Поэтому я запускаю компоузер так:
выполняю substitute user и становлюсь пользователем www-data:
Код: Выделить всё
su www-data
Код: Выделить всё
composer create-project ....
Код: Выделить всё
exit
Код: Выделить всё
cat etc/passwd
Код: Выделить всё
www-data:x:1000:1000:www-data:/var/www:/usr/sbin/nologin
или
www-data:x:1000:1000:www-data:/var/www:/bin/false
Код: Выделить всё
/usr/sbin/nologin или /bin/false
на
/bin/bash
Код: Выделить всё
su www-data
Последний раз редактировалось Sasha_ch 2018.05.31, 18:20, всего редактировалось 2 раза.
CPU comparison platform: CPU Boss Multi language, Yii2 powered.
Re: Composer, ubuntu и права
Запускаешь воркер от nginx а авторизуешься под www-data. Зачем?
Re: Composer, ubuntu и права
в nginx.conf у меня содержимое такое:
Код: Выделить всё
user www-data;
#user nginx;
p.s. только что запустил с хост машины команду: docker container top my_nginx_containers_name_here
вывод такой:
Код: Выделить всё
UID | CMD
root | nginx: master process nginx -g daemon off;
myuser | nginx: worker process
CPU comparison platform: CPU Boss Multi language, Yii2 powered.