- Home
- Categorie
- Coding e Sistemistica
- Hosting, Server e Domini
- [nginx]PHP-fastcgi connection refused
-
[nginx]PHP-fastcgi connection refused
Ho installato nginx e php su debian e ubuntu solo che quando provo ad aprire un file php mi cmpare una pagina d'errore(tipo 500) e nel log errori compare questo:
2008/07/21 01:14:45 [error] 8921#0: *19 connect() failed (111: Connection refused) while connecting to upstream, client: ***************, server: _, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:8888", host: "**************"
ho compilato php con il supporto fastcgi poi ho seguito questa guida facendo partire lo script usando questo comando:> /opt/script-cgi -a 127.0.0.1 -p 8888 -u lighttpd -g lighttpd -f /opt/php/bin/php-cgi
e infine ho aperto la porta 8888 in iptables.
ho saltato qualche passaggio?
-
beh direi di si, perchè l'utente e il gruppo sono entrambi lighttpd? in questo caso nginx non ha i permessi per interfacciarsi a fastcgi
dai un'occhiata qui http://blog.codefront.net/2007/06/11/nginx-php-and-a-php-fastcgi-daemon-init-script/
-
nada ho fatto partire lo script senza niente (./script-cgi) e mi da in uscita questa stringa:
/bin/su -m -c "/opt/php/bin/php5-cgi -q -b 127.0.0.1:9000" www
-
allora adesso ti spiego tecnicamente come funziona fastcgi
in primo luogo devi modificare il file di configurazione di nginx per il dominio dove vuoi usare gli script php
ad esempio
location ~ \.php$ { fastcgi_pass 127.0.0.1:12384; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/miosito.com/html$fastcgi_script_name; include conf/fastcgi_params; }
questa prima parte dice a nginx che deve inviare i file .php al server in ascolto su localhost alla porta 12384
ovviamente il server è stato precedentemente tramite questo script
#!/bin/sh # /opt/etc/init.d/S79php-fcgi # # NSLU2 spawn-fcgi script for lighttpd # ## ABSOLUTE path to the spawn-fcgi binary SPAWNFCGI="/usr/bin/spawn-fcgi" ## ABSOLUTE path to the PHP-FCGI binary FCGIPROGRAM="/usr/bin/php-cgi" ## ABSOLUTE path and name of PID-file for spawed process FCGIPID="/var/run/php-fcgi.pid" ## TCP port or socket to bind to #FCGISOCKET="/tmp/php-fcgi.sock" FCGIPORT="12384" FCGIADDRESS="127.0.0.1" ## number of PHP children to spawn (min 2) PHP_FCGI_CHILDREN=2 ## maximum number of requests a single PHP process can serve before it is restarted PHP_FCGI_MAX_REQUESTS=200 ## IP addresses from which PHP should access server connections FCGI_WEB_SERVER_ADDRS="127.0.0.1" ## Allowed environment variables, separated by spaces ALLOWED_ENV="PATH SHELL USER" ## user and group to run PHP-FCGI USERID=www GROUPID=www ################## no config below this line if [ -z "$1" ] ; then case `echo "$0" | /bin/sed 's:^.*/\(.*\):\1:g'` in S??*) rc="start" ;; K??*) rc="stop" ;; *) rc="usage" ;; esac else rc="$1" fi case "$rc" in start) echo -n "Starting PHP-FCGI: " export PHP_FCGI_MAX_REQUESTS export FCGI_WEB_SERVER_ADDRS ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS" if [ -n "$FCGISOCKET" ]; then EX="$SPAWNFCGI -s $FCGISOCKET -f $FCGIPROGRAM -P $FCGIPID -C $PHP_FCGI_CHILDREN -u $USERID" elif [ -n "$FCGIPORT" ]; then EX="$SPAWNFCGI -a $FCGIADDRESS -p $FCGIPORT -f $FCGIPROGRAM -P $FCGIPID -C $PHP_FCGI_CHILDREN -u $USERID" else echo "- ERROR - socket or port must be specified!" exit 0 fi E= for i in $ALLOWED_ENV; do eval "x=\$$i" E="$E $i=$x" done env - $E $EX echo ok ;; stop) if [ -n "`pidof php-fcgi`" ]; then echo -n "Stopping PHP-FCGI: " killall php-fcgi 2> /dev/null echo ok fi ;; restart) "$0" stop sleep 3 "$0" start ;; *) echo "Usage: $0 (start|stop|restart|usage)" ;; esac
noterai che usa il programma /usr/bin/spawn-fcgi che è specifico per archlinux, sicuramente c'è una cosa simile per la tua distribuzione e credo sia /opt/script-cgi
a mio avviso dovresti avviare il demone così
/opt/script-cgi -a 127.0.0.1 -p 8888 -u nginx -g nginx -f /opt/php/bin/php-cgi
poi modificare il file nginx.conf come ho scritto sopra, riavviare nginx e dovrebbe andare
-
p.s. per semplificare la cosa ho trovato una guida specifica che indica come installare nginx e fastcgi su ubuntu feisty
http://www.howtoforge.com/nginx_php5_fast_cgi_xcache_ubuntu7.04
-
questa prima parte dice a nginx che deve inviare i file .php al server in ascolto su localhost alla porta 12384
qui ci siamo....
ovviamente il server è stato precedentemente tramite questo script
avevo provato questa versione ma non sono riuscito a farlo partire (sbaglio o gli init.d per essere avviati si deve riavviare la macchina) cmq tramite un altro script mi compare la stringa che ho postato prima ho provato a eseguire quella stringa (l'user di nginx e www) e ora non mi da errore 500 ma mi dice= No input file specified. quando apro un file phpnoterai che usa il programma /usr/bin/spawn-fcgi che è specifico per archlinux, sicuramente c'è una cosa simile per la tua distribuzione e credo sia /opt/script-cgi
ora riprovo con quest' altro metodo ma con debian dove lo trovo in opt ho installato php e nginx e prima era vuotaPS:questi errori li ho sia in locale che in remoto sempre debian
p.s. per semplificare la cosa ho trovato una guida specifica che indica come installare nginx e fastcgi su ubuntu feisty
avevo provato su debian ma vuole una libreria che non c'e in etch...
-
@Angelbit88 said:
avevo provato questa versione ma non sono riuscito a farlo partire (sbaglio o gli init.d per essere avviati si deve riavviare la macchina) cmq tramite un altro script mi compare la stringa che ho postato prima ho provato a eseguire quella stringa (l'user di nginx e www) e ora non mi da errore 500 ma mi dice= No input file specified. quando apro un file php
dipende, su Ubuntu c'è un apposito programma per stabilire quali servizi verranno avviati
comunque per avviare un servizio pure benissimo aprire il terminale, loggarti come root e scrivere /etc/init.d/nome-servizio start
se ti dice No input file specified vuol dire che nginx comunica con php, manca quella roba nel file nginx.conf
-
se ti dice No input file specified vuol dire che nginx comunica con php, manca quella roba nel file nginx.conf
si l' avevo messo quelle righe ma quando usavo l' aggiornamento del file di confing tramite kill -HUP 1234 non mi sono accorto che usavo un pid sbagliato...Ti ringrazio Paolino cmq non dovrebbero esserci problemi a far partire php con la tecnica che ho usato io ho quella con init.d descritta da te e piu' sicura?
-
@Angelbit88 said:
Ti ringrazio Paolino cmq non dovrebbero esserci problemi a far partire php con la tecnica che ho usato io ho quella con init.d descritta da te e piu' sicura?
no quella che ho detto io è manuale, il sistema automatico fa la stessa cosa
gli script per avviare i demoni sono quelli in /etc/init.d