国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Perl > 正文

Perl使用nginx FastCGI環境做WEB開發實例

2020-06-04 20:31:42
字體:
來源:轉載
供稿:網友

Hello World

一個簡單的hello world例子:
代碼如下:
#!/usr/bin/env perl
use strict;
use warnings;
use CGI::Fast;
while(my $q = new CGI::Fast)
{
 print $q->header("text/plain");
 print "Hello World";
}
和CGI的區別僅在于多了一個循環來接受請求,CGI::Fast對象和CGI接口是一樣的,而且該腳本也可以當做CGI腳本使用。

搭建nginx + FastCGI 環境

Perl使用CGI::Fast包來提供FastCGI服務,該包提供兩種方式來啟動FastCGI進程,一個是直接使用該包提供的服務將當前進程變為FastCGI進程,另外一個是使用第三方工具spawn-fcgi來啟動。
nginx配置方式例子:
代碼如下:
        location / {
            fastcgi_pass   127.0.0.1:8184;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }
配置好nginx后,使用spawn-fcgi來啟動前面的Hello World:
代碼如下:
$ spawn-fcgi -n -a 127.0.0.1 -p 8184 -f ./main.pl


調試支持

在前面的命令行里使用了參數-n,讓spawn-fcgi不要fork出多個進程,并阻塞,允許用戶Ctrl+C來關閉,產品服務器可以去掉這個參數來充分利用服務器的多核來提供更高的并發數。我之前寫了一個bash腳本,允許在文件改動的情況下重啟服務,方便調試perl程序,代碼如下:
代碼如下:
#!/bin/bash
#PID文件和需要啟動的腳本
PID_FILE=service.pid
MAIN=main.pl

#關閉之前啟動的進程
term() {
    test -e $PID_FILE || return
    pid=`cat $PID_FILE`
    kill -s -0 $pid  || return
    echo "Terminating $MAIN $pid"
    rm -f $PID_FILE
    kill $pid
    wait $pid
}
#當前腳本退出的時候也關閉啟動了的FastCGI進程
trap "term;exit" SIGINT SIGTERM
while true
do
#首次啟動或者文件改動后都需要關閉之前的進程
    term
#以no fork方式啟動腳本來調試,并將PID寫入到文件
    spawn-fcgi -n -a 127.0.0.1 -p 8184 -f ./$MAIN  &
    pid=$!
    echo $pid > $PID_FILE
    echo "My Perl service started, pid = $pid"
#監控文件變化
    files=`find . -name '*.pl' -o -name '*.pm' -o -name '*.html'`
    md5=`md5sum $files|md5sum`
#wait for file change
    while [[ `md5sum $files|md5sum` = "$md5" ]]
    do
        sleep 1
    done

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玛沁县| 林州市| 榆林市| 景德镇市| 涿鹿县| 澜沧| 海林市| 治多县| 广平县| 聂拉木县| 珠海市| 来凤县| 读书| 北川| 漯河市| 资溪县| 莱阳市| 苍山县| 田阳县| 颍上县| 大洼县| 瑞丽市| 镇原县| 潍坊市| 阳西县| 原平市| 德庆县| 台南县| 桦南县| 右玉县| 石台县| 鄂尔多斯市| 涡阳县| 锡林浩特市| 玉屏| 柘城县| 馆陶县| 长葛市| 夏河县| 德阳市| 汝阳县|