apache22 + php5 (package not ports) ~ spawn-fcgi ?

Michael Powell nightrecon at hotmail.com
Wed Feb 22 05:02:54 UTC 2012


alexus wrote:

> I dont think you really grasping what I was asking..
> I am aware that I can build from source, yet I'm trying to stay away
> from that route due to a lot of overhead going forward...
> I'm also aware that php5 or actually apache22 doesn't come with
> mod_php as well, and as alternative I'm willing to go spawn-fcgi route
> instead, and this is what I'm interested in.
> I'm looking for some blog/howtos of people already done it on freebsd
> and not just a general fastcgi.com site :)
> So, if anyone have an experience or know a good resources that may be
> useful for me at this point of time, I'd highly appreciate if you can
> post it here.


You do not need spawn-fcgi wrt to PHP. I install software by compiling 
through the ports system, as it is just so much more maintainable in the 
long run. Also, you are more able to select build options which are better 
suited to your needs and environment. I have built Apache outside the ports 
tree in the long-ago past, so I do understand how. It's just there really is 
not a great reason to do so.

In my case, I utilize the apache-event MPM in conjunction with FastCGI. 
Originally I began with mod_fcgi, and it seemed to work well. When I learned 
that mod_fastcgi was supposed to work better with PHP-FPM I switched to it 
when I made the change to PHP-FPM. 

PHP-FPM runs on it's own at boot and has it's own startup scripts. You can 
set the options to do this when you build the base PHP port by choosing 
WITH_CLI=true, WITH_CGI=true,  WITH_FPM=true and you will not need spawn-
fcgi; PHP-FPM supplies this functionality [e.g 'long-running process'] by 
design. Also there is a .conf you can use to adjust your PHP CGI pools in a 
much more granular way than with spawn-fcgi.

Irregardless of which MPM you run Apache with, the next step is to connect 
Apache through mod_fastcgi to these running instance(s) of PHP. Here is an 
example from httpd.conf for this:

[...]
LoadModule fastcgi_module     libexec/apache22/mod_fastcgi.so

[...]

<IfModule mod_fastcgi.c>
Alias /php-cgi /usr/local/www/fastcgi/php-cgi
#FastCGIExternalServer /usr/local/www/fastcgi/php-cgi -flush -host 
127.0.0.1:9000
FastCGIExternalServer /usr/local/www/fastcgi/php-cgi -flush -socket /tmp/php-
fm.sock
 AddType application/x-httpd-php .php
 Action application/x-httpd-php /php-cgi

  <Directory "/usr/local/www/fastcgi/">
     Order deny,allow
     Deny from all
  <Files "php-cgi">
    Order allow,deny
    Allow from all
  </Files>
 </Directory>
</IfModule>

Notice I use a socket, and this socket is configured in the php-fpm.conf. The 
normal default is to use the TCP loopback. This also is probably not the 
best config available, but it supplies my very basic needs. If you are trying 
to set up Apache with mod_fastcgi, go with PHP-FPM as your CGI version of 
the PHP port build (set in the make config options) and it will be easy. IMHO 
this is a better way to go than spawn-fcgi, especially wrt to PHP 
specifically.

--Mike





More information about the freebsd-questions mailing list