Annotation of embedaddon/php/sapi/litespeed/README, revision 1.1

1.1     ! misho       1: Introduction
        !             2: ============
        !             3: 
        !             4: LiteSpeed SAPI module is a dedicated interface for PHP integration with
        !             5: LiteSpeed Web Server. LiteSpeed SAPI has similar architecture to the
        !             6: FastCGI SAPI with there major enhancements: better performance, dynamic 
        !             7: spawning and PHP configuration modification through web server
        !             8: configuration and .htaccess files.  
        !             9: 
        !            10: Our simple benchmark test ("hello world") shows that PHP with
        !            11: LiteSpeed SAPI has 30% better performance over PHP with FastCGI SAPI,
        !            12: which is nearly twice the performance that Apache mod_php can deliver. 
        !            13:  
        !            14: A major drawback of FastCGI PHP comparing to Apache mod_php is lacking
        !            15: the flexibilities in PHP configurations. PHP configurations cannot be 
        !            16: changed at runtime via configuration files like .htaccess files or web
        !            17: server's virtual host configuration. In shared hosting environment, 
        !            18: each hosting account will has its own "open_basedir" overridden in 
        !            19: server configuration to enhance server security when mod_php is used.
        !            20: usually, FastCGI PHP is not an option in shared hosting environment 
        !            21: due to lacking of this flexibility. LiteSpeed SAPI is carefully designed
        !            22: to address this issue. PHP configurations can be modified the same way 
        !            23: as that in mod_php with the same configuration directives. 
        !            24: 
        !            25: PHP with LiteSpeed SAPI is highly recommended over FastCGI PHP for 
        !            26: PHP scripting with LiteSpeed web server. 
        !            27: 
        !            28: 
        !            29: Building PHP with LiteSpeed SAPI
        !            30: ================================
        !            31: 
        !            32: You need to add "--with-litespeed" to the configure command to build
        !            33: PHP with LiteSpeed SAPI, all other SAPI related configure options
        !            34: should be removed. 
        !            35: 
        !            36: For example: 
        !            37:     ./configure --with-litespeed
        !            38:     make
        !            39: 
        !            40: You should find an executable called 'php' under sapi/litespeed/
        !            41: directory after the compilation succeeds. Copy it to
        !            42: 'lsws/fcgi-bin/lsphp' or wherever you prefer, if LiteSpeed web server
        !            43: has been configured to run PHP with LiteSpeed SAPI already, you just
        !            44: need to overwrite the old executable with this one and you are all
        !            45: set. 
        !            46: 
        !            47: Start PHP from command line
        !            48: ===========================
        !            49: 
        !            50: Usually, lsphp is managed by LiteSpeed web server in a single server
        !            51: installation. lsphp can be used in clustered environment with one 
        !            52: LiteSpeed web server at the front, load balancing lsphp processes 
        !            53: running on multiple backend servers. In such environment, lsphp can be
        !            54: start manually from command with option "-b <socket_address>", socket 
        !            55: address can be IPv4, IPv6 or Unix Domain Socket address. 
        !            56: for example:
        !            57: 
        !            58:     ./lsphp -b [::]:3000
        !            59: 
        !            60: have lsphp bind to port 3000 on all IPv4 and IPv6 address,
        !            61: 
        !            62:     ./lsphp -b *:3000
        !            63: 
        !            64: have lsphp bind to port 300 on all IPv4 address.
        !            65: 
        !            66:     ./lsphp -b 192.168.0.2:3000
        !            67: 
        !            68: have lsphp bind to address 192.168.0.2:3000.
        !            69: 
        !            70:     ./lsphp -b /tmp/lsphp_manual.sock
        !            71: 
        !            72: have lsphp accept request on Unix domain socket "/tmp/lsphp_manual.sock"
        !            73: 
        !            74: 
        !            75: Using LiteSpeed PHP with LiteSpeed Web Server
        !            76: =============================================
        !            77: 
        !            78: Detailed information about how to configure LiteSpeed web server with
        !            79: PHP support is available from our website, at: 
        !            80: 
        !            81: http://www.litespeedtech.com/docs/HowTo_QA.html
        !            82: 
        !            83: Usually, PHP support has been configured out of box, you don't need to
        !            84: change it unless you want to change PHP interface from FastCGI to
        !            85: LiteSpeed SAPI or vice versa. 
        !            86: 
        !            87: Brief instructions are as follow:
        !            88: 
        !            89: 1) Login to web administration interface, go to 'Server'->'Ext App' tab,
        !            90:    add an external application of type "LSAPI app", "Command" should be
        !            91:    set to a shell command that executes the PHP binary you just built. 
        !            92:    "Instances" should be set to "1". Add "LSAPI_CHILDREN" environment 
        !            93:    variable to match the value of "Max Connections". More tunable 
        !            94:    environment variable described below can be added. 
        !            95: 
        !            96: 2) Go to 'Server'->'Script Handler' tab, add a script handler
        !            97:    configuration: set 'suffix' to 'php', 'Handler Type' to 'LiteSpeed
        !            98:    API', 'Handler Name' should be the name of external application
        !            99:    just defined. 
        !           100: 
        !           101: 
        !           102: 3) Click 'Apply Changes' link on the top left of the page, then click 
        !           103:    'graceful restart'. Now PHP is running with LiteSpeed SAPI. 
        !           104: 
        !           105: Tunings
        !           106: -------
        !           107: 
        !           108: There are a few environment variables that can be tweaked to control the
        !           109: behavior of LSAPI application.  
        !           110: 
        !           111: * LSAPI_CHILDREN or PHP_LSAPI_CHILDREN  (default: 0)
        !           112: 
        !           113: There are two ways to let PHP handle multiple requests concurrently, 
        !           114: Server Managed Mode and Self Managed Mode. In Server Managed Mode, 
        !           115: LiteSpeed web server dynamically spawn/stop PHP processes, in this mode
        !           116: "Instances" should match "Max Connections" configuration for PHP 
        !           117: external application. To start PHP in Self Managed Mode, "Instances" 
        !           118: should be set to "1", while "LSAPI_CHILDREN" environment variable should
        !           119: be set to match the value of "Max Connections" and >1. Web Server will 
        !           120: start one PHP process, this process will start/stop children PHP processes 
        !           121: dynamically based on on demand. If "LSAPI_CHILDREN" <=1, PHP will be 
        !           122: started in server managed mode.
        !           123: 
        !           124: Self Managed Mode is preferred because all PHP processes can share one 
        !           125: shared memory block for the opcode cache.
        !           126: 
        !           127: Usually, there is no need to set value of LSAPI_CHILDREN over 100 in
        !           128: most server environment. 
        !           129: 
        !           130: 
        !           131: * LSAPI_AVOID_FORK              (default: 0)
        !           132: 
        !           133: LSAPI_AVOID_FORK specifies the policy of the internal process manager in
        !           134: "Self Managed Mode". When set to 0, the internal process manager will stop
        !           135: and start children process on demand to save system resource. This is
        !           136: preferred in a shared hosting environment. When set to 1, the internal
        !           137: process manager will try to avoid freqently stopping and starting children
        !           138: process. This might be preferred in a dedicate hosting environment.
        !           139: 
        !           140: 
        !           141: * LSAPI_EXTRA_CHILDREN          (default: 1/3 of LSAPI_CHILDREN or 0)
        !           142: 
        !           143: LSAPI_EXTRA_CHILDREN controls the maximum number of extra children processes
        !           144: can be started when some or all existing children processes are in
        !           145: malfunctioning state. Total number of children processes will be reduced to
        !           146: LSAPI_CHILDREN level as soon as service is back to normal.
        !           147: When LSAPI_AVOID_FORK is set to 0, the default value is 1/3 of
        !           148: LSAPI_CHIDLREN, When LSAPI_AVOID_FORK is set to 1, the default value is 0.
        !           149: 
        !           150: 
        !           151: * LSAPI_MAX_REQS or PHP_LSAPI_MAX_REQUESTS (default value: 10000)
        !           152: 
        !           153: This controls how many requests each child process will handle before
        !           154: it exits automatically. Several PHP functions have been identified 
        !           155: having memory leaks. This parameter can help reducing memory usage 
        !           156: of leaky PHP functions. 
        !           157: 
        !           158: 
        !           159: * LSAPI_MAX_IDLE                (default value: 300 seconds)
        !           160: 
        !           161: In Self Managed Mode, LSAPI_MAX_IDLE controls how long a idle child  
        !           162: process will wait for a new request before it exits. This option help 
        !           163: releasing system resources taken by idle processes.
        !           164: 
        !           165: 
        !           166: * LSAPI_MAX_IDLE_CHILDREN
        !           167:     (default value: 1/3 of LSAPI_CHILDREN or LSAPI_CHILDREN)
        !           168: 
        !           169: In Self Managed Mode, LSAI_MAX_IDLE_CHILDREN controls how many idle 
        !           170: children processes are allowed. Excessive idle children processes
        !           171: will be killed by the parent process immediately.
        !           172: When LSAPI_AVOID_FORK is set to 0, the default value is 1/3 of
        !           173: LSAPI_CHIDLREN, When LSAPI_AVOID_FORK is set to 1, the default value
        !           174: is LSAPI_CHILDREN.
        !           175: 
        !           176: 
        !           177: * LSAPI_MAX_PROCESS_TIME        (default value: 300 seconds)
        !           178: 
        !           179: In Self Managed Mode, LSAPI_MAX_PROCESS_TIME controls the maximum 
        !           180: processing time allowed when processing a request. If a child process
        !           181: can not finish processing of a request in the given time period, it 
        !           182: will be killed by the parent process. This option can help getting rid 
        !           183: of dead or runaway child process.
        !           184: 
        !           185: 
        !           186: * LSAPI_PGRP_MAX_IDLE           (default value: FOREVER )
        !           187: 
        !           188: In Self Managed Mode, LSAPI_PGRP_MAX_IDLE controls how long the parent
        !           189: process will wait before exiting when there is no child process.
        !           190: This option help releasing system resources taken by an idle parent 
        !           191: process.
        !           192: 
        !           193: 
        !           194: * LSAPI_PPID_NO_CHECK
        !           195: 
        !           196: By default a LSAPI application check the existence of its parent process
        !           197: and exits automatically if the parent process died. This is to reduce 
        !           198: orphan process when web server is restarted. However, it is desireable 
        !           199: to disable this feature, such as when a LSAPI process was started 
        !           200: manually from command line. LSAPI_PPID_NO_CHECK should be set when 
        !           201: you want to disable the checking of existence of parent process.
        !           202: When PHP started by "-b" option, it is disabled automatically. 
        !           203: 
        !           204: 
        !           205: Compatibility with Apache mod_php
        !           206: =================================
        !           207: 
        !           208: LSAPI PHP supports PHP configuration overridden via web server configuration 
        !           209: as well as .htaccess. 
        !           210: Since 4.0 release "apache_response_headers" function is supported.
        !           211: 
        !           212: 
        !           213: 
        !           214: Contact
        !           215: =======
        !           216: 
        !           217: For support questions, please post to our free support forum, at:
        !           218: 
        !           219: http://www.litespeedtech.com/forum/
        !           220: 
        !           221: For bug report, please send bug report to bug [at] litespeedtech.com.
        !           222: 
        !           223: 
        !           224: 
        !           225: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>