婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Perl使用nginx FastCGI環境做WEB開發實例

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

熱門標簽:惠州龍門400電話要怎么申請 萬利達百貨商場地圖標注 上海企業外呼系統 河南虛擬外呼系統公司 外呼電信系統 okcc外呼系統怎么調速度 智能機器人電銷神器 熱門電銷機器人 電話機器人哪里有賣

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
    echo "File changes detected, restarting service"
done


該腳本已在Mac OSX和Linux下測試通過

路由系統

做Web開發離不開路由實現,來對不同請求來做出特定的響應。
路由請求依賴HTTP Method和URI兩部分,因此主要就是需要這兩者來做分派。
在CGI中可以通過環境變量REQUEST_METHOD和REQUEST_URI來獲取請求方法和URI。
因此一個簡單的路由系統實際上可以分解為一個二級的map,注冊路由實際上就是往這個map里放入規則對應的處理函數,而分派請求則是從這個map里根據規則獲取對應的處理函數,一個簡單的例子:

復制代碼 代碼如下:

my %routers = ();

sub not_found
{
    print "Status: 404\n";
    print "Content-Type: text/html\n\n";
    printEOF
html>
body>
h1>404 Not found/h1>
Cannot find $ENV{REQUEST_PATH}.
/body>
/html>
EOF
}


sub add_rule
{
    my ($method, $path, $callback) = @_;
    my $handlers = $routers{$method};
    $handlers = $routers{$method} = {} if not $handlers;
    $handlers->{$path} = $callback;
}

sub dispatch
{
    my $q = shift;
    my $method = $ENV{REQUEST_METHOD};
    my $uri = $ENV{REQUEST_URI};
    $uri =~ s/\?.*$//;
    my $handler = ($routers{$method} || {})->{$uri} || not_found;
    eval
    {
 $handler($q);
    };
    print STDERR "Failed to handle $method $uri: $@\n" if $@;
}


使用這個路由系統的例子:
復制代碼 代碼如下:

sub index
{
    my ($q) = @_;
    print $q->header('text/plain');
    print "Hello World!";
}

router::add_rule('GET', '/', \index);


模板系統

perl提供了大量的模板系統的實現,我個人最喜歡的是Template Toolkit,文檔也非常豐富,網站是 http://www.template-toolkit.org/ 。

將前面的index修改為使用模板的例子:

復制代碼 代碼如下:

use Template;

my $tt = new Template({INCLUDE_PATH => 'templates', INTERPOLATE => 1});

sub index
{
    my ($q) = @_;
    my $output = '';
    print $q->header('text/html');

    $tt->process('index.html', {world => 'World'}, $output) || die $tt->error();
    print $output;
}


其中templates/index.html文件內容如下:
復制代碼 代碼如下:

html>
head>title>Demo/title>/head>
body>
Hello ${world}
/body>
/html>

完!

您可能感興趣的文章:
  • Windows10下hyperledger fabric1.4環境搭建過程圖解
  • 在EditPlus中配置Perl開發編譯環境
  • Perl操作系統環境變量的腳本代碼
  • Windows10下安裝配置 perl 環境的詳細教程

標簽:秦皇島 綏化 百色 綿陽 周口 周口 淮安 合肥

