On Tue, May 1, 2012 at 19:32, Chris Doherty
<[email protected]> wrote:
> Hello, all.  Having some difficulty with a FastCGI setup.
>
> Summary: When I attempt to start the R-T FastCGI service, it does not
> start.  If I manually execute 'perl /usr/sbin/mason_handler.fcgi', it
> *does* run correctly and emits the html for the R-T login page.


It's one handler, not complete fcgi server. Apache and other web
servers have solutions to spawn pool of FCGI processes and serve them
requests. RT 3.8 has bin/fastcgi_server that is actually an external
fcgi server you can use with nginx without additional spawner.

For 4.0 you can use RT-Extension-Nginx. You can use this as a
reference to setup 3.8.

> Detail:
>
> It is a site standard that web apps must be fronted by nginx and run as
> a FastCGI process on a socket.  Our site standard Linux is CentOS 6.2
> x64.  RT-3.8.10 is packaged for CentOS by the EPEL group, but starts
> with the assumption that you'll be running under apache and using
> PostgreSQL for the back end DB (neither of which are true here).
>
> I have been trying to set up an nginx+FastCGI stack for R-T, but
> although there's documentation around the 'net, it's either extremely
> out of date or is Ubuntu-specific.  I have tried modifying things to
> match CentOS without success.
>
> What I have done so far:
>
> Disabled SELinux (off by standard on internal servers).
>
> Installed the following packages (mix of EPEL and CentOS) and their
> prereqs: mysql-server perl-FCGI perl-CPAN make rt3 rt3-mailgate
>
> Disabled the httpd service.
>
> Created MySQL database for R-T, assigned privileges, and preloaded with
> data from a testing R-T instance (running successfully on Ubuntu).
>
> Installed the CommandByMail extension (this requires make and
> perl-CPAN).
>
> Setup the /etc/rt3/RT_SiteConfig.pm:
> ------------8<---------8<-----------------
> # dynamically find out the current timezone
> my $zone = "UTC";
> $zone=`/bin/cat /etc/timezone`
>    if -f "/etc/timezone";
> chomp $zone;
> Set($Timezone, $zone);
>
> # THE BASICS:
> Set($rtname, 'tt.our.site');
> Set($Organization, 'our.site');
>
> Set($CorrespondAddress , '[email protected]');
> Set($CommentAddress , '[email protected]');
>
> # THE WEBSERVER:
>
> Set($WebPath , "/");
> Set($WebBaseURL , "http://tt.our.site";);
>
> # THE DATABASE:
>
> # map from dbconfig-common database types to their names as known by RT
> my %typemap = (
>    mysql   => 'mysql',
>    pgsql   => 'Pg',
>    sqlite3 => 'SQLite',
> );
>
> Set($DatabaseType, $typemap{mysql} || "UNKNOWN");
>
> Set($DatabaseHost, 'localhost');
> Set($DatabasePort, '');
>
> Set($DatabaseUser , 'rt');
> Set($DatabasePassword , 'Password');
>
> # SQLite needs a special case, since $DatabaseName must be a full
> pathname
> my $dbc_dbname = 'rtdb'; if ( "mysql" eq "sqlite3" ) { Set
> ($DatabaseName, '' . '/' . $dbc_dbname); } else { Set ($DatabaseName,
> $dbc_dbname); }
>
> # EXTENSIONS
> # CommandByEmail
> Set(@MailPlugins, qw(Auth::MailFrom Filter::TakeAction));
> Set(@Plugins,(qw(RT::Extension::CommandByMail)));
> Set($CommandByMailGroup, 9804);
>
> 1;
> --------------8<------------------------8<-------------------
>
> Set up the /etc/nginx/conf.d/tt.our.site.conf file:
>
> --------------8<------------------------8<-------------------
> server {
>        listen          80;
>        server_name     tt.our.site;
>        root            /usr/share/rt3/html;
>
>        location / {
>                index           index.html;
>                fastcgi_pass    unix:/var/run/rt/rt.sock;
>                include         /etc/nginx/fastcgi.conf;
>                fastcgi_param   PATH_INFO       $fastcgi_script_name;
>        }
>
>        location ~* .+\.(html|js|css)$  {
>                index           index.html;
>                fastcgi_pass    unix:/var/run/rt/rt.sock;
>                include         /etc/nginx/fastcgi.conf;
>                fastcgi_param   PATH_INFO       $fastcgi_script_name;
>        }
>
>        location /NoAuth/images/ {
>                alias /usr/share/rt3/html/NoAuth/images/;
>        }
> }
> ---------------8<-----------------8<-----------------
>
> Created an initrc file for the rt3 service, /etc/init.d/rt3:
>
> ---------------8<-----------------8<-----------------
> #!/bin/sh
>
> # rt3 - this script starts and stops the perl-FCGI RT3 daemon
> #
> # chkconfig:   - 85 15
> # description:  RT3 is a request/issue handling system written in perl
> served as a FastCGI module.
>
>
>   RTPATH=/usr/share/rt3/
>   RTUSER=nginx
>   FCGI_SOCKET_PATH=/var/run/rt3/rt3.sock
>
>   case $1 in
>       start)
>           echo -n "Starting RT: mason_handler.fcgi"
>           cd $RTPATH
>           export FCGI_SOCKET_PATH
>           su $RTUSER -c perl /usr/sbin/mason_handler.fcgi &
>           echo
>           ;;
>
>       stop)
>           echo -n "Stopping RT: "
>           PIDS=`ps axww | awk '/[m]ason_handler.fcgi/ { print $1}'`
>           if [ -n "$PIDS" ]
>           then
>               echo -n kill -TERM $PIDS
>               kill $PIDS
>               echo
>           else
>               echo RT not running
>           fi
>           ;;
>
>       restart|force-reload)
>           $0 stop
>           $0 start
>           ;;
>
>       *)
>           echo "Usage: /etc/init.d/rt3 { stop | start | restart }"
>           exit 1
>           ;;
>   esac
> ------------------------8<-----------------------8<------------------
>
> Permissions on /usr/share/rt3 are 755 nginx:nginx all the way down
> Permissions on /var/run/rt3 are 755 nginx:nginx
>
>
> As I mentioned, if I run 'chkconfig rt3 on; service rt3 start' then the
> process doesn't actually start (possibly it's starting and then
> immediately exiting, but I'm having trouble trapping that).
>
> If I run perl /usr/sbin/mason_handler.fcgi, then I get a non-fatal
> warning followed by the Login page HTML:
> -----------------------8<------------------------8<-----------------
> [Tue May  1 15:25:12 2012] [warning]: Use of uninitialized value $method
> in string ne at /usr/share/perl5/HTML/Mason/Utils.pm line 40.
> (/usr/share/perl5/HTML/Mason/Utils.pm:40)
> Set-Cookie: RT_SID_tt.our.site=08ca69d885bfb72426c13aa4b80fc95f; path=/
> Date: Tue, 01 May 2012 15:25:12 GMT
> Pragma: no-cache
> Cache-control: no-cache
> Content-Type: text/html; charset=utf-8
>
> <!DOCTYPE html
>     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
>     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
> [...]
> ----------------------8<---------------------------8<------------------
>
> One thing I notice is that the socket file is not getting created; most
> of the other FastCGI programs I work with (php-fpm, thin) will create
> the socket file if it doesn't exist and they have the correct
> permissions to do so.
>
> Any ideas?
>
>
> --
> Chris Doherty
> Software Engineer
> Advanced Systems Engineering
> FLEXComputing
>
> [email protected]
> www.flextronics.com
> Ph +1 289 288 1509
> Fax +1 289 288 1549
>
>
>
> Legal Disclaimer:
> The information contained in this message may be privileged and confidential. 
> It is intended to be read only by the individual or entity to whom it is 
> addressed or by their designee. If the reader of this message is not the 
> intended recipient, you are on notice that any distribution of this message, 
> in any form, is strictly prohibited. If you have received this message in 
> error, please immediately notify the sender and delete or destroy any copy of 
> this message
>



-- 
Best regards, Ruslan.

Reply via email to