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>