Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

spawn-fcgi(1) [debian man page]

spawn-fcgi(1)						      General Commands Manual						     spawn-fcgi(1)

NAME
spawn-fcgi - Spawns FastCGI processes SYNOPSIS
spawn-fcgi [options] [ -- <fcgiapp> [fcgi app arguments]] spawn-fcgi -v spawn-fcgi -h DESCRIPTION
spawn-fcgi is used to spawn remote and local FastCGI processes. While it is obviously needed to spawn remote FastCGI backends (the web server can only spawn local ones), it is recommended to spawn local backends with spawn-fcgi, too. Reasons why you may want to use spawn-fcgi instead of something else: * Privilege separation without needing a suid-binary or running a server as root. * You can restart your web server and the FastCGI applications without restarting the others. * You can run them in different chroot()s. * Running your FastCGI applications doesn't depend on the web server you are running, which allows for easier testing of other web servers. OPTIONS
spawn-fcgi accepts the following options: -f <path> Filename of the FastCGI application to spawn. This option is deprecated and it is recommend to always specify the application (absolute path) and its parameters after "--"; the fcgiapp parameter is directly used for the exec() call, while for starting the binary given with -f /bin/sh is needed (which may not be available in a chroot). This option is ignored if fcgiapp is given. -d <path> Change the current directory before spawning the application. -a <address> IPv4/IPv6 address to bind to; only used if -p is given too. Defaults to "0.0.0.0" (IPv4). -p <port> TCP port to bind to; you cannot combine this with the -s option. -s <path> Path to the Unix domain socket to bind to; you cannot combine this with the -p option. -C <children> (PHP only) Number of children to spawn by setting the PHP_FCGI_CHILDREN environment variable. Default is not to overwrite the envi- ronment variable; php will spawn no children if the variable is not set (same as setting it to 0). -F <children> Number of children to fork, defaults to 1. This option doesn't work with -n, have a look at multiwatch(1) if you want to supervise multiple forks on the same socket. -P <path> Name of the PID file for spawned processes (ignored in no-fork mode) -n No forking should take place (for daemontools) -M <mode> Change file mode of the Unix domain socket; only used if -s is given too. -?, -h General usage instructions -v Shows version information and exits The following options are only available if you invoke spawn-fcgi as root: -c <directory> Chroot to specified directory; the Unix domain socket is created inside the chroot unless -S is given. -S Create Unix domain socket before chroot(). -u User ID to change to. -g Group ID to change to. Defaults to primary group of the user given for -u. -U Change user of the Unix domain socket, defaults to the value of -u. (only used if -s is given) -G Change group of the Unix domain socket, defaults to the primary group of the user given for -U; if -U wasn't given, defaults to the value of -g. (only used if -s is given) SEE ALSO
svc(8), supervise(8), see http://cr.yp.to/daemontools.html multiwatch(1), see http://cgit.stbuehler.de/gitosis/multiwatch/about/ 26 March 2009 spawn-fcgi(1)

Check Out this Related Man Page

Plack::Handler::FCGI(3pm)				User Contributed Perl Documentation				 Plack::Handler::FCGI(3pm)

NAME
Plack::Handler::FCGI - FastCGI handler for Plack SYNOPSIS
# Run as a standalone daemon plackup -s FCGI --listen /tmp/fcgi.sock --daemonize --nproc 10 # Run from your web server like mod_fastcgi #!/usr/bin/env plackup -s FCGI my $app = sub { ... }; # Roll your own my $server = Plack::Handler::FCGI->new( nproc => $num_proc, listen => [ $port_or_socket ], detach => 1, ); $server->run($app); DESCRIPTION
This is a handler module to run any PSGI application as a standalone FastCGI daemon or a .fcgi script. OPTIONS listen listen => [ '/path/to/socket' ] listen => [ ':8080' ] Listen on a socket path, hostname:port, or :port. port listen via TCP on port on all interfaces (Same as "listen => ":$port"") leave-umask Set to 1 to disable setting umask to 0 for socket open nointr Do not allow the listener to be interrupted by Ctrl+C nproc Specify a number of processes for FCGI::ProcManager pid Specify a filename for the pid file manager Specify a FCGI::ProcManager sub-class daemonize Daemonize the process. proc-title Specify process title keep-stderr Send STDERR to STDOUT instead of the webserver backlog Maximum length of the queue of pending connections WEB SERVER CONFIGURATIONS In all cases, you will want to install FCGI and FGCI::ProcManager. You may find it most convenient to simply install Task::Plack which includes both of these. nginx This is an example nginx configuration to run your FCGI daemon on a Unix domain socket and run it at the server's root URL (/). http { server { listen 3001; location / { set $script ""; set $path_info $uri; fastcgi_pass unix:/tmp/fastcgi.sock; fastcgi_param SCRIPT_NAME $script; fastcgi_param PATH_INFO $path_info; 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_param REQUEST_URI $request_uri; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; } } } If you want to host your application in a non-root path, then you should mangle this configuration to set the path to "SCRIPT_NAME" and the rest of the path in "PATH_INFO". See <http://wiki.nginx.org/NginxFcgiExample> for more details. Apache mod_fastcgi After installing "mod_fastcgi", you should add the "FastCgiExternalServer" directive to your Apache config: FastCgiExternalServer /tmp/myapp.fcgi -socket /tmp/fcgi.sock ## Then set up the location that you want to be handled by fastcgi: # EITHER from a given path Alias /myapp/ /tmp/myapp.fcgi/ # OR at the root Alias / /tmp/myapp.fcgi/ Now you can use plackup to listen to the socket that you've just configured in Apache. $ plackup -s FCGI --listen /tmp/myapp.sock psgi/myapp.psgi The above describes the "standalone" method, which is usually appropriate. There are other methods, described in more detail at "Standalone_server_mode" in Catalyst::Engine::FastCGI (with regards to Catalyst, but which may be set up similarly for Plack). See also <http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiExternalServer> for more details. lighttpd To host the app in the root path, you're recommended to use lighttpd 1.4.23 or newer with "fix-root-scriptname" flag like below. fastcgi.server = ( "/" => (( "socket" => "/tmp/fcgi.sock", "check-local" => "disable", "fix-root-scriptname" => "enable", )) If you use lighttpd older than 1.4.22 where you don't have "fix-root-scriptname", mouting apps under the root causes wrong "SCRIPT_NAME" and "PATH_INFO" set. Also, mouting under the empty root ("") or a path that has a trailing slash would still cause weird values set even with "fix-root-scriptname". In such cases you can use Plack::Middleware::LighttpdScriptNameFix to fix it. To mount in the non-root path over TCP: fastcgi.server = ( "/foo" => (( "host" = "127.0.0.1", "port" = "5000", "check-local" => "disable", )) It's recommended that your mount path does NOT have the trailing slash. If you really need to have one, you should consider using Plack::Middleware::LighttpdScriptNameFix to fix the wrong PATH_INFO values set by lighttpd. SEE ALSO
Plack perl v5.14.2 2012-06-21 Plack::Handler::FCGI(3pm)
Man Page