Annotation of loncom/build/system_dependencies/sqltest.pl, revision 1.3

1.1       harris41    1: #!/usr/bin/perl
                      2: #
                      3: # The LearningOnline Network with CAPA
                      4: #
                      5: # Tests the MySQL layer of the metadata database.
                      6: #
                      7: # YEAR=2001
                      8: # 9/25,9/30 Scott Harrison
                      9: #
                     10: 
                     11: ###############################################################################
                     12: ##                                                                           ##
                     13: ## ORGANIZATION OF THIS PERL CGI SCRIPT                                      ##
                     14: ##                                                                           ##
                     15: ## 1. Status of this code                                                    ##
                     16: ## 2. Purpose and description of program                                     ##
                     17: ## 3. Modules used by this script                                            ##
                     18: ## 4. Print MIME Content-type and other initialization                       ##
                     19: ## 5. Make sure database can be accessed and that this is a library server   ##
                     20: ##                                                                           ##
                     21: ###############################################################################
                     22: 
                     23: # --------------------------------------------------------- Status of this code
                     24: #
                     25: # 1=horrible 2=poor 3=fair 4=good 5=excellent
                     26: # Organization 5
                     27: # Functionality 4
                     28: # Has it been tested? 3
                     29: #
                     30: 
                     31: # ------------------------------------------ Purpose and description of program
                     32: #
                     33: # This program tests the connection to the MySQL database.
                     34: 
                     35: # ------------------------------------------------- Modules used by this script
                     36: use strict;
                     37: use DBI;
                     38: 
                     39: # ---------------------------- Print MIME Content-type and other initialization
                     40: $|=1;
1.2       harris41   41: print 'Probing for SQL metadata database'."\n\n";
1.1       harris41   42: 
                     43: # --- Make sure that database can be accessed and that this is a library server
                     44: # library server test
                     45: my %perlvar;
                     46: open (CONFIG,"/etc/httpd/conf/access.conf") || 
                     47:     (print "Can't read access.conf\n" && exit);
                     48: while (my $configline=<CONFIG>) {
                     49:     if ($configline =~ /PerlSetVar/) {
                     50: 	my ($dummy,$varname,$varvalue)=split(/\s+/,$configline);
                     51:         chomp($varvalue);
                     52:         $perlvar{$varname}=$varvalue;
                     53:     }
                     54: }
                     55: close(CONFIG);
                     56: unless ($perlvar{'lonRole'} eq 'library') {
                     57:     print "SQL testing can only be run on a library server. Skipping test..\n";
                     58:     exit 0;
                     59: }
                     60: # database test
                     61: my $dbh;
                     62: {
                     63:     unless (
                     64: 	    $dbh = DBI->connect("DBI:mysql:loncapa","www",
                     65: 				$perlvar{'lonSqlAccess'},
                     66: 				{ RaiseError =>0,PrintError=>0})
                     67: 	    ) { 
                     68: 	print "Cannot connect to database!\n";
1.3     ! harris41   69: 	my $checkDBImodule=`perl pmvers DBI 2>/dev/null`;
        !            70: 	my $checkMYSQLmodule=`perl pmvers Mysql 2>/dev/null`;
        !            71: 	my $checkprocess=`/etc/rc.d/init.d/mysqld status`;
        !            72: 	if (!$checkDBImodule) {
        !            73: 	    print "**** ERROR **** SYSTEM IS MISSING THE DBI PERL ".
        !            74: 		"MODULE (DBI.pm)\n";
        !            75: 	}
        !            76: 	elsif (!$checkMYSQLmodule) {
        !            77: 	    print "**** ERROR **** SYSTEM IS MISSING THE MYSQL PERL ".
        !            78: 		"MODULE (Mysql.pm)\n";
        !            79: 	}
        !            80: 	elsif (!-e '/etc/rc.d/init.d/mysqld') {
        !            81: 	    print "**** ERROR **** IT APPEARS THAT THE MYSQL SERVER HAS NOT ".
        !            82: 		"BEEN INSTALLED\n";
        !            83: 	}
        !            84: 	elsif ($checkprocess=~/is stopped/) {
        !            85: 	    print "**** ERROR **** IT APPEARS THAT THE MYSQL SERVER IS NOT ".
        !            86: 		"RUNNING\n";
        !            87: 	    print(<<END);
        !            88: To fix temporarily, run the command:
        !            89:    /etc/rc.d/init.d/mysqld start
        !            90: 
        !            91: You may also want to check and see that mysqld is started on boot time.
        !            92: 
        !            93:    /sbin/chkconfig --list mysqld
        !            94: 
        !            95: This is bad output:
        !            96: mysqld         0:off  1:off  2:off  3:off  4:off  5:off  6:off
        !            97: 
        !            98: This is good output:
        !            99: mysqld         0:off  1:off  2:off  3:on   4:on   5:on   6:off
        !           100: 
        !           101: To configure mysqld to launch correctly upon system startup, type the command:
        !           102:    /sbin/chkconfig --level 345 mysqld on
        !           103: END
        !           104: 	}
        !           105: 	else {
        !           106: 	    print "**** ERROR **** IT APPEARS THAT WWW\@LOCALHOST AND/OR ".
        !           107: 		"PASSWORD ARE NOT CORRECTLY ENABLED\n";
        !           108: 	    print(<<END);
        !           109: To diagnose, try logging in from the command line with
        !           110:        mysql -u www -p mysql
        !           111: and use the lonSqlAccess password
        !           112: listed in loncapa.conf (PerlSetVar lonSqlAccess ....).
        !           113: If this does not work, you may need to REMOVE the www\@localhost MySQL user.
        !           114: mysql -u root -p mysql
        !           115: mysql> delete from user where user='www'
        !           116: And then, you will need to repeat the MySQL configuration steps described at:
        !           117:        http://install.lon-capa.org/.
        !           118: 
        !           119: **** NOTE **** ANOTHER possibility is that you are not running
        !           120: a compatible set of DBI, Mysql perl modules and MySQL server software.
        !           121: END
        !           122: 	}
1.1       harris41  123: 	exit 1;
                    124:     }
                    125: }
                    126: %perlvar=(); # undefine it
1.2       harris41  127: 
                    128: print "SQL metadata database is found and is accessible\n";
1.1       harris41  129: 
                    130: # --------------------------------------------------- Close database connection
                    131: $dbh->disconnect();

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>