我們公司管理着超過100臺服務器,我們希望每天使用http「一次或兩次」詢問這些服務器的基本使用信息。使用信息可以很容易地通過perl cgi腳本找到,我們希望有一個http接口來簡化腳本的創建和測試。使用apache或者甚至nginx + fcgiwrap來每天提供一個或兩個請求似乎是一件多餘的事情。我們考慮使用openbsd-inetd(已經安裝在所有服務器上)來啓動一個Web服務器,它可以很容易地將請求傳遞給perl cgi腳本並退出。有什麼好的選擇來做到這一點?每天使用perl cgi服務少於10個http請求的最有效的方法
我設法得到這個perlscript.pl
工作,但我不知道這是否是正確的方法。
#!/usr/bin/perl
use strict;
use warnings;
{
package BackupWebServer;
use HTTP::Server::Simple::CGI;
use base qw(HTTP::Server::Simple::CGI);
my %dispatch = (
'/hello' => \&resp_hello
);
sub net_server { 'Net::Server::INET' }
sub handle_request {
my $self = shift;
my $cgi = shift;
my $path = $cgi->path_info();
my $handler = $dispatch{$path};
if (ref($handler) eq "CODE") {
print "HTTP/1.0 200 OK\r\n";
$handler->($cgi);
} else {
print "HTTP/1.0 404 Not found\r\n";
print $cgi->header,
$cgi->start_html('Not found'),
$cgi->h1('Not found'),
$cgi->end_html;
}
}
sub resp_hello {
my $cgi = shift; # CGI.pm object
return if !ref $cgi;
my $who = $cgi->param('name');
print $cgi->header,
$cgi->start_html("Hello"),
$cgi->h1("Hello $who!"),
$cgi->end_html;
}
}
BackupWebServer->new()->run(
log_file => 'Sys::Syslog',
user => 'root',
group => 'root'
);
採用具有
8901 stream tcp nowait root /home/perl/scriptname.pl
看看這裏:http://stackoverflow.com/questions/42/simplest-way-to-host-html/21321291#21321291 –
它可能是矯枉過正,但Apache也很簡單,因爲它很容易安裝,支持和配置。無論如何,大多數時間都在運行一個閒置的Apache實例真的如此大的性能?我不這麼認爲。而且,在易於設置和維護的東西中,有一個貨幣價值,而對比一個更復雜的家庭解決方案,只需節省幾MB。 – TypeIA
幾MB的磁盤空間。如果需要RAM,一個未使用的deamon將最終交換出來。 – ikegami