Here is the content of my /etc/conf.d/php-cgi
file (it's a modified copy of the original spawn-fcgi conf.d file) :
# The FCGI process can be made available through a filesystem socket or
# through a inet socket. One and only one of the two types must be choosen.
# Default is the inet socket.
# The filename specified by
# FCGI_SOCKET will be suffixed with a number for each child process, for
# example, fcgi.socket-1.
# Leave empty to use an IP socket (default). See below. Enabling this,
# disables the IP socket.
#
FCGI_SOCKET=
# When using FCGI_PORT, connections will only be accepted from the following
# address. The default is 127.0.0.1. Use 0.0.0.0 to bind to all addresses.
#
FCGI_ADDRESS=127.0.0.1
# The port specified by FCGI_PORT is the port used
# by the first child process. If this is set to 1234 then subsequent child
# processes will use 1235, 1236, etc.
#
FCGI_PORT=2000
# The path to your FastCGI application. These sometimes carry the .fcgi
# extension but not always. For PHP, you should usually point this to
# /usr/bin/php-cgi.
#
FCGI_PROGRAM=/usr/bin/php-cgi
#FCGI_PROGRAM=/usr/bin/spawn-fcgi
# The number of child processes to spawn. The default is 1.
#
FCGI_CHILDREN=1
# If you want to run your application inside a chroot then specify the
# directory here. Leave this blank otherwise.
#
FCGI_CHROOT=
# If you want to run your application from a specific directiory specify
# it here. Leave this blank otherwise.
#
FCGI_CHDIR=
# The user and group to run your application as. If you do not specify these,
# the application will be run as root:root.
#
FCGI_USER=nginx
FCGI_GROUP=nginx
# Additional options you might want to pass to spawn-fcgi
#
#FCGI_EXTRA_OPTIONS=
# If your application requires additional environment variables, you may
# specify them here. See PHP example below.
#
#ALLOWED_ENV="PATH"
# PHP ONLY :: These two options are specific to PHP. The first is the number
# of child processes to spawn. The second is the number of requests to be
# served by a single PHP process before it is restarted.
#
PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=500
#
# For this to work you would set
ALLOWED_ENV="PATH PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS"
Then to create the init.d file, just make a symlink to the original spawn-fcgi init.d file with the name of your conf.d file (php-cgi in my case) :
% sudo ln -s /etc/init.d/spawn-fcgi /etc/init.d/php-cgi
Then you can start it with :
% /etc/init.d/php-cgi start
and add it to the default boot level
% rc-update add php-cgi default
The only degree of freedom you have is by tweaking these two values :
PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=500
More children can handle more requests at the same time, but it consumes more memory.
Depending on your hardware configuration, adapt these two settings.
Is something else listening on port 9000?
netstat -tnap | grep LIST | grep 9000
On the other hand, I'd recommend to strace the start script to check the system calls:
sudo strace -f -o strace.output /etc/init.d/php-fastcgi start
Then take a look at the file strace.output
, especially the last few lines. strace
is always good to "enlighten" the way.
Hope this helps.
Best Answer
Check permissions for munin log files. I got exactly same problem on Ubuntu 14.04 and found that log files in /var/log/munin was owned by www-data:adm. After chown munin:munin fcgi processes started normally. Hope that will help you.