nginx+php+fcgi

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

nginx+php+fcgi

Непрочитанное сообщение OSBoy » 2008-10-20 22:46:47

Пытаюсь прикрутить php к nginx по этой статье с учётом комментариев к ней.
Не получаеццо...
/usr/local/etc/rc.d/php_fastcgi start выдаёт мне:

Код: Выделить всё

# /usr/local/etc/rc.d/php_fastcgi start
Starting php_fastcgi.
Status: 404 Not Found
X-Powered-By: PHP/5.2.6
Content-type: text/html

No input file specified.
awk: syntax error at source line 1
 context is
         >>>  <<<
awk: bailing out at source line 1
При попытке зайти на index.php выдаётся содержимое 50x.html - "The page you are looking for is temporarily unavailable.
Please try again later."

Имеем на данный момент вот что:
7.0 RELEASE;

php 5.2.6_2 :

Код: Выделить всё

[X] CLI        Build CLI version
[X] CGI        Build CGI version
[X] FASTCGI    Enable fastcgi support (CGI only)
nginx 0.6.32 :

Код: Выделить всё

[X] HTTP_MODULE           Enable HTTP module
[X] HTTP_REWRITE_MODULE   Enable http_rewrite module
[X] HTTP_STATUS_MODULE    Enable http_stub_status module
[X] WWW                   Enable html sample files

Код: Выделить всё

# cat /usr/local/etc/nginx/nginx.conf
user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        location / {
            root   /usr/local/www/nginx;
            index  index.php;
        }
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:1026;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/www/nginx$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

Код: Выделить всё

# cat /usr/local/etc/rc.d/php_fastcgi
#!/bin/sh
#

# PROVIDE: php_fastcgi
# REQUIRE: DAEMON
# BEFORE:  LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="php_fastcgi"
rcvar=${name}_enable

php_fastcgi_enable=${php_fastcgi_enable-"NO"}
php_fastcgi_flags=${php_fastcgi_flags-"-s /tmp/php-fcgi.sock -u www -g www"}

load_rc_config $name

: ${php_fastcgi_enable="NO"}
: ${php_fastcgi_user="www"}
: ${php_fastcgi_bindaddr="127.0.0.1"}
: ${php_fastcgi_bindport="9000"}
: ${php_fastcgi_children="5"}
: ${php_fastcgi_max_requests="1000"}
: ${php_fastcgi_allowed_env=""}

export PHP_FCGI_CHILDREN=${php_fastcgi_children};
export PHP_FCGI_MAX_REQUESTS=${php_fastcgi_max_requests};

command="/usr/local/bin/php-cgi";
command_args="-q -b ${php_fastcgi_bindaddr}:${php_fastcgi_bindport} &";
pidfile="/var/run/${name}.pid";

_allowed_env="ORACLE_HOME PATH USER PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS";
_allowed_env="${_allowed_env} ${php_fastcgi_allowed_env}";

start_precmd="${name}_start_precmd";
start_postcmd="ps -U ${php_fastcgi_user} -o 'pid,command'|grep ${command}|head -1|awk . '{print \$1}' > ${pidfile}";

php_fastcgi_start_precmd()
{
   export USER=${php_fastcgi_user};
   E=
   for i in ${_allowed_env}; do
       eval _val="\$$i";
       if [ "${_val}_x" != "_x" ]; then
           eval _add="$i=$_val";
           E="${E} ${_add}";
       fi
   done
   command="env - ${E} ${command}";
}

load_rc_config $name;

run_rc_command "$1";
rc.conf:

Код: Выделить всё

php_fastcgi_enable="YES"
php_fastcgi_user="nobody"
php_fastcgi_bindaddr="127.0.0.1"
php_fastcgi_bindport="1026"
php_fastcgi_children="5"
php_fastcgi_max_requests="1000"
php_fastcgi_allowed_env=""

index.php:

Код: Выделить всё

<?
phpinfo();
?>
Где собственно искать косяк?
А еще меня интересует, что собственно должно быть прописано в строке:
fastcgi_param SCRIPT_FILENAME /usr/local/www/nginx$fastcgi_script_name;
А также, где какой юзер должен быть прописан? (в конфигах, приведённых в статье и комментариях, встречаются www и nobody - где какого использовать, и должен ли юзер в php_fastcgi скрипте и в nginx.conf быть прописан один и тот же?)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: nginx+php+fcgi

Непрочитанное сообщение MAK » 2008-10-21 10:50:40

Синтаксическая ошибка у awk, убери точку

Код: Выделить всё

- start_postcmd="ps -U ${php_fastcgi_user} -o 'pid,command'|grep ${command}|head -1|awk . '{print \$1}' > ${pidfile}";
+ start_postcmd="ps -U ${php_fastcgi_user} -o 'pid,command'|grep ${command}|head -1|awk '{print \$1}' > ${pidfile}";
И вот это надо лечить

Код: Выделить всё

Status: 404 Not Found

Аватара пользователя
OSBoy
сержант
Сообщения: 228
Зарегистрирован: 2007-04-09 12:17:50
Откуда: Из капусты

