Śledziłem ten proces, instalując nginx na moim Ubuntu 10.04 Lucid Server http://library.linode.com/web-servers/nginx/installation/ubuntu-10.04-lucid
Zgubiłem się po stworzeniu skryptu init do uruchomienia nginx, a następnie wywołaniu /etc/init.d/nginx start. Gdy to zrobiłem, otrzymałem następujący błąd:
Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:17:27 [emerg] 859#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)
Jedynym sposobem, w jaki mogę go uruchomić, jest użycie sudo
go i uruchomienie procesu as root
, czego nie chcę.
Byłem chown
cały katalog ( chown -R nginx:nginx /opt/nginx
) i mam również chmod -R 755
katalog.
Dodanie user
dyrektywy zgodnie z sugestią CS3 również daje mi ten błąd, ale z dodatkową linią.
Starting nginx_main: Starting /opt/nginx/sbin/nginx...
nginx: [alert] could not open error log file: open() "/opt/nginx/logs/error.log" failed (13: Permission denied)
2012/03/16 18:48:34 [warn] 1606#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /opt/nginx/conf/nginx.conf:2
2012/03/16 18:48:34 [emerg] 1606#0: open() "/opt/nginx/logs/access.log" failed (13: Permission denied)
Jakieś pomysły?
and I've also chmod -R 755 the directory as well
Rób to dalej, a ostatecznie zapłacisz za to cenę. Przerażające jest obserwowanie, ilu ludzi jest w Internecie, sugerując to jako pierwszy port do „rozwiązania” każdego problemu. Unix nie da przyjaznej opinii, jeśli zrobisz coś kretyńskiego.Odpowiedzi:
Przede wszystkim powinny być uruchamiane skrypty init
gdy nie jesteś zalogowany jako root (gdy zalogowany użytkownik jest włączony sudo)
Po drugie, po uruchomieniu sudo /etc/init.d/nginx start ==> uruchamia główny proces nginx jako proces root i proces roboczy jako użytkownik określony w dyrektywie użytkownika nginx.conf (np. Www-data)
Czy możesz potwierdzić, czy cały proces w Nginxie jest uruchamiany przez roota podczas uruchamiania sudo /etc/init.d/nginx?
z
na przykład.
Sugestia: Ubuntu 10.04 LTS ma doskonałą obsługę pakietów ubuntu od zespołu nginx. Po co więc męczyć się instalowaniem ze źródła, jeśli nie masz wymagań dotyczących niestandardowego modułu wewnątrz nginx?
Skonsultuj się tutaj
Pakiet binarny zawiera już bardzo potrzebne moduły
źródło
Dodaj dyrektywę użytkownika w pliku nginx.conf
źródło
Moje 5 kopek na ten temat
nginx -V 2>&1 | sed 's/ --/\n--/g' | grep path
.. dostaniesz wszystkie inne ścieżki, które powinieneś zastąpić w niestandardowej konfiguracji lub z opcją „-g”.
źródło
nginx -V 2>&1 | sed 's/ --/\n--/g' | egrep --color '.*path.*|$'
W moim przypadku brakowało odwołania do pliku w moim pliku nginx.conf:
error_log /var/log/nginx/error.log warn;
Stał się: error_log warn;
Tak więc przypadkowo usunąłem odwołanie /var/log/nginx/error.log, co spowodowało komunikat o błędzie odmowy uprawnień.
źródło