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.

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.

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.

Most fastcgi configuration does not pass Authorization headers to HTTP_AUTHORIZATION environment variable by default for security reasons. Authentication middleware such as Plack::Middleware::Auth::Basic or Catalyst::Authentication::Credential::HTTP requires the variable to be set up. Plack::Handler::FCGI supports extracting the Authorization environment variable when it is configured that way.