LSPHP(LSAPI + PHP) command line mode is for PHP binary running on a remote server that does not necessarily have web server running to process PHP scripts reside on local web server (separate). This setup is suitable for service scalability as PHP processing is offloaded to a remote server.
Typical setup is as follows:
PHP_LSAPI_MAX_REQUESTS=500 PHP_LSAPI_CHILDREN=35 /path/to/lsphp -b IP_address:port
Admin CP => Configuration => Server or Virtual Host => External App:
address => IP_address: port (in step above)
auto start => no
To load balance backend PHPs, create a “load balancer” external app, use backend PHPs (lsapi external app) as members and have script handler use the “load balancer” instead of php external app via Admin Console
Create LSAPI external app for each backend
PHP as does in the typical setup above such as ‘remote php #1’ for remote server #1, ‘remote php #2’ for remote server #2, ..., ‘remote php #n’ for remote server #n, etc.
Name: lsphp5_cluster
Workers: LSAPI::remote php #1,LSAPI::remote php #2,...,LSAPI::remote php #n
Suffixes: php
Handler Type: Load Balancer
Handler Name: [Server Level]: lsphp5_cluster
PHP scripts on local web server need to be rsync’d over to the remote server with exact path.
If local web server is chroot’d, then chroot needs to map to file system root of the remote server. e.g. if web server chroot is /usr/local/opt, then /usr/local/opt/lsws/DEFAULT/html (default lsws vhost docroot) needs to be rsync’d over and placed on remote server as /lsws/DEFAULT/html.
For load balancing backend
PHP setup, since
PHP runs on different servers, a central shared
PHP session storage like memcached, etc is recommended as LSWS load balancing is not session aware. An ideal set up is using LiteSpeed Load Balancer which is session aware in front of LiteSpeed web server clusters.