Thursday, 17 January 2019 .::. Your IP: 54.205.211.87 
Home Tips & Tricks Installing Apache and mod_fastcgi and php 4.x

Installing Apache and mod_fastcgi and php 4.x


This will show you how to install apache + mod_fastcgi + php 4.x on Nix system.

#to unify the process and to make first a test that all will work fine we will install these first in /opt directory

mkdir /opt/apache

# we will create a source directory where we will download the apache source files

mkdir /opt/apache/source

cd /opt/apache/source

# at the moment i write this article the version of apache is 2.2.8

wget http://www.apache.org/dist/httpd/httpd-2.2.8.tar.gz
tar xvf httpd-2.2.8.tar.gz
cd httpd-2.2.8


# now we will configure apache.

./configure --prefix=/opt/apache --disable-asis --disable-userdir --enable-logio --enable-rewrite --enable-ssl --with-port=81 --enable-suexec --with-suexec-caller='apache' --with-suexec-docroot='/opt/apache/vhosts/'

# I will explain why i used this configure options. The first one is because i do not want this new apache to mess up with
# my production webserver. So is the --with-port setting. userdir and asis are modules which are enabled by default but i have never
# used so I do not really need them. For full configure options you can check http://httpd.apache.org/docs/2.2/programs/configure.html
# Because i used a server which has Plesk installed i gave and system user called apache already.
# The default apache user however is www. so you can drop that option if you want.
# The main reason why i put this is because suexec usually has a a setting for what could be the minimum user and group id (uid and gid respectfully) who can call it.
# Usually that is set to 100 and when user www is added it has uid=gid=80 so we will either have to change the UID and GID to something higher or set apache to use some other user.
# apache user added by plesk has uid=gid=2524 so it is perfect for our case.
# --with-suexec-docroot is again optional. I used it cause I like my virtual hosts to be in directory called vhosts. The default docroot is $PREFIX/docs .
# If you plan to run 1 website (which probably is not the case) or just have your websites in $PREFIX/docs/domain1.com , $PREFIX/docs/domain2.com and so on, probably you can drop that option too.
# If you put the virtual hosts on vhosts $PREFIX/vhosts and do not change --with-suexec-docroot suexec will throw errors that the script is not in its docroot.

# next is to install apache. If you have received any errors along the way of the configuration your best shot is to ask google about it.

make
make install


# now apache should be ready to be used. So lets move on to get mod_fastcgi installed.

cd /opt/apache/source
wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
tar xvf mod_fastcgi-2.4.6.tar.gz
cd mod_fastcgi

# next instructions ave been taken from here : http://www.fastcgi.com/mod_fastcgi/INSTALL.AP2

cp Makefile.AP2 Makefile
make top_dir=/opt/apache
make top_dir=/opt/apache install


# Now apache and mod_fast are almost ready. You have to enable the module in httpd.conf. I prefer to take this out of the main configuration file.
# I have created a file /opt/apacheconf/extra/httpd-fastcgi.conf with this content

#---------------------httpd-fastcgi.conf-----------------

LoadModule fastcgi_module modules/mod_fastcgi.so

FastCgiIpcDir /opt/apache/docs/fcgi_ipc/tmp
AddHandler fastcgi-script .fcgi
FastCgiSuexec /opt/apache/bin/suexec
FastCgiConfig -singleThreshold 100 -killInterval 300 -autoUpdate -idle-timeout 30 -pass-header HTTP_AUTHORIZATION


#---------------------------END--------------------------

# note that the directory /opt/apache/docs/fcgi_ipc/tmp have to be created and and apache should be able to read and write to it
# the permission on my system are 660

# now apache and mod-fastcgi are ready. so we will proceed in installing php


mkdir /opt/php
mkdir /opt/php/source
cd /opt/php/source

# I have installed 4.4.7 because my websites are not updated to work on php 5.x series. A very useful resource for that case is http://museum.php.net/

wget http://museum.php.net/php4/php-4.4.7.tar.gz
tar xvf php-4.4.7.tar.gz
cd php-4.4.7
./configure --prefix=/opt/php --enable-versioning --with-layout=GNU --disable-all --enable-ftp --enable-libxml --with-libxml-dir=/usr/local --enable-reflection --with-regex=php --with-zend-vm=CALL --with-mysql=/usr/local/psa/mysql --with-gd=/usr/local --with-pcre-regex=/usr/local --enable-fastcgi

# This configuration again is just for what my websites require. The most important thing is that you should have --enable-fastcgi
# the rest is just what you find best for your needs. We proceed with the install

make
make install

# now we are set to get php added to the mix.

# lets say we have one domain that will work here /opt/apache/vhosts/domain1.com
# for the needs of the php-wrapper I create a directory create /opt/apache/vhosts/domain1.com/php-fastcgi
# In that directory i create a shell script called php-wrapper with the following entries

#!/bin/sh
PHP_FCGI_MAX_REQUESTS=2000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php/bin/php

# Just i will note one of the cool things about this file. Here you can specify PHPRC environmental variable for where the php.ini file for the virtual host is
# Here is a second example foe php-wrapper file


--------------php-wrapper---------------------
#!/bin/sh
PHPRC=”/opt/apache/vhosts/domain1.com/php-fastcgi”
export PHPRC
PHP_FCGI_CHILDREN=3
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=2000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php/bin/php
-------------php-wrapper END----------------------

# now lets say your virtual host looks like this



ServerAdmin webmaster@domain1.com
DocumentRoot "/opt/apache/vhosts/domain1.com"
ServerName domain1.com
ErrorLog "logs/domain1.com-error_log"
CustomLog "logs/domain1.com-access_log" common



# What it has to be added is

SuexecUserGroup user1 apache

Options ExecCGI
SetHandler fastcgi-script


AddType application/x-httpd-fastphp .php
AddHandler application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi/php-wrapper

allow from all


# The final version will look like this



ServerAdmin webmaster@domain1.com
DocumentRoot "/opt/apache/vhosts/domain1.com"
ServerName domain1.com
SuexecUserGroup user1 apache

Options ExecCGI
SetHandler fastcgi-script


AddType application/x-httpd-fastphp .php
AddHandler application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi/php-wrapper

allow from all

ErrorLog "logs/domain1.com-error_log"
CustomLog "logs/domain1.com-access_log" common



# Restart apache (/opt/apache/bin/apachectl restart) and all should be working fine

Author: Stefan Batanov


Reddit! Del.icio.us! Mixx! Free and Open Source Software News Google! Facebook! Slashdot! StumbleUpon! TwitThis Joomla Free PHP