FreeBSD 7.1
nginx + php + fastcgi. Все из портов.
Если сервер перезагружается, то fastcgi для php поднимается от нужного юзера, но pid не пишет в файл. Если запускать руками - все нормально, пид есть.
Папка для файла с пидом /var/run/dbphp_fastcgi принадлежит phpmyadmin с правами 755.
Скрипты и конфиги:
/usr/local/etc/rc.d/dbphp_fastcgi:
Код:
#!/bin/sh
# PROVIDE: dbphp_fastcgi
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
. /etc/rc.subr
name="dbphp_fastcgi"
rcvar=`set_rcvar`
load_rc_config $name
: ${dbphp_fastcgi_enable="NO"}
: ${dbphp_fastcgi_user="www"}
: ${dbphp_fastcgi_bindaddr="127.0.0.1"}
: ${dbphp_fastcgi_bindport="9000"}
: ${dbphp_fastcgi_children="5"}
: ${dbphp_fastcgi_max_requests="1000"}
: ${dbphp_fastcgi_allowed_env=""}
export PHP_FCGI_CHILDREN=${dbphp_fastcgi_children}
export PHP_FCGI_MAX_REQUESTS=${dbphp_fastcgi_max_requests}
command="/usr/local/bin/php-cgi"
command_args="-q -b ${dbphp_fastcgi_bindaddr}:${dbphp_fastcgi_bindport} &"
pidfile="/var/run/dbphp_fastcgi/${name}.pid"
_allowed_env="ORACLE_HOME PATH USER PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"
_allowed_env="${_allowed_env} ${dbphp_fastcgi_allowed_env}"
start_precmd="${name}_start_precmd"
start_postcmd="ps -U ${dbphp_fastcgi_user} -o 'pid,command'|grep ${command}|head -1|awk -- '{print \$1}' > ${pidfile}"
dbphp_fastcgi_start_precmd()
{
touch $pidfile
chown $dbphp_fastcgi_user $pidfile
export USER=${dbphp_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=dbphpstop_postcmd
dbphpstop_postcmd()
{
rm -f $pidfile
}
load_rc_config $name
run_rc_command "$1"/etc/rc.conf:
Код: Выделить всё
dbphp_fastcgi_enable="YES"
dbphp_fastcgi_user="phpmyadmin"
dbphp_fastcgi_bindaddr="127.0.0.1"
dbphp_fastcgi_bindport="9000"
dbphp_fastcgi_children="5"
dbphp_fastcgi_max_requests="1000"
dbphp_fastcgi_allowed_env=""dmesg -a:
Код: Выделить всё
/etc/rc: DEBUG: checkyesno: dbphp_fastcgi_enable is set to YES.
/etc/rc: DEBUG: pid file (/var/run/dbphp_fastcgi/dbphp_fastcgi.pid): not readable.
/etc/rc: DEBUG: run_rc_command: start_precmd: dbphp_fastcgi_start_precmd
Starting dbphp_fastcgi.
/etc/rc: DEBUG: run_rc_command: doit: su -m phpmyadmin -c 'sh -c "env - PATH=/sbin:/bin:/usr/sbin:/usr/bin USER=phpmyadmin PHP_FCGI_CHILDREN=5 PHP_FCGI_MAX_REQUESTS=1000 /usr/local/bin/php-cgi -q -b 127.0.0.1:9000 &"'
/etc/rc: DEBUG: run_rc_command: start_postcmd: ps -U phpmyadmin -o 'pid,command'|grep /usr/local/bin/php-cgi|head -1|awk -- '{print $1}' > /var/run/dbphp_fastcgi/dbphp_fastcgi.pid
/etc/rc: DEBUG: checkyesno: mysql_enable is set to YES.
/etc/rc: DEBUG: pid file (/var/db/mysql/soldistudio1.pid): not readable.
/etc/rc: DEBUG: run_rc_command: start_precmd: mysql_prestart
/etc/rc: DEBUG: checkyesno: mysql_limits is set to NO.
Starting mysql.
/etc/rc: DEBUG: run_rc_command: doit: su -m mysql -c 'sh -c "/usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var/db/mysql --pid-file=/var/db/mysql/soldistudio1.pid > /dev/null 2>&1 &"'
/etc/rc: DEBUG: checkyesno: solcom_fcgi_enable is set to YES.
/etc/rc: DEBUG: pid file (/var/run/solcom_fcgi/solcom_fcgi.pid): not readable.
/etc/rc: DEBUG: run_rc_command: doit: echo "Starting solcom_fcgi."; su solcom -c '/data/www/vhosts/solshark.com/httpdocs/portal/manage.py runfcgi host=127.0.0.1 port=8881 daemonize=true pidfile=/var/run/solcom_fcgi/solcom_fcgi.pid'
Starting solcom_fcgi.
/etc/rc: DEBUG: checkyesno: nginx_enable is set to YES.
/etc/rc: DEBUG: pid file (/var/run/nginx.pid): not readable.
/etc/rc: DEBUG: run_rc_command: start_precmd: nginx_precmd
Performing sanity check on nginx configuration:
2009/02/11 13:02:58 [info] 1169#0: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
2009/02/11 13:02:58 [info] 1169#0: the configuration file /usr/local/etc/nginx/nginx.conf was tested successfully
/etc/rc: DEBUG: checkyesno: nginxlimits_enable is set to NO.
Starting nginx.Буду признателен за любой совет. У меня идеи закончились.