Nginx не начинает использовать systemctl

Я определил пользовательский error_log для виртуального сервера внутри, это - каталог как так:

server {
        listen 80;
        server_name www.example.com;
        root   /home/www.example.com;
        error_log /home/www.example.com/error.log;
}

это - мой nginx.conf:

user  nginx;
pid  /run/nginx.pid;
worker_processes  1;

Nginx запускается как корень с, он - команды без проблем:

nginx -t
nginx 

Но когда я пытаюсь запустить его с помощью systemctl, это не запустится, и состояние показывает это:

nginx: [emerg] open() "/home/www.example.com/error.log" failed (13: Permission denied)

Это - мой nginx.service:

[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Я почти попробовал что-либо как изменение user:group веб-каталога к nginx:nginx. Даже если я удаляю error_log, он начинает использовать systemctl, но он не может получить доступ к веб-каталогу, хотя он работает при том же пользователе.

Я не могу выяснить, почему nginx не может получить доступ к тому каталогу, когда он запускается с systemctl, в то время как он имеет доступ, когда он запускается непосредственно.

Я нахожусь на песнях 7.

3
задан 26 March 2015 в 13:07
4 ответа

SELinux, вероятно, не разрешает nginx доступ к каталогу / home . Попробуйте изменить корень на / var / www в качестве теста. Также, когда вы запускаете nginx, запустите journalctl -x в другом сеансе, чтобы увидеть сообщения об ошибках и разместить их здесь.

3
ответ дан 3 December 2019 в 07:27

Возможно, причина в SELinux. Попробуйте отредактировать / etc / sysconfig / selinux
// # SELINUX = принудительное применение
SELINUX = отключено
сделайте настройку действующей немедленно после перезагрузки

-2
ответ дан 3 December 2019 в 07:27

Ответ на другой вопрос может помочь будущему искателю ответить на этот вопрос; он предоставляет достаточно подробных сведений о веб-серверах и SELinux: https://serverfault.com/a/551801/101931

0
ответ дан 3 December 2019 в 07:27

Вот как я решил это согласно мануалу nginx

#semanage permissive -a httpd_t
0
ответ дан 10 May 2020 в 14:00

Теги

Похожие вопросы