Задать вопрос
@wedytd

Как настроить nginx под разных пользователей?

Есть у меня vds сервер с debian. На нём поднят nginx с php-fpm. Была написана панель управления на php (Использовать панели типа ispamanagerа я не хочу) с регистрацией юзера когда он вводит свои данные в форму полученные данные из формы отправляются в базу данных где есть таблица users и поле domain php берёт данные из формы и создаёт сайт с именем который ввёл пользователь. Но владелец у сайта www-data как сделать чтобы владельцем сайта был пользователь который его создал?
  • Вопрос задан
  • 775 просмотров
Подписаться 1 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
alekciy
@alekciy
Вёбных дел мастер
Для этого нужно запустить отдельный pool задав директиву user см. https://www.php.net/manual/ru/install.fpm.configur... . Тогда php будет выполняться от заданного юзера, а не www-data.

Я на своем сервере делаю так. У каждого отдельного юзера есть свой php pool который работает от своего юзера + слушает сокет на 127* интерфейсе. Пример конфига /etc/php/7.0/fpm/pool.d/aliya.conf (юзер это aliya):
[aliya]
listen                 = 127.0.0.1:9041
listen.backlog         = 20
listen.allowed_clients = 127.0.0.1
catch_workers_output   = yes

user  = aliya
group = aliya

pm                   = dynamic
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.start_servers     = 3
pm.max_children      = 5
pm.max_requests      = 50

env[HOSTNAME] = $HOSTNAME
env[PATH]     = /usr/local/bin:/usr/bin:/bin
env[TMP]      = /tmp
env[TMPDIR]   = /tmp
env[TEMP]     = /tmp

php_admin_value[display_errors]  = stderr
php_flag[display_startup_errors] = on
php_admin_flag[log_errors]       = on

php_admin_flag[mail.add_x_header] = on
php_admin_value[sendmail_path]    = /usr/sbin/mini_sendmail -t -f***@***a.ru
php_admin_value[mail.log]         = /var/www/aliya/data/log/mail.log

php_admin_value[memory_limit]      = 256M
php_admin_value[session.save_path] = /tmp
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Сделать шелл скрипт, который создаёт пользователя, папку, конфиг раздаёт права и всё что полагается. Не забываем добавлять www-data в группу пользователя.
Добавить этот шелл скрипт в /etc/sudoers c NOPASSWD и дергать через sudo из РНР.
Ответ написан
402d
@402d
начинал с бейсика на УКНЦ в 1988
написать свой аналог ispmanager обойдется дороже чем купить лицензию.
Как вариант посмотрите опенсорсные продукты.
А чтобы написать, то что Вы хотите. Сперва надо научиться это делать
через консоль дебиана.
Потом соберете все в один скрипт с параметрами
И уже последним шагом из пыха соберете нужную строку для запуска этого скрипта.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