Dziennik błędów nginx był ogromny, więc usunąłem i utworzyłem nowy, teraz nginx nie chce się uruchomić

11

Usunąłem /var/log/nginx/error.log plik, a następnie stworzył nową używając:

sudo nano error.log

Wykonanie ls -lapokazuje, że error.log i access.log mają te same uprawnienia.

Kiedy próbuję uruchomić nginx, pojawia się błąd:

alert: nie można otworzyć pliku dziennika błędów: open () „/var/log/nginx/error.log” zezwolenie nie powiodło się.

Aktualizacja

Podczas próby uruchomienia nginx widzę również:

emerg: /var/run/nginx.pid nie powiodło się 13: odmowa uprawnień.

Blankman
źródło

Odpowiedzi:

25

To nie rozwiązuje twojego problemu, ale w przyszłości, jeśli tak zrobisz

cat / dev / null> / file / you / want / to / wipe-out

skopiujesz zawartość pliku bez niczego i zachowasz wszystkie uprawnienia w takcie.

Nie jest to nginx, ale dodatkowo upewnij się, że uruchamiasz aplikację jako użytkownik, z którego ma ona korzystać. Jeśli kiedykolwiek uruchomiłeś go jako root, wszystkie uprawnienia będą należeć do roota, więc inni użytkownicy nie będą mogli go uruchomić.

Alex
źródło
Czym różni się od używania echo "" > /file/to/empty? Czy oba są takie same?
Gowtham Gopalakrishnan,
Tak powinno być. Dodatkowo możesz pominąć wszystkie rzeczy na początku i po prostu zrobić> /file/to/empty
Alex
5

Zwykłym sposobem obracania dzienników za pomocą NginX jest zmiana nazwy pliku, a następnie /etc/init.d/nginx reload. Serwer uruchamia nowy plik i możesz robić, co chcesz ze starym.

Przydatna może być również edycja konfiguracji, aby nie rejestrować tyle ...

Alister Bulman
źródło
2

zajrzyj do konfiguracji nginx, sprawdź, kto działa jako serwer - domyślnie użytkownik będzie nginx

więc :

chown nginx: /var/run/nginx.pid chown -R nginx: /var/log/nginx

Powinien załatwić sprawę.

Geraint Jones
źródło
ale dlaczego to działało wcześniej?
Blankman
1
Podejrzewam, ponieważ próbowałeś uruchomić go jako root, a następnie próbowałeś uruchomić go za pomocą skryptu init.
Geraint Jones
cóż, zawsze zaczynam tak, hmm ....
Blankman
nginx.conf mówi: „dane użytkownika www”
Blankman
1

Usuń plik error.log, a nginx sam go utworzy.

Martin Fjordvald
źródło
usunąłem go, a następnie, gdy próbuję uruchomić nginx daje mi to samo odmowa błędu błąd w pliku /var/log/nginx/error.log
Blankman
Usuń dziennik i uruchom ponownie Nginx. Automatycznie utworzy dziennik.
WhiteHorse