1
Using PHP 5 with the Zeus Web Server
2
-----------------------------------
4
Zeus fully supports running PHP in combination with our
5
webserver. There are three different interfaces that can be used to
12
Of the three, we recommend using FastCGI, which has been tested and
13
benchmarked as providing the best performance and reliability.
15
Full details of how to install PHP are available from our
18
http://support.zeus.com/products/php.html
20
If you have any problems, please check the support site for more
21
up-to-date information and advice.
24
Quick guide to installing CGI/FastCGI with Zeus
25
-----------------------------------------------
27
Step 1 - Compile PHP as FastCGI.
30
./configure --enable-fastcgi
33
Note that PHP has many options to the configure script -
34
e.g. --with-mysql. You will probably want to select your usual options
35
before compiling; the above is just a bare minimum, for illustration.
37
After compilation finishes, you will be left with an executable
38
program called 'php'. Copy this into your document root, under a
39
dedicated FastCGI directory (e.g. $DOCROOT/fcgi-bin/php)
42
Step 2 - configure Zeus
47
- setup alias for FastCGI
50
1) Using the admin server, go to the 'module configuration' page for
51
your virtual server, and ensure that 'fastcgi' is enabled (select the
54
2) While we can run FastCGI's locally, there are known problems with
55
some OS's (specifically, the communication between web server and
56
FastCGI happens over a unix domain socket, and some OS's have trouble
57
sustaining high connection rates over these sockets). So instead, we
58
are going to set up the PHP FastCGI to run 'remotely' over localhost
59
(this uses TCP sockets, which do not suffer this problem). Go to the
60
'fastcgi configuration' page, and under 'add remote fastcgi':
62
Docroot path /fcgi-bin/php
63
Remote machine localhost:8002
64
The first entry is where you saved PHP, above.
65
The second entry is localhost:<any unused port>
66
We will start the FastCGI listening on this port shortly.
67
Click 'update' to commit these changes.
69
3) Go to the path mapping module and add an alias for FastCGI:
71
Docroot path /fcgi-bin
72
Filesystem directory /path/to/docroot/fcgi-bin
74
Click 'update' to commit these changes
76
4) Also on the path mapping module, add a handler for PHP:
80
Click 'update' to commit these changes
82
Finally restart your virtual server for these changes to take effect.
85
Step 3 - start PHP as a FastCGI runner
87
When you start PHP, it will pre-fork a given number of child processes
88
to handle incoming PHP requests. Each process will handle a given
89
number of requests before exiting (and being replaced by a newly
90
forked process). You can control these two parameters by setting the
91
following environment variables BEFORE starting the FastCGI runner:
93
PHP_FCGI_CHILDREN - the number of child processes to pre-fork. This
94
variable MUST be set, if not then the PHP will not run as a FastCGI.
95
We recommend a value of 8 for a fairly busy site. If you have many,
96
long-running PHP scripts, then you may need to increase this further.
98
PHP_FCGI_MAX_REQUESTS - the number of requests each PHP child process
99
handles before exiting. If not set, defaults to 500.
101
To start the FastCGI runner, execute '$ZEUSHOME/web/bin/fcgirunner
102
8002 $DOCROOT/fcgi-bin/php'. Substitute the appropriate values for
103
$ZEUSHOME and $DOCROOT; also substitute for 8002 the port you chose,
106
To stop the runner (e.g. to experiment with the above environment
107
variables) you will need to manually stop and running PHP
108
processes. (Use 'ps' and 'kill'). As it is PHP which is forking lots
109
of children and not the runner, Zeus unfortunately cannot keep track
110
of what processes are running, sorry. A typical command line may look
111
like 'ps -efl | grep $DOCROOT/fcgi-bin/php | grep -v grep | awk
112
'{print $4}' | xargs kill'