[LON-CAPA-cvs] cvs: doc(version_2_11_X) /install/linux install.pl

raeburn raeburn at source.lon-capa.org
Mon Mar 15 21:04:11 EDT 2021


raeburn		Tue Mar 16 01:04:11 2021 EDT

  Modified files:              (Branch: version_2_11_X)
    /doc/install/linux	install.pl 
  Log:
  - For 2.11
    Backport 1.71
  
  
-------------- next part --------------
Index: doc/install/linux/install.pl
diff -u doc/install/linux/install.pl:1.45.2.11 doc/install/linux/install.pl:1.45.2.12
--- doc/install/linux/install.pl:1.45.2.11	Sat Mar 13 00:05:06 2021
+++ doc/install/linux/install.pl	Tue Mar 16 01:04:11 2021
@@ -76,7 +76,7 @@
           &mt('Stopping execution.')."\n";
     exit;
 } else {
-    print LOG '$Id: install.pl,v 1.45.2.11 2021/03/13 00:05:06 raeburn Exp $'."\n";
+    print LOG '$Id: install.pl,v 1.45.2.12 2021/03/16 01:04:11 raeburn Exp $'."\n";
 }
 
 #
@@ -458,7 +458,7 @@
     }
     my ($mysqlon,$mysqlsetup,$mysqlrestart,$dbh,$has_pass,$mysql_unix_socket,$has_lcdb,
         %recommended,$downloadstatus,$filetouse,$production,$testing,$apachefw,
-        $tostop,$uses_systemctl);
+        $tostop,$uses_systemctl,$mysql_has_wwwuser);
     my $wwwuid = &uid_of_www();
     my $wwwgid = getgrnam('www');
     if (($wwwuid eq '') || ($wwwgid eq '')) {
@@ -469,9 +469,8 @@
     }
     $mysqlon = &check_mysql_running($distro);
     if ($mysqlon) {
-        my $mysql_has_wwwuser = &check_mysql_wwwuser();
         ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser,$mysql_unix_socket) = 
-            &check_mysql_setup($instdir,$dsn,$distro,$mysql_has_wwwuser);
+            &check_mysql_setup($instdir,$dsn,$distro);
         if ($mysqlsetup eq 'needsrestart') {
             $mysqlrestart = '';
             if ($distro eq 'ubuntu') {
@@ -1155,8 +1154,8 @@
 }
 
 sub check_mysql_setup {
-    my ($instdir,$dsn,$distro,$mysql_has_wwwuser) = @_;
-    my ($mysqlsetup,$has_pass,$mysql_unix_socket);
+    my ($instdir,$dsn,$distro) = @_;
+    my ($mysqlsetup,$has_pass,$mysql_unix_socket,$mysql_has_wwwuser);
     my $dbh = DBI->connect($dsn,'root','',{'PrintError'=>0});
     my ($mysqlversion,$mysqlsubver,$mysqlname) = &get_mysql_version();
     if (($mysqlname =~ /^MariaDB/i) && ($mysqlversion >= 10.4)) {
@@ -1173,16 +1172,30 @@
             if ($mysql_unix_socket) {
                 print_and_log(&mt('MariaDB using unix_socket for root access from localhost.')."\n");
                 $mysqlsetup = 'rootok';
-                $mysql_unix_socket = 1;
-                unless ($mysql_has_wwwuser) {
-                    $mysql_has_wwwuser = &check_mysql_wwwuser();
-                }
+                $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
                 return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser,$mysql_unix_socket);
             }
         }
     }
     if ($dbh) {
-        $mysqlsetup = 'noroot'; 
+        $mysqlsetup = 'noroot';
+        if (($mysqlname !~ /^MariaDB/i) && ($mysqlversion >= 5.7)) {
+            my $sth = $dbh->prepare("SELECT plugin from mysql.user where User='root'");
+            $sth->execute();
+            while (my $priv = $sth->fetchrow_array) {
+                if ($priv =~ /auth_socket/) {
+                    $mysql_unix_socket = 1;
+                    last;
+                }
+            }
+            $sth->finish();
+            if ($mysql_unix_socket) {
+                print_and_log(&mt('MySQL using unix_socket for root access from localhost.')."\n");
+                $mysqlsetup = 'rootok';
+                $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
+                return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser,$mysql_unix_socket);
+            }
+        }     
     } elsif ($DBI::err =~ /1045/) {
         $has_pass = 1;
     } elsif ($distro =~ /^ubuntu(\d+)$/) {
@@ -1195,16 +1208,15 @@
                 }
                 close(PIPE);
             }
-            unless ($mysql_has_wwwuser) {
-                $mysql_has_wwwuser = &check_mysql_wwwuser();
-            }
             $dbh = DBI->connect($dsn,'root','',{'PrintError'=>0});
             if ($dbh) {
                 $mysqlsetup = 'noroot';
+                $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
             } elsif ($DBI::err =~ /1045/) {
                 $has_pass = 1;
             } else {
                 $mysqlsetup = 'needsrestart';
+                $mysql_has_wwwuser = &check_mysql_wwwuser(); 
                 return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser);
             }
         }
