Błąd gniazda domeny nginx unix


18

Korzystam z Fedory 17, a kiedy instaluję nginx z uwsgi przy użyciu gniazda domeny unix, kiedy umieszczam gniazdo w katalogu z odpowiednim uprawnieniem, jest w porządku, ale kiedy umieszczę gniazdo w /tmpnim, spowoduje błąd nginx:

connect() to unix:/tmp/MySite.sock failed (2: No such file or directory) while connecting to upstream

Plik istnieje i ma uprawnienia do odczytu / zapisu dla użytkownika nginx. Ale co powoduje ten błąd, to naprawdę doprowadza mnie do szału, może ktoś to wymyśli.

Odpowiedzi:


33

Nie można umieszczać gniazd przeznaczonych do komunikacji międzyprocesowej /tmp.

Ze względów bezpieczeństwa najnowsze wersje Fedory używają katalogów tymczasowych z przestrzenią nazw , co oznacza, że ​​każda usługa widzi zupełnie inną /tmpi może zobaczyć tylko własne pliki w tym katalogu.

Aby rozwiązać problem, umieść gniazdo w innym katalogu, na przykład /run(dawniej znany jako /var/run).


1
/ run nie jest jednak zapisywalny dla zwykłego użytkownika
hostmaster

1
/runnie jest bezpośrednio zapisywalny, ale możesz polecić systemd, aby utworzył w nim katalog, który będzie zapisywalny przez oba procesy.
Michael Hampton

Aby pomóc szukającym, dotyczy to również centos 7, a przeniesienie folderu z gniazdem do / run działało. Znalezienie tego problemu nie jest łatwe, ponieważ każde konto widzi folder i plik w tmp (ustaw 777 na test), więc nigdy nie zgadniesz, że procesy nie mogą.
JosephK

0

TAK! TO POMÓC!

Widziałem komunikaty check-startup-log z uwsgi, ale nie miałem danych w logach startowych, nie byłem w stanie dowiedzieć się, co się dzieje. Okazało się, że musiałem zmienić plik skarpety na lokalizację inną niż / tmp i dodać:

catch-wyjątki = prawda

do pliku ini wsgi. okazało się, że podałem lokalizację rejestrowania modułu obsługi plików w nieistniejącym katalogu, więc nie mógł on przede wszystkim zarejestrować błędów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.