#mycgiapp.psgi
#!/usr/bin/perl
use strict;
use Plack::Request;
use forks::BerkeleyDB;
use XML::Simple;
use JSON qw(encode_json);
use MIME::Base64 qw(encode_base64);
use DBI;
use SOAP::Lite();
use POSIX qw(ceil);
use Data::Dumper;
$XML::Simple::PREFERRED_PARSER='XML::Parser';
$SOAP::Constants::DO_NOT_USE_CHARSET = 1;
my $app = sub {
my $env = shift;
my $req = Plack::Request->new($env);
my $input=$req->parameters();
my($out)=GetOutput($input);
if ($input->{'format'} eq 'json'){
my $json=JSON->new->utf8->encode($out);
return [
200,
['Content-Type' => 'application/json'],
[ $json ],
];
}
else{
my $xml=XMLout($out,RootName=>"Result",keepRoot=>0,NoAttr=>1, KeyAttr => []);
return [
200,
['Content-Type' => 'text/xml'],
[ $xml ],
];
}
};
sub GetOutput
{
#CGI script code
# Runs multiple threads/forks to collect data from various apis with SOAP calls
return ($headers,$out);
}
#RAN IT WITH plackup
C:\httpd\myapp>plackup -D -r --host 192.168.110.181 --port 5010 --app myapp.psgi
Watching ./lib myapp.psgi for file updates.
HTTP::Server::PSGI: Accepting connections at http://192.168.110.181:5010/
10.1.1.4 - - [11/Sep/2014:11:33:57 +0530] "GET /
####
use Ubic::Service::Starman;
my $Config={
server_args => {
'listen' =>'10.1.1.5:8080',
'workers' =>16,
'backlog' =>1024,
'max-requests'=>1000,
'daemonize' =>'',
'user' =>'perl',
'access-log' =>'/var/log/psgi/access.log',
'error-log' =>'/var/log/psgi/error.log',
'app' =>'/var/www/myapp/myapp.psgi',
},
app => "/var/www/myapp/myapp.psgi",
status => sub {},
ubic_log=> '/var/log/psgi/ubic.log',
stdout => '/var/log/psgi/stdout.log',
stderr => '/var/log/psgi/stderr.log',
user =>'perl',
group =>'perl',
cwd =>'/var/www/myapp',
pidfile =>'/var/log/psgi/myapp.pid',
};
return Ubic::Service::Starman->new($Config);
# ubic status myapp
# ubic myapp not running
Can't locate /var/www/myapp/Config.pl 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 /var/www/myapp/myapp.psgi line 166.
####
use Ubic::Service::Plack;
my $Config={
server => "Plack::Handler::Starman",
server_args => {
'listen' =>'10.1.1.5:8080',
'workers' =>16,
'backlog' =>1024,
'max-requests'=>1000,
'daemonize' =>'',
'reload' =>'',
'user' =>'perl',
'access-log' =>'/var/log/psgi/access.log',
'error-log' =>'/var/log/psgi/error.log',
'app' =>'/var/www/myapp/myapp.psgi',
},
app => '/var/www/myapp/myapp.psgi',
status => sub {},
ubic_log=> '/var/log/psgi/ubic.log',
stdout => '/var/log/psgi/stdout.log',
stderr => '/var/log/psgi/stderr.log',
user =>'perl',
group =>'perl',
cwd =>'/var/www/myapp/',
pidfile =>'/var/log/psgi/domfares.pid',
};
return Ubic::Service::Plack->new($Config);
####
Starman error log
2014/09/12-14:25:52 Worker processes cleaned up
2014/09/12-14:25:52 Server closing!
Process Backgrounded
2014/09/12-14:26:53 Starman::Server (type Net::Server::PreFork) starting! pid(20742)
Binding to TCP port 8080 on host 10.1.1.5 with IPv4
2014/09/12-14:26:53 Can't connect to TCP port 8080 on 10.1.1.5 [Address already in use]
at line 68 in file /usr/local/share/perl5/Net/Server/Proto/TCP.pm
2014/09/12-14:26:53 Received QUIT. Running a graceful shutdown
2014/09/12-14:26:53 Worker processes cleaned up
2014/09/12-14:26:53 Server closing!
##Ubic log
[Fri Sep 12 14:24:53 2014] 19878 guardian name: ubic-guardian starman --backlog 1024 --access-log /var/log/psgi/access.log --max-requests 1000 --app /var/www/myapp/myapp.psgi --error-log /var/log/psgi/error.log --workers 16 --reload --listen 10.1.1.5:8080 --user perl --server Plack::Handler::Starman --daemonize /var/www/myapp/myapp.psgi
[Fri Sep 12 14:24:53 2014] 19878 obtaining lock...
[Fri Sep 12 14:24:53 2014] 19878 got lock
[Fri Sep 12 14:24:53 2014] 19878 guardian pid: 19878
[Fri Sep 12 14:24:53 2014] 19878 daemon pid: 19879
[Fri Sep 12 14:24:53 2014] 19878 child guid: 2916133834
[Fri Sep 12 14:25:52 2014] 19878 sending SIGTERM to 19879
[Fri Sep 12 14:25:52 2014] 19878 daemon 19879 exited
[Fri Sep 12 14:25:52 2014] 20296 guardian name: ubic-guardian starman --backlog 1024 --access-log /var/log/psgi/access.log --max-requests 1000 --app /var/www/myapp/myapp.psgi --error-log /var/log/psgi/error.log --workers 16 --reload --listen 10.1.1.5:8080 --user perl --server Plack::Handler::Starman --daemonize /var/www/myapp/myapp.psgi
[Fri Sep 12 14:25:52 2014] 20296 obtaining lock...
[Fri Sep 12 14:25:52 2014] 20296 got lock
[Fri Sep 12 14:25:52 2014] 20296 guardian pid: 20296
[Fri Sep 12 14:25:52 2014] 20296 daemon pid: 20297
[Fri Sep 12 14:25:52 2014] 20296 child guid: 2916139767
[Fri Sep 12 14:26:52 2014] 20296 sending SIGTERM to 20297
[Fri Sep 12 14:26:52 2014] 20296 daemon 20297 exited
[Fri Sep 12 14:26:52 2014] 20738 guardian name: ubic-guardian starman --backlog 1024 --access-log /var/log/psgi/access.log --max-requests 1000 --app /var/www/myapp/myapp.psgi --error-log /var/log/psgi/error.log --workers 16 --reload --listen 10.1.1.5:8080 --user perl --server Plack::Handler::Starman --daemonize /var/www/myapp/myapp.psgi
[Fri Sep 12 14:26:52 2014] 20738 obtaining lock...
[Fri Sep 12 14:26:52 2014] 20738 got lock
[Fri Sep 12 14:26:52 2014] 20738 guardian pid: 20738
[Fri Sep 12 14:26:52 2014] 20738 daemon pid: 20739
[Fri Sep 12 14:26:52 2014] 20738 child guid: 2916145800
[Fri Sep 12 14:26:55 2014] 20738 sending SIGTERM to 20739
[Fri Sep 12 14:26:55 2014] 20738 daemon 20739 exited