巨人網絡通訊聲明:本文標題《Perl使用nginx FastCGI環境做WEB開發實例》,本文關鍵詞  Perl,使用,nginx,FastCGI,環境,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Perl使用nginx FastCGI環境做WEB開發實例》相關的同類信息!
  • 本頁收集關于Perl使用nginx FastCGI環境做WEB開發實例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美卡1卡2卡| 欧美日韩高清一区二区三区| 日韩欧美国产麻豆| 国产成人综合在线| 久久99精品久久久久久动态图 | 欧美日韩一区二区在线观看 | 风间由美一区二区三区在线观看| 蜜臀av一区二区| 日韩二区三区在线观看| 亚洲一区二区中文在线| 亚洲国产精品久久一线不卡| 亚洲欧美激情插| 亚洲成人动漫av| 秋霞av亚洲一区二区三| 韩国中文字幕2020精品| 成人免费视频一区| 94-欧美-setu| 亚洲精品在线电影| 国产精品久久久久久福利一牛影视 | 免费av成人在线| aa级大片欧美| 亚洲欧美综合另类在线卡通| 国产剧情av麻豆香蕉精品| 狠狠色丁香九九婷婷综合五月| 国内久久精品视频| 91免费观看国产| 欧美一区二区三区视频免费| 日韩女同互慰一区二区| 26uuu国产电影一区二区| 中文字幕亚洲综合久久菠萝蜜| 亚洲乱码国产乱码精品精98午夜 | 久久精品国产亚洲高清剧情介绍| 亚洲激情在线播放| 蜜芽一区二区三区| 91捆绑美女网站| 久久综合精品国产一区二区三区 | 日韩精品自拍偷拍| 午夜精品久久久久久久蜜桃app| 国产精品一卡二卡| 精品免费一区二区三区| 青草av.久久免费一区| 欧美日韩国产影片| 日韩综合小视频| 欧美视频在线不卡| 一区二区激情视频| 91精品国产一区二区| 免费观看久久久4p| 国产人成亚洲第一网站在线播放 | 7777精品伊人久久久大香线蕉超级流畅| 欧美熟乱第一页| 麻豆精品新av中文字幕| 国产精品福利一区二区三区| 日韩一区二区在线观看视频| 日本乱人伦一区| 99精品视频一区二区| 久久国产精品72免费观看| 久久一夜天堂av一区二区三区| 福利一区二区在线| 午夜欧美在线一二页| 国产亚洲精品超碰| 色婷婷激情一区二区三区| 石原莉奈一区二区三区在线观看| 欧美三级中文字| www.av精品| 久久不见久久见免费视频7| 国产精品少妇自拍| 欧美一激情一区二区三区| 色嗨嗨av一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品久久一级| 日韩一区二区三免费高清| 91免费看视频| 91免费看片在线观看| 蜜臀av国产精品久久久久 | 最新热久久免费视频| 一本一道久久a久久精品综合蜜臀| 这里只有精品99re| 国产91精品露脸国语对白| 成人一区在线看| 精品一区二区三区香蕉蜜桃| 六月丁香婷婷久久| 日本欧美加勒比视频| 亚洲图片自拍偷拍| 亚洲国产精品人人做人人爽| 丝袜亚洲另类欧美综合| 亚洲一本大道在线| 亚洲精品少妇30p| 日本一二三不卡| 久久久久久久久久久久久女国产乱| 99久久精品99国产精品| 日韩成人av影视| 日本最新不卡在线| 亚洲第一在线综合网站| 久久婷婷久久一区二区三区| 91精品国产aⅴ一区二区| 色乱码一区二区三区88| 中文字幕免费观看一区| 99re热这里只有精品视频| 51午夜精品国产| 亚洲伦在线观看| 视频在线观看一区二区三区| 欧美日韩免费在线视频| 99在线精品一区二区三区| 56国语精品自产拍在线观看| 悠悠色在线精品| 日韩女优av电影在线观看| 午夜久久久久久久久久一区二区| 欧美电影免费观看高清完整版在| 精品免费一区二区三区| 九九**精品视频免费播放| 国产一区二区伦理| 欧美日本一区二区三区四区| 亚洲一二三四在线观看| 欧美成人r级一区二区三区| 亚洲天堂a在线| 色94色欧美sute亚洲线路一ni | 亚洲国产毛片aaaaa无费看| 99国产麻豆精品| 欧美一区二区性放荡片| 精品一区二区免费| 亚洲电影欧美电影有声小说| 国产精品888| 亚洲成a人片在线观看中文| 日韩欧美在线1卡| 国产黄色精品视频| 亚洲综合色区另类av| 国产精品午夜在线| 欧美大片在线观看一区| 久久久久久黄色| 久久一留热品黄| 欧美精品乱码久久久久久| 在线观看不卡视频| 制服.丝袜.亚洲.中文.综合| 337p粉嫩大胆噜噜噜噜噜91av| 7777精品伊人久久久大香线蕉的 | 欧美一级在线视频| 99re这里都是精品| 天堂精品中文字幕在线| 欧美巨大另类极品videosbest| 亚洲一级二级三级| 精品久久人人做人人爱| 激情综合色丁香一区二区| 粉嫩一区二区三区性色av| 在线观看亚洲精品视频| 欧美一区二区私人影院日本| 2017欧美狠狠色| 亚洲国产色一区| 国产伦精品一区二区三区免费迷 | 麻豆精品一二三| 色欧美片视频在线观看在线视频| 91 com成人网| 国产精品久99| 久久 天天综合| 欧美午夜精品久久久| 4438成人网| 日韩不卡手机在线v区| 成人精品国产免费网站| 欧美一级在线观看| 亚洲欧洲成人精品av97| 国产精品亚洲一区二区三区妖精 | 视频一区视频二区在线观看| 亚洲国产精品成人综合| 欧美日韩一区不卡| 亚洲人吸女人奶水| 国产日产亚洲精品系列| 亚洲欧美日韩久久| 99视频热这里只有精品免费| 欧美性生活大片视频| 欧美绝品在线观看成人午夜影视| 成人国产精品免费| 在线观看国产精品网站| 九九热在线视频观看这里只有精品| 一区二区视频在线| 99re免费视频精品全部| 国产亚洲精品精华液| 51午夜精品国产| 亚洲福利一区二区| 亚洲视频一区在线观看| 国产精品白丝在线| 国产精品影视网| 专区另类欧美日韩| 91精品国产综合久久久蜜臀粉嫩 | 亚洲成人资源网| 久久久久久毛片| 欧美中文字幕一区| 成av人片一区二区| 成人av网在线| 欧美图区在线视频| 亚洲三级免费电影| 欧美在线视频全部完| 日韩国产成人精品| 5月丁香婷婷综合| 国产成人aaa| 亚洲男帅同性gay1069| 麻豆一区二区三| 一区二区三区四区乱视频| 另类综合日韩欧美亚洲| 国产免费成人在线视频| 欧美大胆一级视频| 天堂成人国产精品一区|