Como eu mudo o usuário NGINX?

27

Eu tenho um script PHP que cria um diretório e gera uma imagem para o diretório. Isso funcionou muito bem com o Apache, mas recentemente decidimos mudar para o NGINX para aproveitar melhor nossa RAM limitada. Eu estou usando o comando PHP mkdir () para criar o diretório:

mkdir(dirname($path['image']['server']), 0755, true);

Após a mudança para o NGINX, recebo o seguinte aviso:

Warning: mkdir(): Permission denied in ...

Eu já verifiquei todas as permissões dos diretórios-pai, então determinei que provavelmente precisaria mudar o 'usuário' do NGINX ou do PHP-FPM, mas não sei como fazer isso (nunca tive para especificar permissões de usuário para o APACHE). Eu não consigo encontrar muita informação sobre isso. Qualquer ajuda seria ótima!

(Nota: Além deste pequeno problema, a mudança para o NGINX foi bastante simples; estou usando pela primeira vez e literalmente levou apenas cerca de 10 minutos para começar a trabalhar com o NGINX. Agora eu m apenas passando as dobras.)

    
por David 29.09.2012 / 17:12

3 respostas

50

Executar nginx & php-fpm como www: www

1. Nginx

Edite nginx.conf e defina usuário como www www;

If the master process is run as root, then nginx will setuid()/setgid() to USER/GROUP. If GROUP is not specified, then nginx uses the same name as USER. By default it's nobody user and nobody or nogroup group or the --user=USER and --group=GROUP from the ./configure script.

2. PHP-FPM

Edite o php-fpm.conf e defina o usuário e o grupo como www .

user - Unix user of processes. Default "www-data"

group - Unix group of processes. Default "www-data"

    
por 29.09.2012 / 17:23
19

Em Ubuntu 14.04 , o arquivo para alterar usuário e grupo em PHP-FPM é: /etc/php5/fpm/pool.d/www.conf . Neste arquivo, altere estes parâmetros:

user = www
group = www
listen.owner = www
listen.group = www
    
por 07.11.2015 / 14:17
5

Para responder à sua questão real , basta alterar a linha user em nginx.conf da seguinte forma:

user    [username];

Exemplo:

user    www-data;

O usuário preferencial para o Nginx executar como realmente difere entre os sistemas operacionais. Às vezes, o Nginx deve ser executado como www-data . Outras vezes, na verdade, ele deve ser executado como nobody .

Em alguns sistemas operacionais (como o Windows), isso nem importa, e a linha user em nginx.conf pode ser comentada ou totalmente excluída.

    
por 07.11.2015 / 14:25