FreeBSD Configure Apache PHP with mod_fastcgi Module
Q. How do I configure and Install Apache web server with PHP5 and mod_fastcgi to get faster PHP access under FreeBSD server?
A.mod_fastcgi is a cgi-module for Apache web server.
FastCGI is a language independent, scalable, open extension to CGI that provides high performance without the limitations of server specific APIs.
FreeBSD Install Apache Web server
Install apache using FreeBSD ports collection:
# cd /usr/ports/www/apache22
# make install clean
# echo 'apache22_enable="YES"' >> /etc/rc.conf
FreeBSD Install PHP5
Make sure php-cgi binary exists and it is compiled with fastcgi support:
# /usr/local/bin/php-cgi -v
Output
PHP 5.2.6 with Suhosin-Patch 0.9.6.2 (cgi-fcgi) (built: Sep 10 2008 19:07:02)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo
If you do not see word cgi-fcgi, recompile php with fastcgi support by visiting /usr/ports/lang/php5:
# cd /usr/ports/lang/php5
# make config
# make install clean
Make sure you install php-gd, php-mysql and other extensions, enter:
# cd /usr/ports/lang/php5-extensions/
# make install cleanConfigure FreeBSD Apache mod_fastcgi
Open /usr/local/etc/apache22/httpd.conf file, enter:
# vi /usr/local/etc/apache22/httpd.conf
Make sure following line exists:
LoadModule fastcgi_module libexec/apache22/mod_fastcgi.so
Create virtual hosting configurations
Your sample setup:
- Apache share IP address: 74.86.49.131
- Domain name: theos.in
- DocumentRoot Directory: /websites/home/theos.in/http
- Log Directory: /websites/home/theos.in/logs
- PHP cgi-bin Directory: /websites/home/theos.in/cgi-bin/
Create directory structure as above:
# mkdir -p /websites/home/theos.in/{http,https,logs,cgi-bin,images,private,stats}
# chown -R theosftpuser:theosftpgroup /websites/home/theos.in/
Replace username, groupname and directories as per your setup.
Append following configuration directives to httpd.conf virtual hosting section:
<VirtualHost *:80> ServerAdmin webmaster@theos.in DocumentRoot "/websites/home/theos.in/http" ServerName theos.in ServerAlias www.theos.in ErrorLog "/websites/home/theos.in/logs/error.log" CustomLog "/websites/home/theos.in/logs/access.log" common ScriptAlias /cgi-bin/ "/websites/home/theos.in/cgi-bin/" <Directory "/websites/home/theos.in/http"> Options -Indexes FollowSymLinks +ExecCGI AllowOverride AuthConfig FileInfo AddHandler php5-fastcgi .php Action php5-fastcgi /cgi-bin/php.cgi Order allow,deny Allow from all </Directory> <Directory "/websites/home/theos.in/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> </VirtualHost>
Save and close the file.
Create php.cgi script
Create a shell script as follows (/websites/home/theos.in/cgi-bin/php.cgi):
#!/bin/sh # Shell Script To Run PHP5 using mod_fastcgi under Apache 2.x # Tested under FreeBSD 6.x and 7.x ### Set PATH ### PHP-CGI=/usr/local/bin/php-cgi PHP_FCGI_CHILDREN=4 PHP_FCGI_MAX_REQUESTS=1000 ### no editing below ### export PHP_FCGI_CHILDREN export PHP_FCGI_MAX_REQUESTS exec $PHP-CGI
Copy above shell script to /websites/home/theos.in/cgi-bin/ as php.cgi. Set permissions:
# chmod +x /websites/home/theos.in/cgi-bin/php.cgi
Restart Apache
Type the following command to restart Apache:
# /usr/local/etc/rc.d/apache22 restart
Test your setup
Place following code at /websites/home/theos.in/http/test.php:
<?php phpinfo(); ?>
Optional: Open port 80 using FreeBSD PF firewall
Add following PF firewall rule to /etc/pf.conf file:
pass in on $ext_if proto tcp from any to 74.86.49.131 port 80 flags S/SA synproxy state
Close and save the file. Reload pf firewall:
# /etc/rc.d/pf restart
Further configuration:
I also recommend installing xcache opcode php cacher and MySQL database server to host dynamic web sites.
Once installed you can upload open source scripts / software such as wordpress, phpBB and others at /websites/home/theos.in/http directory.
Further readings:
- Apache documentation
- man pages: ports, make, httpd.conf
E-mail
Print
Can't find an answer to your question? Contact us
Related Other Helpful FAQs:
Discussion on This FAQ
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Thank you very much for stopping by our site!
Tags: apache http server, apache web server, fastcgi, freebsd install php xcache, freebsd php fastcgi, freebsd php5, freebsd php5 fastcgi, Freebsd restart apache, FreeBSD setup apache, restart apache web server, xcache






October 8th, 2008 at 4:13 pm
Excellent guide.
Can you provide info for RHEL / CentOS Linux?