Skocz do zawartości
Zaloguj się, aby obserwować  
lexom

PHP + nginx i błąd 502 Bad Gateway

Polecane posty

Witam.

Próbuję skonfigurować nginx i php - niestety bez skutku. Otrzymuję błąd: 502 Bad Gateway (nginx w wersji: nginx/0.6.32)

 

 

W logach mam:

 

 

 

2011/09/06 20:36:53 [error] 22094#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 87.248.68.XXX, server: deomena.pl, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "domena.pl"

 

 

 

Plik /etc/init.d/php-fastcgi

 

 

 

#!/bin/bash
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=6
PHP_FCGI_MAX_REQUESTS=1000

PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_FCGI_ARGS="- USER=$USER PATH=/usr/bin
PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS
$PHP_CGI -b $BIND"
RETVAL=0

start() {
echo -n "Starting PHP FastCGI: "
start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env --$PHP_CGI_ARGS
RETVAL=$?
echo "$PHP_CGI_NAME."
}
stop() {
echo -n "Stopping PHP FastCGI: "
killall -q -w -u $USER $PHP_CGI
RETVAL=$?
echo "$PHP_CGI_NAME."
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop

start
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL

 

 

 

 

Plik w site-available:

 

 

server {
 listen 80 default;
 server_name domena.pl www.domena.pl;
 access_log /var/log/nginx/domena.pl;

 root /var/www/domena.pl;
 index index.php;

 location ~ \.php$ {
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   include /etc/nginx/fastcgi_params;
 }
}

 

php-fastcgi i nginx uruchamiam na koncie roota ... może to jest przyczyną?

Będę wdzięczny za pomoc.

 

 

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

php-fpm dużo lepiej się sprawuj,e bezproblemowo i od jakiegoś czasu jest mocno stabilne (na tyle, że trafiło do repo)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Php nie nasłuchuje na porcie...

 

Wyrzucenie linijki :

 

listen 80 default

nic nie daje (jeśli o to Ci chodzi ?)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie o to chodzi,

listen 80 default

To jest port na którym nasłuchuje nginx. Pokaż zawartość pliku /etc/nginx/fastcgi_params

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nginx ma łączyć się z php na porcie 9000 (BIND=127.0.0.1:9000), natomiast najwidoczniej zapomniałeś o odpaleniu php by na tym porcie nasłuchiwał.

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Podczas próby uruchomienia php5-cgi otrzymuje taki błąd:

 

[apc-error] apc_mmap: mmap failed: No space left on device

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zrobiłem wszystko wg tej instrukcji http://www.bordeux.net/Programowanie/PHP/Instalacja_Nginx_i_PHP_na_Linuxie/ i tej http://www.howtoforge.com/installing-php-5.3-nginx-and-php-fpm-on-ubuntu-debian i mam błąd 403 przy próbie otwarcia index.php (zawartość to

<?php phpinfo(); ?>
).

 

Mój /etc/nginx/sites-enabled/default i /etc/nginx/sites-available/default wygląda tak

server {

listen 80;

server_name localhost;

access_log /var/log/nginx/localhost.access.log;

 

## Default location

location / {

root /var/www;

index index.php;

}

 

## Images and static content is treated different

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {

access_log off;

expires 30d;

root /var/www;

}

 

## Parse all .php file in the /var/www directory

location ~ .php$ {

fastcgi_split_path_info ^(.+\.php)(.*)$;

fastcgi_pass backend;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;

include fastcgi_params;

fastcgi_param QUERY_STRING $query_string;

fastcgi_param REQUEST_METHOD $request_method;

fastcgi_param CONTENT_TYPE $content_type;

fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_intercept_errors on;

fastcgi_ignore_client_abort off;

fastcgi_connect_timeout 60;

fastcgi_send_timeout 180;

fastcgi_read_timeout 180;

fastcgi_buffer_size 128k;

fastcgi_buffers 4 256k;

fastcgi_busy_buffers_size 256k;

fastcgi_temp_file_write_size 256k;

}

 

## Disable viewing .htaccess & .htpassword

location ~ /\.ht {

deny all;

}

}