@@ -1216,6 +1228,7 @@
         if ($dbh) {
             $mysqlsetup = 'rootok';
             print_and_log(&mt('Password accepted.')."\n");
+            $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
         } else {
             $mysqlsetup = 'rootfail';
             print_and_log(&mt('Problem accessing MySQL.')."\n");
@@ -1227,27 +1240,35 @@
                 if ($dbh) {
                     $mysqlsetup = 'rootok';
                     print_and_log(&mt('Password accepted.')."\n");
+                    $mysql_has_wwwuser = &check_mysql_wwwuser($dbh);
                 } else {
                     if ($DBI::err =~ /1045/) {
                         print_and_log(&mt('Incorrect password.')."\n");
                     }
+                    $mysql_has_wwwuser = &check_mysql_wwwuser(); 
                 }
             }
         }
     } elsif ($mysqlsetup ne 'noroot') {
         print_and_log(&mt('Problem accessing MySQL.')."\n");
         $mysqlsetup = 'rootfail';
+        $mysql_has_wwwuser = &check_mysql_wwwuser(); 
     }
     return ($mysqlsetup,$has_pass,$dbh,$mysql_has_wwwuser);
 }
 
 sub check_mysql_wwwuser {
+    my ($dbh) = @_;
     my $mysql_wwwuser;
-    my $dbhn = DBI->connect("DBI:mysql:database=information_schema",'www','localhostkey',
-                            {PrintError => +0}) || return;
-    if ($dbhn) {
-        $mysql_wwwuser = 1;
-        $dbhn->disconnect;
+    if ($dbh) {
+        $mysql_wwwuser = $dbh->selectrow_array("SELECT COUNT(User) FROM mysql.user WHERE (User = 'www' AND Host ='localhost')");
+    } else {
+        my $dbhn = DBI->connect("DBI:mysql:database=information_schema",'www','localhostkey',
+                                {PrintError => +0}) || return;
+        if ($dbhn) {
+            $mysql_wwwuser = 1;
+            $dbhn->disconnect;
+        }
     }
     return $mysql_wwwuser;
 }
@@ -1830,32 +1851,73 @@
 }
 
 print "\n".&mt('Requested configuration complete.')."\n\n";
-my $apachename;
 if ($have_tarball && !$updateshown) {
     my ($lcdir) = ($sourcetarball =~ /^([\w.\-]+)\.tar.gz$/);
+    my ($apachename,$lc_uses_systemctl,$uses_sudo); 
+    if ($distro =~ /^(suse|sles|debian|ubuntu)([\d.]+)/) {
+        if (($1 eq 'suse') && ($2 < 10)) {
+            $apachename = 'apache';
+        } else {
+            $apachename = 'apache2';
+        }
+    } else {
+        $apachename = 'httpd';
+    }
+    if ($distro =~ /^oracle(\d+)$/) {
+        if ($1 > 6) {
+            $lc_uses_systemctl = 1;
+        }
+    } elsif ($distro =~ /^(?:rhes|centos)(\d+)$/) {
+        if ($1 > 7) {
+            $lc_uses_systemctl = 1;
+        }
+    } elsif ($distro =~ /^ubuntu(\d+)$/) {
+        if ($1 > 16) {
+            $lc_uses_systemctl = 1;
+        }
+        $uses_sudo = 1;
+    } elsif ($distro =~ /^sles(\d+)$/) {
+        if ($1 > 12) {
+            $lc_uses_systemctl = 1;
+        }
+    }
     if (!-e '/etc/loncapa-release') {
         print &mt('If you are now ready to install LON-CAPA, enter the following commands:')."\n\n";
     } else {
-        print &mt('If you are now ready to update LON-CAPA, enter the following commands:')."\n\n".
-                  "/etc/init.d/loncontrol stop\n";
-        if ($distro =~ /^(suse|sles|debian|ubuntu)([\d.]+)/) {
-            if (($1 eq 'suse') && ($2 < 10)) {
-                $apachename = 'apache';
-            } else {
-                $apachename = 'apache2';
-            }
-        } else {
-            $apachename = 'httpd';
+        my $lcstop = '/etc/init.d/loncontrol stop';
+        if ($lc_uses_systemctl) {
+            $lcstop = 'systemctl stop loncontrol';
+        }
+        my $apachestop = "/etc/init.d/$apachename stop";
+        if ($uses_systemctl) {
+            $apachestop = "systemctl stop $apachename";
+        }
+        if ($uses_sudo) {
+            $lcstop = 'sudo '.$lcstop;	 
+            $apachestop = 'sudo '.$apachestop;
         }
-        print "/etc/init.d/$apachename stop\n";
+        print &mt('If you are now ready to update LON-CAPA, enter the following commands:').
+              "\n\n$lcstop\n$apachestop\n";
     }
     print "cd /root\n".
           "tar zxf $sourcetarball\n".
           "cd $lcdir\n".
           "./UPDATE\n";
     if (-e '/etc/loncapa-release') {
-        print "/etc/init.d/loncontrol start\n";
-        print "/etc/init.d/$apachename start\n";
+        my $lcstart = '/etc/init.d/loncontrol start';     
+        if ($lc_uses_systemctl) {
+            $lcstart = '/home/httpd/perl/loncontrol start';
+        }
+        my $apachestart = "/etc/init.d/$apachename start";
+        if ($uses_systemctl) {
+            $apachestart = "systemctl start $apachename";
+        }
+        if ($uses_sudo) {
+            $lcstart = 'sudo '.$lcstart;
+            $apachestart = 'sudo '.$apachestart;
+        }
+        print "$lcstart\n";
+        print "$apachestart\n";
     }
 }
 exit;


More information about the LON-CAPA-cvs mailing list