Annotation of embedaddon/php/README.Zeus, revision 1.1.1.1
1.1 misho 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'
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>