~ubuntu-branches/ubuntu/hardy/php5/hardy-updates

« back to all changes in this revision

Viewing changes to README.Zeus

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-10-09 03:14:32 UTC
  • Revision ID: james.westby@ubuntu.com-20051009031432-kspik3lobxstafv9
Tags: upstream-5.0.5
ImportĀ upstreamĀ versionĀ 5.0.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Using PHP 5 with the Zeus Web Server
 
2
-----------------------------------
 
3
 
 
4
Zeus fully supports running PHP in combination with our
 
5
webserver. There are three different interfaces that can be used to
 
6
enable PHP:
 
7
 
 
8
* CGI
 
9
* ISAPI
 
10
* FastCGI
 
11
 
 
12
Of the three, we recommend using FastCGI, which has been tested and
 
13
benchmarked as providing the best performance and reliability.
 
14
 
 
15
Full details of how to install PHP are available from our
 
16
website, at:
 
17
 
 
18
http://support.zeus.com/products/php.html
 
19
 
 
20
If you have any problems, please check the support site for more
 
21
up-to-date information and advice.
 
22
 
 
23
 
 
24
Quick guide to installing CGI/FastCGI with Zeus
 
25
-----------------------------------------------
 
26
 
 
27
Step 1 - Compile PHP as FastCGI.
 
28
 
 
29
Compile as follows:
 
30
        ./configure --enable-fastcgi
 
31
        make
 
32
 
 
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.
 
36
 
 
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)
 
40
 
 
41
 
 
42
Step 2 - configure Zeus
 
43
 
 
44
Four stages:
 
45
        -  enable FastCGI
 
46
        -  configure FastCGI
 
47
        -  setup alias for FastCGI
 
48
        -  setup alias for PHP
 
49
 
 
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
 
52
tickbox to the left).
 
53
 
 
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':
 
61
        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.
 
68
 
 
69
3) Go to the path mapping module and add an alias for FastCGI:
 
70
        Add Alias
 
71
                Docroot path            /fcgi-bin
 
72
                Filesystem directory    /path/to/docroot/fcgi-bin
 
73
                Alias type              fastcgi
 
74
Click 'update' to commit these changes
 
75
 
 
76
4) Also on the path mapping module, add a handler for PHP:
 
77
        Add handler
 
78
                File extension          php
 
79
                Handler                 /fcgi-bin/php
 
80
Click 'update' to commit these changes
 
81
 
 
82
Finally restart your virtual server for these changes to take effect.
 
83
 
 
84
 
 
85
Step 3 - start PHP as a FastCGI runner
 
86
 
 
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:
 
92
 
 
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.
 
97
 
 
98
PHP_FCGI_MAX_REQUESTS - the number of requests each PHP child process
 
99
handles before exiting. If not set, defaults to 500.
 
100
 
 
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,
 
104
above.
 
105
 
 
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'