Решил считать трафик нетамсом. Поставил, оказалось что веб фейс у него на перле, а веб серв стоит нгинкс к которум этот перл еще прикрутить надо. Ладно нагуглил, вроде прикрутил перл к нгинксу, но видимо не корректно оно работает. А возвращаться к апаче не хочется(хотя знаю что там все зафурыкает). Странички нетамс виснут(в частности логин) или выдает такое
Код: Выделить всё
The page you are looking for is temporarily unavailable.
Please try again later.
Код: Выделить всё
Use of uninitialized value in concatenation (.) or string at netams.cgi line 64.
Use of uninitialized value in substitution (s///) at netams.cgi line 76.
Name "main::rightdata" used only once: possible typo at /usr/local/www/****/netams/cgi-bin/admin/index.cgi line 13.
Name "main::L_select_to_do" used only once: possible typo at /usr/local/www/****/netams/cgi-bin/admin/index.cgi line 15.
Name "main::action" used only once: possible typo at /usr/local/www/****/netams/cgi-bin/admin/index.cgi line 7.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in concatenation (.) or string at russian.res line 244.
Use of uninitialized value in string eq at netams.cgi line 15.
Use of uninitialized value in string eq at /usr/local/www/****/netams/cgi-bin/admin/index.cgi line 7.
Use of uninitialized value in concatenation (.) or string at netams.cgi line 64.
Use of uninitialized value in concatenation (.) or string at netams.cgi line 65.
Use of uninitialized value in concatenation (.) or string at netams.cgi line 65.
Can't locate Crypt/GeneratePassword.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.9/BSDPAN /usr/local/lib/perl5/site_perl/5.8.9/mach /usr/local/lib/perl5/site_perl/5.8.9 /usr/local/lib/perl5/5.8.9/mach /usr/local/lib/perl5/5.8.9 .) at /usr/local/www/site/netams/cgi-bin/admin/account.cgi line 85.
Завожу пользователей - не сохраняются они, конфиг от старых зачистился, а новые не заводятся.
Привожу конфиг нгинкса и скрипт для перла.
Код: Выделить всё
server {
listen 80;
server_name http://www.site.net.ru site.net.ru;
charset windows-1251;
access_log logs/host.access.log main;
error_log logs/host.error.log error;
location / {
root /usr/local/www/site;
index index.html index.htm index.php index.cgi;
}
#location ~* \.(gif|jpg|jpeg|png|js|css|rar|exe|sis|sisx|swf|txt)$ {
# root /usr/local/www/site;
#}
location /.,ak,234sfyf34.:,.s/ {
alias /usr/local/www/phpMyAdmin/;
index index.html index.htm index.php;
auth_basic "Private Zone";
auth_basic_user_file /usr/local/www/phpMyAdmin/.htpasswd;
}
location /netams/ {
alias /usr/local/www/netams/;
index index.html index.htm index.php index.cgi;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
location ~ \.php$ {
root /usr/local/www/site/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/www/site$fastcgi_script_name;
include fastcgi_params;
}
location ~ /cgi-bin/.*\.cgi$ {
root /usr/local/www/site/;
#fastcgi_pass unix:/var/run/nginx/perl_cgi-dispatch.sock;# через юникс сокет тоже самое.
fastcgi_pass 127.0.0.1:8999;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
Код: Выделить всё
#!/usr/bin/perl
use FCGI;
#perl -MCPAN -e 'install FCGI'
use Socket;
use POSIX qw(setsid);
#use Fcntl;
require 'sys/syscall.ph';
&daemonize;
#this keeps the program alive or something after exec'ing perl scripts
END() { } BEGIN() { }
*CORE::GLOBAL::exit = sub { die "fakeexit\nrc=".shift()."\n"; };
eval q{exit};
if ($@) {
exit unless $@ =~ /^fakeexit/;
};
&main;
sub daemonize() {
chdir '/' or die "Can't chdir to /: $!";
defined(my $pid = fork) or die "Can't fork: $!";
exit if $pid;
setsid or die "Can't start a new session: $!";
umask 0;
}
sub main {
$socket = FCGI::OpenSocket( "127.0.0.1:8999", 10 ); #use IP sockets
#$socket = FCGI::OpenSocket( "/var/run/nginx/perl_cgi-dispatch.sock", 10 ); #use UNIX sockets - user running this script must have w access to the 'nginx' folder!!
$request = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%req_params, $socket );
if ($request) { request_loop()};
FCGI::CloseSocket( $socket );
}
sub request_loop {
while( $request->Accept() >= 0 ) {
#processing any STDIN input from WebServer (for CGI-POST actions)
$stdin_passthrough ='';
$req_len = 0 + $req_params{'CONTENT_LENGTH'};
if (($req_params{'REQUEST_METHOD'} eq 'POST') && ($req_len != 0) ){
my $bytes_read = 0;
while ($bytes_read < $req_len) {
my $data = '';
my $bytes = read(STDIN, $data, ($req_len - $bytes_read));
last if ($bytes == 0 || !defined($bytes));
$stdin_passthrough .= $data;
$bytes_read += $bytes;
}
}
#running the cgi app
if ( (-x $req_params{SCRIPT_FILENAME}) && #can I execute this?
(-s $req_params{SCRIPT_FILENAME}) && #Is this file empty?
(-r $req_params{SCRIPT_FILENAME}) #can I read this file?
){
pipe(CHILD_RD, PARENT_WR);
my $pid = open(KID_TO_READ, "-|");
unless(defined($pid)) {
print("Content-type: text/plain\r\n\r\n");
print "Error: CGI app returned no output - Executing $req_params{SCRIPT_FILENAME} failed !\n";
next;
}
if ($pid > 0) {
close(CHILD_RD);
print PARENT_WR $stdin_passthrough;
close(PARENT_WR);
while(my $s = <KID_TO_READ>) { print $s; }
close KID_TO_READ;
waitpid($pid, 0);
} else {
foreach $key ( keys %req_params){
$ENV{$key} = $req_params{$key};
}
# cd to the script's local directory
if ($req_params{SCRIPT_FILENAME} =~ /^(.*)\/[^\/]+$/) {
chdir $1;
}
close(PARENT_WR);
close(STDIN);
#fcntl(CHILD_RD, F_DUPFD, 0);
syscall(&SYS_dup2, fileno(CHILD_RD), 0);
#open(STDIN, "<&CHILD_RD");
exec($req_params{SCRIPT_FILENAME});
die("exec failed");
}
}
else {
print("Content-type: text/plain\r\n\r\n");
print "Error: No such CGI app - $req_params{SCRIPT_FILENAME} may not exist or is not executable by this process.\n";
}
}
}