Bonjour à tous,

J'ai installé Request tracker sous CentOS et je dois dire qu'il fonctionne très bien à part un problème de connexion non persistante et du coup l'utilisateur est obligé de retaper son login et password quasiment à chaque nouvelle page visitée.

Request Tracker utilise apache avec mod_perl et CGI.
De plus j'ai ouïe dire qu'il fallait mettre le module Perl Apache:: DBI pour résoudre ce problème de connection persistante mais cela n'a rien changé.

Donc voila ma config request tracker :
Code Config : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
 
Alias /rt "/var/rt/html"
Alias /NoAuth/images/ /var/rt/html/NoAuth/images/
 
<VirtualHost xxx.xxx.xxx.xxx:80>
    ServerName rt-server
    DocumentRoot /var/rt/html
    AddDefaultCharset UTF-8
 
    PerlModule Apache2::compat
    PerlModule Apache:: DBI
    PerlModule Apache::AuthDBI
 
    PerlRequire /usr/bin/webmux.pl
 
    <Location />
        SetHandler perl-script
        PerlHandler RT::Mason
        <IfDefine PerlDProf>
          <IfDefine PerlSmallProf>
            PerlFixupHandler Apache::SmallProf
          </IfDefine>
        </IfDefine>
    </Location>
 
    <Location /NoAuth/images>
      SetHandler default-handler
    </Location>


le contenu du fichier webmux.pl devrait plus vous parlé à vous spécialiste CGI:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 
 
#!/usr/bin/perl
 
use strict;
 
BEGIN {
    $ENV{'PATH'}   = '/bin:/usr/bin';                     # or whatever you need
    $ENV{'CDPATH'} = '' if defined $ENV{'CDPATH'};
    $ENV{'SHELL'}  = '/bin/sh' if defined $ENV{'SHELL'};
    $ENV{'ENV'}    = '' if defined $ENV{'ENV'};
    $ENV{'IFS'}    = '' if defined $ENV{'IFS'};
 
    use CGI qw(-private_tempfiles);
#bring this in before mason, to make sure we set private_tempfiles
 
    die "RT does not support mod_perl 1.99. Please upgrade to mod_perl 2.0"
      if $ENV{'MOD_PERL'}
      and $ENV{'MOD_PERL'} =~ m{mod_perl/(?:1\.9)};
 
}
 
use lib ( "/usr/local/rt/lib", "/usr/lib/rt" );
use RT;
 
package RT::Mason;
 
use vars qw($Nobody $SystemUser $Handler $r);
 
#This drags in RT's config.pm
BEGIN {
    RT::LoadConfig();
    if ($RT:: DevelMode) { require Module::Refresh; }
}
 
 
{
 
    package HTML::Mason::Commands;
    use vars qw(%session);
}
 
use RT::Interface::Web;
use RT::Interface::Web::Handler;
$Handler = RT::Interface::Web::Handler->new(@RT::MasonParameters);
 
if ($ENV{'MOD_PERL'} && !$RT:: DevelMode) {
    # Under static_source, we need to purge the component cache
    # each time we restart, so newer components may be reloaded.
    #
    # We can't do this in FastCGI or we'll blow away the component root _every_ time a new server starts
    # which happens every few hits.
 
    use File:: Path qw( rmtree );
    use File::Glob qw( bsd_glob );
    rmtree([ bsd_glob("$RT::MasonDataDir/obj/*") ], 0, 1);
}
 
sub handler {
    ($r) = @_;
 
    local $SIG{__WARN__};
    local $SIG{__DIE__};
 
    # We don't need to handle non-text, non-xml items
    if ($r->content_type =~ m/^httpd\b.*\bdirectory/i) {
        use File::Spec::Unix;
        # Our DirectoryIndex is always index.html, regardless of httpd settings
        $r->filename( File::Spec::Unix->catfile( $r->filename, 'index.html' ) );
    }
    elsif (defined( $r->content_type )) {
        $r->content_type =~ m!(^text/|\bxml\b)!i or return -1;
    }
 
    Module::Refresh->refresh if $RT:: DevelMode;
 
    RT::Init();
 
    my %session;
    my $status;
    eval { $status = $Handler->handle_request($r) };
    if ($@) {
        $RT::Logger->crit($@);
    }
 
    undef(%session);
 
    RT::Interface::Web::Handler->CleanupRequest();
 
    return $status;
}
 
1;
De plus voici quelques variables apache que j'ai modifié pour assurer le coup mais la connection ne persiste pas.

Timeout 12000
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 1500

Pouvez vous me dire si cela viens de CGI ou alors plutot de Apache:: DBI ou request tracker?

Merci d'avance pour votre aide.