Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
litespeed_wiki:other-ext-apps:apache-mod-perl-equivalent [2018/04/10 19:56] Lisa Clarke Proofreading |
litespeed_wiki:other-ext-apps:apache-mod-perl-equivalent [2023/03/25 14:06] Lisa Clarke Redirect to new Documentation Site |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== How to Run a Perl Script on LSWS? ===== | + | ~~REDIRECT>https://docs.litespeedtech.com/lsws/extapp/perl/configuration/~~ |
- | + | ||
- | LiteSpeed comes with a persistent Perl CGI daemon which can run Perl CGI scripts without modification, just like mod_perl in Apache. | + | |
- | + | ||
- | ==== For a Control Panel Environment ==== | + | |
- | If you configure LSWS to run Perl under a control panel environment, such as cPanel, you need to configure it as a Fast CGI application, and then add a script handler for "pl" or whatever suffixes used for Perl scripts. The Perl CGI daemon is located at | + | |
- | + | ||
- | /usr/local/lsws/fcgi-bin/lsperld.fpl | + | |
- | {{ :litespeed_wiki:other-ext-apps:lsperld-ext-app.png?600 |}} | + | |
- | + | ||
- | {{ :litespeed_wiki:other-ext-apps:lsperld-ext-app-handler.png?600 |}} | + | |
- | + | ||
- | Restart LiteSpeed Web Server. | + | |
- | + | ||
- | ==== For LSWS Native Configuration ==== | + | |
- | For LSWS native configuration, you also need to set up the Fast CGI application and add a script handler for "pl". | + | |
- | + | ||
- | As ''lsperld.fpl'' utilizes the Fast CGI interface, it is usually already configured for control panel environments. That may not be the case in a LSWS + bare OS situation. You may need to install the Perl Fast CGI module ''FCGI.pm''. | + | |
- | + | ||
- | The Perl Fast CGI module is available at CPAN(Comprehensive Perl Archive Network). | + | |
- | + | ||
- | On CentOS7, add the ''perl-CPAN'' package first: | + | |
- | yum install epel-release | + | |
- | yum install gcc | + | |
- | yum install perl-CPAN | + | |
- | + | ||
- | The following command can be used to install ''FCGI.pm'' through CPAN: | + | |
- | perl -MCPAN -e 'install FCGI' | + | |
- | + | ||
- | On a CentOS box, you can install ''perl-CGI'' and ''perl-FCGI'' packages through: | + | |
- | yum install perl-CGI | + | |
- | + | ||
- | Verify the installed location of ''FCGI.pm''. | + | |
- | find / -name FCGI.pm | + | |
- | /usr/lib64/perl5/vendor_perl/FCGI.pm | + | |
- | + | ||
- | In order to deal with the increasing memory usage of a persistent process, the number of requests that a Perl daemon can process is controlled by an environment variable ''FCGI_PERL_MAX_REQ''. The default value is ''500''. | + | |
- | + | ||
- | For example: ''FCGI_PERL_MAX_REQ=1000''. | + | |
- | + | ||
- | Restart LSWS to make the changes effective. | + | |
- | + | ||
- | ==== Testing ==== | + | |
- | + | ||
- | Place a test script called ''test.pl'' in the document root of one of your virtual hosts: | + | |
- | + | ||
- | #!/usr/bin/perl | + | |
- | print "Content-type:text/html\n\n"; | + | |
- | print <<EndOfHTML; | + | |
- | <html><head><title>Perl Environment Variables</title></head> | + | |
- | <body> | + | |
- | <h1>Perl Environment Variables</h1> | + | |
- | EndOfHTML | + | |
- | foreach $key (sort(keys %ENV)) { | + | |
- | print "$key = $ENV{$key}<br>\n"; | + | |
- | } | + | |
- | print "</body></html>"; | + | |
- | + | ||
- | You should see something similar to the following when visting ''<nowiki>http://yourdomain.com/test.pl</nowiki>'' | + | |
- | + | ||
- | <code> | + | |
- | Perl Environment Variables | + | |
- | DOCUMENT_ROOT = /usr/local/lsws/DEFAULT/html | + | |
- | FCGI_PERL_MAX_REQ = 1000 | + | |
- | FCGI_ROLE = RESPONDER | + | |
- | GATEWAY_INTERFACE = CGI-PerlEx/1.1 | + | |
- | HTTP_ACCEPT = text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 | + | |
- | HTTP_ACCEPT_ENCODING = gzip, deflate | + | |
- | HTTP_ACCEPT_LANGUAGE = en-US,en;q=0.9 | + | |
- | HTTP_CONNECTION = keep-alive | + | |
- | HTTP_COOKIE = SESS3d805002e809eafb1aa4295801ff28d0=AXgcoPkfgngK9KYuHS4wIn9eVLHEndfHAy7Ys9Gnj4M; COMBIN=2e9910cb4771588a621ae6371c01550bdbe3e6d498788981dca50a1ab6bef6d3; COMINF=bypass_varnish | + | |
- | HTTP_HOST = 192.168.0.178:8088 | + | |
- | HTTP_UPGRADE_INSECURE_REQUESTS = 1 | + | |
- | HTTP_USER_AGENT = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 | + | |
- | LSAPI_CHILDREN = 35 | + | |
- | LSAPI_PADDING = leave_some_room_to_avoid_overwrite_important_env | + | |
- | PATH = /bin:/usr/bin:/usr/local/bin | + | |
- | QUERY_STRING = | + | |
- | REMOTE_ADDR = 192.168.0.198 | + | |
- | REMOTE_PORT = 4322 | + | |
- | REQUEST_METHOD = GET | + | |
- | REQUEST_URI = /test.pl | + | |
- | SCRIPT_FILENAME = /usr/local/lsws/DEFAULT/html/test.pl | + | |
- | SCRIPT_NAME = /test.pl | + | |
- | SERVER_ADDR = 192.168.0.178 | + | |
- | SERVER_ADMIN = | + | |
- | SERVER_NAME = 192.168.0.178 | + | |
- | SERVER_PORT = 8088 | + | |
- | SERVER_PROTOCOL = HTTP/1.1 | + | |
- | SERVER_SOFTWARE = LiteSpeed | + | |
- | </code> | + | |
- | ==== Troubleshooting ==== | + | |
- | + | ||
- | Without the ''perl-CPAN'' package installed, installation may run into the following error: | + | |
- | Can't locate CPAN.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .). | + | |
- | BEGIN failed--compilation aborted. | + | |
- | + | ||
- | Without installing ''FCGI.pm'', you may run into the following error in ''stderr.log'' and see a 503 error on screen. | + | |
- | [STDERR] Can't locate FCGI.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/lsws/fcgi-bin/lsperld.fpl line 3 | + | |
- | + |