upstream backend {

server 127.0.0.1:9000;

}

 

Ktoś jest w stanie pomóc ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Podczas próby uruchomienia php5-cgi otrzymuje taki błąd:

 

[apc-error] apc_mmap: mmap failed: No space left on device

 

Pewnie odbijasz się o limit VM, zmniejsz apc.shm_size albo zwiększ ulimit -v.

 

I pod żadnym pozorem nie uruchamiaj php z roota! Spróbuj z php-fpm tak jak tu już pisał nrm.

 

EDIT: przeczytaj ze zrozumieniem bo (na pierwszy rzut oka) masz dziurawą konfigurację: http://cnedelcu.blogspot.com/2010/05/nginx-php-via-fastcgi-important.html

Edytowano przez blackfire (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

blackfire: Myślę, że kolega sobie ze swoim problemem poradził, ja trochę odkopałem temat, bo też borykam się z nginx i php-fpm. (Post nad Twoim)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

blackfire: Myślę, że kolega sobie ze swoim problemem poradził, ja trochę odkopałem temat, bo też borykam się z nginx i php-fpm. (Post nad Twoim)

 

To masz za swoje -- po co odkopujesz temat zamiast założyć nowy? :P

 

Kto Ci serwuje to 403? masz uruchomione to php? (jeżeli tak to po ubiciu zmienia się błąd?)

 

Uruchom php pod strace:

 

strace -ff -s 10000 php-fcgi -b 127.0.0.1:9000 2>&1 | grep index.php

 

i spróbuj wywołać to /index.php w przeglądarce. Widzisz coś dziwnego na strace (np. ścieżki złe czy coś)?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

A nie lepiej zajrzeć w error log ?

 

Z resztą porządnie to ustawić:

location ~ \.php$ {
           	include /etc/nginx/fastcgi_params;

           	fastcgi_pass  127.0.0.1:9000;
           	fastcgi_index index.php;
           	fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   	}

Gdzie 9000 to port z pool'a FPM, a zmienne konfiguracyjne lepiej wciśnij do fastcgi_params, no chyba że mają być custom.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Tu akurat w sensie przejrzysty, choć fakt jeżeli skrypt będzie dawał możliwość wrzucenia pliku to jest to niebezpieczne.

Po location, można dodać zmienną która zwróci 404: try_files $uri =404;

Można też zabezpieczyć katalogi uploadu, by nginx odpowiadał 403.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mój problem jest już rozwiązany, więc można w mojej sprawie nie odpowiadać, a kolegi chyba problem też rozwiązany, bo się nie odzywa ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam podobny problem, tyle iż przy starcie CGI wywala mi taki błąd:

 

spex@vps:/etc/nginx$ sudo /etc/init.d/php-fastcgi start
No directory, logging in with HOME=/
spawn-fcgi: child exited with: 2

 

Ktoś wie czemu?

nginx.conf

Virtual Hosting

 

Podpierałem się tym:

http://www.nibyblog.pl/instalacja-serwera-www-nginx-z-obsluga-php-przez-fastcgi-i-mysql-1695.html

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dokładnie mam tak samo jak na http://www.nibyblog....mysql-1695.html

Ale próbowałem też przy odpowiednich http://notatnik.mekk.waw.pl/archives/96-Konfigurujemy_VPS_-_czesc_8,_nginx_cd_proxy,_FastCGI,_PHP.html modyfikacjach php-cgi > php-fastcgi itp,

 

Ale też mam ten błąd o dziecu. Choć sprawa home znikła.

 

To może jakąś inną konfigurację zaproponujesz? nawet innych kompotentów jak php-fmg czy jakoś.

 

I wielkie dzięki za zainteresowanie.

Edytowano przez spex (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×