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