baltazar_gabka 0 Zgłoś post Napisano Grudzień 9, 2016 Witam. Próbuję uruchmić skrypt CGI na swoim serwerze. Mam postawiony nginx + fcgiwrap. Fcigwrap instalowałem zgodnie z ta instrukcją: https://www.nginx.com/resources/wiki/start/topics/examples/fcgiwrap/ aptitude install fcgiwrap cp /usr/share/doc/fcgiwrap/examples/nginx.conf /etc/nginx/fcgiwrap.conf mkdir /var/www/cgitest touch /var/www/cgitest/index.cgi vim /var/www/cgitest/index.cgi ls -la /var/www drwxr-xr-x 4 root root 4096 gru 9 21:29 . drwxr-xr-x 13 root root 4096 gru 8 20:12 .. drwxr-xr-x 2 root root 4096 gru 9 21:30 cgitest W nginx mam coś takiego: server { listen 80; server_name domena.pl; root /var/www/cgitest; include /etc/nginx/fcgiwrap.conf; location / { index index.html index.htm index.pl; } location ~ \.pl|cgi$ { try_files $uri =404; gzip off; fastcgi_pass unix:/run/fcgiwrap.sock; fastcgi_index index.cgi; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } Po restarcie serwera w logach są takie wpisy: 016/12/09 21:33:06 [error] 5160#0: *1 directory index of "/var/www/cgitest/" is forbidden, client: 88.151.138.228, server: domena.pl, request: "GET / HTTP/1.1", host: "domena.pl" Plik fcgiwrap.conf wygląda następująco: location /cgi-bin/ { gzip off; root /usr/lib; fastcgi_pass unix:/var/run/fcgiwrap.socket; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib$fastcgi_script_name; } Katalogu /usr/lib/cgi-bin nie ma na mojej maszynie. Czy tak powinien wyglądać ten plik? Z czego może wynikać błąd 403? Udostępnij ten post Link to postu Udostępnij na innych stronach
megi 358 Zgłoś post Napisano Grudzień 9, 2016 Fcgiwrap to nasz wynalazek (http://www.megiteam.pl/blog/baza-wiedzy/fcgiwrap/) Miło widzieć, że ktoś tego używa. Z logów widzę, że żądanie jest do http://domena.pl/ - co się stanie jak wywołasz URLa http://domena.pl/index.cgi? Masz skonfigurowane, że żądania do .pl|cgi mają iść do fcgiwrapa a także, że domyślnym plikiem jest index.pl a masz w katalogu index.cgi. Udostępnij ten post Link to postu Udostępnij na innych stronach
baltazar_gabka 0 Zgłoś post Napisano Grudzień 9, 2016 (edytowany) Zmieniłem index.pl na index.cgi i teraz mam taki błąd: 2016/12/09 22:05:19 [crit] 5208#0: *1 connect() to unix:/run/fcgiwrap.sock failed (2: No such file or directory) while connecting to upstream, client: 88.151.138.228, server: domena.pl, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/fcgiwrap.sock:", host: "domena.pl" 2016/12/09 22:05:19 [crit] 5208#0: *1 connect() to unix:/run/fcgiwrap.sock failed (2: No such file or directory) while connecting to upstream, client: 88.151.138.228, server: domena.pl, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/fcgiwrap.sock:", host: "domena.pl" ls -la /run | grep fcgi srw-rw-rw- 1 root root 0 gru 8 23:45 fcgiwrap.socket Edytowano Grudzień 9, 2016 przez Gość (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
megi 358 Zgłoś post Napisano Grudzień 9, 2016 (edytowany) Ok, czyli nginx już próbuje przekazać żądanie do fcgiwrapa ale nie może się do niego połączyć przez socket, który mu podałeś. Działa Ci ten fcgiwrap i słucha na sockecie /run/fcgiwrap.sock? Masz taki plik? Jeżeli tak to jakie ma uprawnienia? Nginx musi móc do niego pisać i czytać czyli ma mieć rw dla nginxa.EDIT masz inny socket niż podałeś w konfigu Edytowano Grudzień 9, 2016 przez megi (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
baltazar_gabka 0 Zgłoś post Napisano Grudzień 9, 2016 ls -la /var/run/ | grep fcgi srw-rw-rw- 1 root root 0 gru 8 23:45 fcgiwrap.socket Sa prawa rw. Czy po stronie nginx i configa fcgiwrap muszą być te same sockety ? Udostępnij ten post Link to postu Udostępnij na innych stronach
megi 358 Zgłoś post Napisano Grudzień 9, 2016 (edytowany) W skrócie tak. Socket to tak jak port. Jeżeli fcgiwrap czeka na żądania na 12345 a nginx wysyła żądania do 6789 to się nie dogadają. Nginx musi się łączyć do socketu na którym działa fcgiwrap. EDITA i w ogóle to z roota uruchamiasz tego fcgiwrapa? Ogólnie to nie jest dobry pomysł, żeby strony działały z roota. Docelowo uruchom go na nieuprzywilejowanym userze. Edytowano Grudzień 9, 2016 przez megi (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
baltazar_gabka 0 Zgłoś post Napisano Grudzień 10, 2016 (edytowany) W pliku /etc/nginx/fcgiwrap.conf dodałem: fastcgi_pass unix:/var/run/fcgiwrap.socket; W nginx dodałem także wpis: fastcgi_pass unix:/var/run/fcgiwrap.socket; W logach nginx nie ma żadnych błędów. W przeglądarce wyświetla się tylko napis: 403 Forbidden Z tego co widzę to fcgiwrap jest uruchomiony z użytkownika www-data. Chociaż gdzie jest to ustawione to nie wiem. ps aux | grep fcgiwrap www-data 5589 0.0 0.0 26320 928 ? Ss 12:02 0:00 /usr/sbin/fcgiwrap EDIT: Zmieniłem prawa do pliku index.cgi na 755 i teraz poszło. Edytowano Grudzień 10, 2016 przez baltazar_gabka (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach