Ответ 1
Убедитесь, что вы запускаете тест в качестве суперпользователя.
sudo nginx -t
Или у теста не будет всех разрешений, необходимых для успешного завершения теста.
Я новичок в системном администрировании. После установки nginx через кукольный на Ubuntu я получаю следующий вывод:
[alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
[warn] 1898#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
[emerg] 1898#0: open() "/var/log/nginx/access.log" failed (13: Permission denied)
Как мне избавиться от всех этих сообщений?
Я не хочу использовать командную строку напрямую (chown/chmod) и повторять ее каждый раз при создании нового сервера. Поэтому я думаю о том, что должно быть добавлено к манифесту марионеток.
Какова наилучшая практика sysadmin в этом случае: изменить владельца/разрешения для /var/log/nginx или хранить журналы в другом месте? Если chown/chmod - это путь, какие конкретные разрешения будут обеспечивать самый высокий уровень безопасности?
Я пробовал это, но это не помогло:
file { '/var/log/nginx':
ensure => directory,
mode => '0755',
owner => 'www-data',
group => 'www-data',
recurse => true
}
Отредактировано:
[email protected]:~$ ps aux | grep [n]ginx
root 1001 0.0 0.1 62908 1388 ? Ss 08:47 0:00 nginx: master process /usr/sbin/nginx
www-data 1002 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1003 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1004 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1005 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
Убедитесь, что вы запускаете тест в качестве суперпользователя.
sudo nginx -t
Или у теста не будет всех разрешений, необходимых для успешного завершения теста.
Если я предполагаю, что ваш второй код является марионеткой, то у меня есть логическое объяснение, если файлы ошибок и журналов были созданы раньше, вы можете попробовать это
sudo chown -R www-data:www-data /var/log/nginx;
sudo chmod -R 755 /var/log/nginx;
Я столкнулся с подобной проблемой при перезапуске Nginx и нашел, что это причина SeLinux. Обязательно попробуйте либо отключить SeLinux, либо временно установить его в разрешающем режиме, используя следующую команду:
setenforce 0
Надеюсь, это поможет:)
только потому, что у вас нет права доступа к файлу, используйте
chmod -R 755 /var/log/nginx;
или вы можете перейти к sudo, затем
Разрешение на просмотр файлов журнала предоставляется пользователям, находящимся в группе adm.
Чтобы добавить пользователя в эту группу в командной строке:
sudo usermod -aG adm <USER>
Для меня я просто изменил selinux с принудительного на permissive, а затем я смог запустить nginx без ошибок.
Я просто устанавливаю двоичный путь nginx для замены пути /var/log/nginx/error.log
, а другой - с локальным путем.
$ perl -pi \
-e '[email protected]/var/log/nginx/@_var_log_nginx/@g;' \
-e '[email protected]/var/lib/nginx/@_var_lib_nginx/@g;' \
-e '[email protected]/var/run/[email protected]_var_run/[email protected];' \
-e '[email protected]/run/[email protected]_run/[email protected];' \
< /usr/sbin/nginx > nginx
$ chmod +x nginx
$ mkdir _var_log_nginx _var_lib_nginx _var_run _run
$ ./nginx -p . -c nginx.conf
Он работает для тестирования.
если вы не хотите запускать nginx как root.
Первый созданный файл журнала:
sudo touch/var/log/nginx/error.log
а затем исправить разрешения:
sudo chown -R www-data:www-data/var/log/nginx
sudo find/var/log/nginx -type f -exec chmod 666 {} \;
sudo find/var/log/nginx -type d -exec chmod 755 {} \;
Nginx необходимо запустить командой 'sudo /etc/init.d/nginx start'