Re: nginx+php+fcgi

Непрочитанное сообщение OSBoy » 2008-10-21 18:37:22

С синтаксической ошибкой понятно - исправил.
А аот с этим

Код: Выделить всё

Status: 404 Not Found
не понятно, что он собственно не находит?

привет
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-11-21 12:08:16

Re: nginx+php+fcgi

Непрочитанное сообщение привет » 2009-11-25 23:53:21

у меня тоже проблема уже по статье http://wiki.lissyara.su/wiki/Nginx_php-cgi
автозапуск не работает..

и вот

Код: Выделить всё

# /usr/local/etc/rc.d/php-cgi start
/usr/local/etc/rc.d/php-cgi: Permission denied.

что я сделал не так?

привет
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-11-21 12:08:16

Re: nginx+php+fcgi

Непрочитанное сообщение привет » 2009-11-26 6:23:33

я так понял надо права поставить на этот файл... 755 пойдет?

http://wiki.lissyara.su/wiki/Nginx_php-cgi

актуально ли данная статья? получается работает без php-fpm?

Аватара пользователя
skeletor
майор
Сообщения: 2486
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Re: nginx+php+fcgi

Непрочитанное сообщение skeletor » 2009-11-26 10:48:20

Я делал через lighttpd и всё нормально заработало.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

n00b
проходил мимо

Re: nginx+php+fcgi

Непрочитанное сообщение n00b » 2009-11-26 23:10:56

установите php-fpm из портов и не мучайтесь

привет
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-11-21 12:08:16

Re: nginx+php+fcgi

Непрочитанное сообщение привет » 2009-11-27 2:57:05

n00b писал(а):установите php-fpm из портов и не мучайтесь
разве php-fpm есть уже в портах?

дал права, все норм теперь работает.. спасибо.

привет
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-11-21 12:08:16

Re: nginx+php+fcgi

Непрочитанное сообщение привет » 2009-11-29 23:53:21

Код: Выделить всё

#!/bin/sh
#
# PROVIDE: php_fastcgi
# REQUIRE: DAEMON
# BEFORE:  LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="php_fastcgi"
rcvar=`set_rcvar`

load_rc_config $name

: ${php_fastcgi_enable="NO"}
: ${php_fastcgi_user="www"}
: ${php_fastcgi_bindaddr="127.0.0.1"}
: ${php_fastcgi_bindport="9000"}
: ${php_fastcgi_children="5"}
: ${php_fastcgi_max_requests="1000"}
: ${php_fastcgi_allowed_env=""}

export PHP_FCGI_CHILDREN=${php_fastcgi_children};
export PHP_FCGI_MAX_REQUESTS=${php_fastcgi_max_requests};

command="/usr/local/bin/php-cgi";
command_args="-q -b ${php_fastcgi_bindaddr}:${php_fastcgi_bindport} &";
pidfile="/var/run/${name}.pid";

_allowed_env="ORACLE_HOME PATH USER PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS";
_allowed_env="${_allowed_env} ${php_fastcgi_allowed_env}";

start_precmd=start_precmd;
start_postcmd="sleep 1;ps -U ${php_fastcgi_user} -o 'pid,command'|grep ${command}|head -1|\
		awk '{print \$1}' > ${pidfile}";
stop_postcmd=stop_postcmd;

start_precmd()
{
   export USER=${php_fastcgi_user};
   E=
   for i in ${_allowed_env}; do
       eval _val="\$$i";
       if [ "${_val}_x" != "_x" ]; then
           eval _add="$i=$_val";
           E="${E} ${_add}";
       fi
   done
   command="env - ${E} ${command}";
}

stop_postcmd()
{
    rm -f $pidfile
}

load_rc_config $name;

run_rc_command "$1";
а тут можно исправить чтоб не через IP, а через unix-сокет соединяло?

попробовал поменять на

Код: Выделить всё

command="/usr/local/bin/php-cgi";
command_args="-q -s /tmp/php.sock &";
не работает... совсем чайник в этом... =(

Аватара пользователя
hangover
рядовой
Сообщения: 40
Зарегистрирован: 2008-06-18 11:07:42
Откуда: Новосибирск

Re: nginx+php+fcgi

Непрочитанное сообщение hangover » 2009-12-04 14:12:35

Ставьте

Код: Выделить всё

Port:	spawn-fcgi-1.6.3
Path:	/usr/ports/www/spawn-fcgi
Info:	spawn-fcgi is used to spawn fastcgi applications
Maint:	genserg@hotmail.com
B-deps:	
R-deps:	
WWW:	http://redmine.lighttpd.net/projects/spawn-fcgi
да и всё

kirgudu
сержант
Сообщения: 185
Зарегистрирован: 2009-01-16 23:14:00

Re: nginx+php+fcgi

Непрочитанное сообщение kirgudu » 2011-03-11 10:01:27

Нашел косяк в скрипте.

localhost нужно на 127.0.0.1 поменять надо, т.к. у php крышу сносит, когда несколько IP (или ip и ipv6) на lo0 висит.