version 1.74, 2021/03/26 17:59:52
|
version 1.78, 2021/07/28 13:37:10
|
Line 585 sub check_required {
|
Line 585 sub check_required {
|
$nochgstd,$nochgint) = &chkapachessl($distro,$instdir,$hostname,$hostip); |
$nochgstd,$nochgint) = &chkapachessl($distro,$instdir,$hostname,$hostip); |
$recommended{'stopsrvcs'} = &chksrvcs($distro,$tostop); |
$recommended{'stopsrvcs'} = &chksrvcs($distro,$tostop); |
($recommended{'download'},$downloadstatus,$filetouse,$production,$testing) |
($recommended{'download'},$downloadstatus,$filetouse,$production,$testing) |
= &need_download(); |
= &need_download($distro,$instdir); |
return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow, |
return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow, |
$mysqlrestart,\%recommended,$dbh,$has_pass,$mysql_unix_socket, |
$mysqlrestart,\%recommended,$dbh,$has_pass,$mysql_unix_socket, |
$has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw, |
$has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw, |
Line 616 sub check_mysql_running {
|
Line 616 sub check_mysql_running {
|
if ($1 >= 19) { |
if ($1 >= 19) { |
$mysqldaemon ='mariadb'; |
$mysqldaemon ='mariadb'; |
} |
} |
|
if ($1 >= 34) { |
|
$process = 'mariadb'; |
|
} |
} elsif ($distro =~ /^(?:centos|rhes|scientific|oracle)(\d+)/) { |
} elsif ($distro =~ /^(?:centos|rhes|scientific|oracle)(\d+)/) { |
if ($1 >= 7) { |
if ($1 >= 7) { |
$mysqldaemon ='mariadb'; |
$mysqldaemon ='mariadb'; |
Line 886 sub uses_firewalld {
|
Line 889 sub uses_firewalld {
|
} |
} |
if ($checkfirewalld) { |
if ($checkfirewalld) { |
my ($loaded,$active); |
my ($loaded,$active); |
if (open(PIPE,"systemctl status firewalld |")) { |
if (open(PIPE,"systemctl status firewalld 2>/dev/null |")) { |
while (<PIPE>) { |
while (<PIPE>) { |
chomp(); |
chomp(); |
if (/^\s*Loaded:\s+(\w+)/) { |
if (/^\s*Loaded:\s+(\w+)/) { |
$loaded = $1; |
$loaded = $1; |
} |
} |
if (/^\s*Active\s+(\w+)/) { |
if (/^\s*Active:\s+(\w+)/) { |
$active = $1; |
$active = $1; |
} |
} |
} |
} |
Line 1440 sub chksrvcs {
|
Line 1443 sub chksrvcs {
|
} |
} |
|
|
sub need_download { |
sub need_download { |
|
my ($distro,$instdir) = @_; |
my $needs_download = 1; |
my $needs_download = 1; |
my ($production,$testing,$stdsizes) = &download_versionslist(); |
my ($production,$testing,$stdsizes) = &download_versionslist(); |
my ($rootdir,$localcurrent,$localtesting,%tarball,%localsize,%bymodtime, |
my ($localcurrent,$localtesting,%tarball,%localsize,%bymodtime, |
%bysize,$filetouse,$downloadstatus); |
%bysize,$filetouse,$downloadstatus); |
$rootdir = '/root'; |
if (opendir(my $dir,$instdir)) { |
if (opendir(my $dir,"$rootdir")) { |
|
my (@lcdownloads,$version); |
my (@lcdownloads,$version); |
foreach my $file (readdir($dir)) { |
foreach my $file (readdir($dir)) { |
if ($file =~ /^loncapa\-([\w\-.]+)\.tar\.gz$/) { |
if ($file =~ /^loncapa\-([\w\-.]+)\.tar\.gz$/) { |
Line 1455 sub need_download {
|
Line 1458 sub need_download {
|
} |
} |
if (ref($stdsizes) eq 'HASH') { |
if (ref($stdsizes) eq 'HASH') { |
if ($version eq 'current') { |
if ($version eq 'current') { |
my @stats = stat("$rootdir/$file"); |
my @stats = stat("$instdir/$file"); |
$localcurrent = $stats[7]; |
$localcurrent = $stats[7]; |
if ($localcurrent == $stdsizes->{$production}) { |
if ($localcurrent == $stdsizes->{$production}) { |
$needs_download = 0; |
$needs_download = 0; |
$filetouse = $file; |
$filetouse = $file; |
} |
} |
} elsif ($version eq 'testing') { |
} elsif ($version eq 'testing') { |
my @stats = stat("$rootdir/$file"); |
my @stats = stat("$instdir/$file"); |
$localtesting = $stats[7]; |
$localtesting = $stats[7]; |
if ($localtesting == $stdsizes->{$testing}) { |
if ($localtesting == $stdsizes->{$testing}) { |
$needs_download = 0; |
$needs_download = 0; |
Line 1476 sub need_download {
|
Line 1479 sub need_download {
|
if ($needs_download) { |
if ($needs_download) { |
if (@lcdownloads > 0) { |
if (@lcdownloads > 0) { |
foreach my $version (@lcdownloads) { |
foreach my $version (@lcdownloads) { |
my @stats = stat("$rootdir/$tarball{$version}"); |
my @stats = stat("$instdir/$tarball{$version}"); |
my $mtime = $stats[9]; |
my $mtime = $stats[9]; |
$localsize{$version} = $stats[7]; |
$localsize{$version} = $stats[7]; |
if ($mtime) { |
if ($mtime) { |
Line 1509 sub need_download {
|
Line 1512 sub need_download {
|
my $newest = $sorted[0]; |
my $newest = $sorted[0]; |
if (ref($bymodtime{$newest}) eq 'ARRAY') { |
if (ref($bymodtime{$newest}) eq 'ARRAY') { |
$downloadstatus = |
$downloadstatus = |
"Latest LON-CAPA source download in $rootdir is: ". |
"Latest LON-CAPA source download in $instdir is: ". |
join(',',@{$bymodtime{$newest}})." (downloaded ". |
join(',',@{$bymodtime{$newest}})." (downloaded ". |
localtime($newest).")\n"; |
localtime($newest).")\n"; |
} |
} |
} else { |
} else { |
$downloadstatus = |
$downloadstatus = |
"The $rootdir directory already contains the latest LON-CAPA version:". |
"The $instdir directory already contains the latest LON-CAPA version:". |
"\n".$filetouse."\n"."which can be used for installation.\n"; |
"\n".$filetouse."\n"."which can be used for installation.\n"; |
} |
} |
} else { |
} else { |
$downloadstatus = "The $rootdir directory does not appear to contain any downloaded LON-CAPA source code files which can be used for installation.\n"; |
$downloadstatus = "The $instdir directory does not appear to contain any downloaded LON-CAPA source code files which can be used for installation.\n"; |
} |
} |
} |
} |
} else { |
} else { |
$downloadstatus = "Could not open $rootdir directory to look for existing downloads of LON-CAPA source code.\n"; |
$downloadstatus = "Could not open $instdir directory to look for existing downloads of LON-CAPA source code.\n"; |
} |
} |
return ($needs_download,$downloadstatus,$filetouse,$production,$testing); |
return ($needs_download,$downloadstatus,$filetouse,$production,$testing); |
} |
} |
Line 2003 my $lctarball = 'loncapa-current.tar.gz'
|
Line 2006 my $lctarball = 'loncapa-current.tar.gz'
|
my $sourcetarball = $lctarball; |
my $sourcetarball = $lctarball; |
if ($callsub{'download'}) { |
if ($callsub{'download'}) { |
my ($production,$testing,$sizes) = &download_versionslist(); |
my ($production,$testing,$sizes) = &download_versionslist(); |
|
my $homedir = '/root'; |
|
if ($distro =~ /^ubuntu/) { |
|
if ($instdir ne $homedir) { |
|
($homedir) = ($instdir =~ m{^(.*)/[^/]+$}); |
|
} |
|
} |
if ($production && $testing) { |
if ($production && $testing) { |
if ($production ne $testing) { |
if ($production ne $testing) { |
print &mt('Two recent LON-CAPA releases are available: ')."\n". |
print &mt('Two recent LON-CAPA releases are available: ')."\n". |
&mt('1.').' '.&mt('A production release - version: [_1].',$production)."\n". |
&mt('1.').' '.&mt('A production release - version: [_1].',$production)."\n". |
&mt('2.').' '.&mt('A testing release - version: [_1].',$testing)."\n\n". |
&mt('2.').' '.&mt('A testing release - version: [_1].',$testing)."\n\n". |
&mt('Download the production release? ~[Y/n~]'); |
&mt("After download, the tar.gz file will be extracted into $homedir")."\n\n". |
|
&mt("Download the production release into $instdir? ~[Y/n~]"); |
if (&get_user_selection(1)) { |
if (&get_user_selection(1)) { |
$sourcetarball = 'loncapa-'.$production.'.tar.gz'; |
$sourcetarball = 'loncapa-'.$production.'.tar.gz'; |
|
print "$sourcetarball will be downloaded into $instdir\n"; |
} else { |
} else { |
print "\n".&mt('Download the testing release? ~[Y/n~]'); |
print "\n".&mt('Download the testing release? ~[Y/n~]'); |
if (&get_user_selection(1)) { |
if (&get_user_selection(1)) { |
$sourcetarball = 'loncapa-'.$testing.'.tar.gz'; |
$sourcetarball = 'loncapa-'.$testing.'.tar.gz'; |
|
print "$sourcetarball will be downloaded into $instdir\n"; |
|
} else { |
|
$callsub{'download'} = 0; |
} |
} |
} |
} |
} |
} |
} elsif ($production) { |
} elsif ($production) { |
print &mt('The most recent LON-CAPA release is version: [_1].',$production)."\n". |
print &mt('The most recent LON-CAPA release is version: [_1].',$production)."\n". |
&mt('Download the production release? ~[Y/n~]'); |
&mt("After download, the tar.gz file will be extracted into $homedir")."\n\n". |
|
&mt("Download the production release into $instdir? ~[Y/n~]"); |
if (&get_user_selection(1)) { |
if (&get_user_selection(1)) { |
$sourcetarball = 'loncapa-'.$production.'.tar.gz'; |
$sourcetarball = 'loncapa-'.$production.'.tar.gz'; |
|
print "$sourcetarball will be downloaded into $instdir\n"; |
|
} else { |
|
$callsub{'download'} = 0; |
} |
} |
} |
} |
} elsif ($filetouse ne '') { |
} elsif ($filetouse ne '') { |
Line 2170 if ($callsub{'firewall'}) {
|
Line 2188 if ($callsub{'firewall'}) {
|
if (keys(%added) > 0) { |
if (keys(%added) > 0) { |
print &mt('Firewall configured to allow access for: [_1].', |
print &mt('Firewall configured to allow access for: [_1].', |
join(', ',sort(keys(%added))))."\n"; |
join(', ',sort(keys(%added))))."\n"; |
system('firewall-cmd --reload'); |
system('firewall-cmd --reload'); |
} |
} |
if ($current{'http'} || $current{'https'}) { |
if ($current{'http'} || $current{'https'}) { |
print &mt('Firewall already configured to allow access for:[_1].', |
print &mt('Firewall already configured to allow access for:[_1].', |
Line 2238 if ($callsub{'download'}) {
|
Line 2256 if ($callsub{'download'}) {
|
print &mt('LON-CAPA is available for download from: [_1]', |
print &mt('LON-CAPA is available for download from: [_1]', |
'http://install.loncapa.org/')."\n"; |
'http://install.loncapa.org/')."\n"; |
if (!-e '/etc/loncapa-release') { |
if (!-e '/etc/loncapa-release') { |
&print_and_log(&mt('LON-CAPA is not yet installed on your system.'). |
&print_and_log(&mt('LON-CAPA is not yet installed on your system.')."\n\n"; |
"\n\n". |
unless ($filetouse) { |
&mt('You may retrieve the source for LON-CAPA by executing:')."\n". |
&print_and_log(&mt('You may retrieve the source for LON-CAPA by executing:')."\n". |
"wget http://install.loncapa.org/versions/$lctarball\n"); |
"wget http://install.loncapa.org/versions/$lctarball\n"); |
|
} |
} else { |
} else { |
my $currentversion; |
my $currentversion; |
if (open(my $fh,"</etc/loncapa-release")) { |
if (open(my $fh,"</etc/loncapa-release")) { |
Line 2270 if ($callsub{'download'}) {
|
Line 2289 if ($callsub{'download'}) {
|
print "\n".&mt('Requested configuration complete.')."\n\n"; |
print "\n".&mt('Requested configuration complete.')."\n\n"; |
if ($have_tarball && !$updateshown) { |
if ($have_tarball && !$updateshown) { |
my ($lcdir) = ($sourcetarball =~ /^([\w.\-]+)\.tar.gz$/); |
my ($lcdir) = ($sourcetarball =~ /^([\w.\-]+)\.tar.gz$/); |
|
if ($lcdir eq 'loncapa-current') { |
|
$lcdir = "loncapa-X.Y.Z (X.Y.Z should correspond to a version number like '2.11.3')"; |
|
} |
my ($apachename,$lc_uses_systemctl,$uses_sudo); |
my ($apachename,$lc_uses_systemctl,$uses_sudo); |
if ($distro =~ /^(suse|sles|debian|ubuntu)([\d.]+)/) { |
if ($distro =~ /^(suse|sles|debian|ubuntu)([\d.]+)/) { |
if (($1 eq 'suse') && ($2 < 10)) { |
if (($1 eq 'suse') && ($2 < 10)) { |
Line 2314 if ($have_tarball && !$updateshown) {
|
Line 2336 if ($have_tarball && !$updateshown) {
|
$apachestop = 'sudo '.$apachestop; |
$apachestop = 'sudo '.$apachestop; |
} |
} |
print &mt('If you are now ready to update LON-CAPA, enter the following commands:'). |
print &mt('If you are now ready to update LON-CAPA, enter the following commands:'). |
"\n\n$lcstop\n$apachestop\n"; |
"\n\n$lcstop\n$apachestop\n"; |
} |
} |
print "cd /root\n". |
my ($extract,$update); |
"tar zxf $sourcetarball\n". |
my $homedir = '/root'; |
"cd $lcdir\n". |
if ($uses_sudo) { |
"./UPDATE\n"; |
$extract = 'sudo '; |
|
$update = 'sudo '; |
|
if ($instdir ne $homedir) { |
|
($homedir) = ($instdir =~ m{^(.*)/[^/]+$}); |
|
} |
|
} |
|
$extract .= "tar zxf $sourcetarball --directory $homedir"; |
|
$update .= './UPDATE'; |
|
print "$extract\n". |
|
"cd $homedir/$lcdir\n". |
|
"$update\n"; |
if (-e '/etc/loncapa-release') { |
if (-e '/etc/loncapa-release') { |
my $lcstart = '/etc/init.d/loncontrol start'; |
my $lcstart = '/etc/init.d/loncontrol start'; |
if ($lc_uses_systemctl) { |
if ($lc_uses_systemctl) { |
Line 2577 sub setup_mysql_permissions {
|
Line 2609 sub setup_mysql_permissions {
|
if ($usescreate) { |
if ($usescreate) { |
@mysql_commands = ("CREATE USER 'www'\@'localhost' IDENTIFIED BY 'localhostkey'"); |
@mysql_commands = ("CREATE USER 'www'\@'localhost' IDENTIFIED BY 'localhostkey'"); |
} elsif ($usesauth) { |
} elsif ($usesauth) { |
@mysql_commands = ("INSERT user (Host, User, ssl_cipher, x509_issuer, x509_subject, authentication_string) VALUES('localhost','www','','','','')"); |
@mysql_commands = ("INSERT user (Host, User, ssl_cipher, x509_issuer, x509_subject, authentication_string) VALUES('localhost','www','','','','')", |
|
"FLUSH PRIVILEGES"); |
if ($is_mariadb) { |
if ($is_mariadb) { |
push(@mysql_commands,"ALTER USER 'www'\@'localhost' IDENTIFIED BY 'localhostkey'"); |
push(@mysql_commands,"ALTER USER 'www'\@'localhost' IDENTIFIED BY 'localhostkey'"); |
} else { |
} else { |
Line 3632 sub download_loncapa {
|
Line 3665 sub download_loncapa {
|
print_and_log(" |
print_and_log(" |
------------------------------------------------------------------------ |
------------------------------------------------------------------------ |
|
|
".&mt('You seem to have a version of loncapa-current.tar.gz in [_1]',$instdir)."\n". |
".&mt('You seem to have a version of [_1] in [_2]',$lctarball,$instdir)."\n". |
&mt('This copy will be used and a new version will NOT be downloaded.')."\n". |
&mt('This copy will be used and a new version will NOT be downloaded.')."\n". |
&mt('If you wish, you may download a new version by executing:')." |
&mt('If you wish, you may download a new version by executing:')." |
|
|
wget http://install.loncapa.org/versions/loncapa-current.tar.gz |
wget http://install.loncapa.org/versions/$lctarball |
|
|
------------------------------------------------------------------------ |
------------------------------------------------------------------------ |
"); |
"); |
} |
} |
|
|
## |
## |
## untar loncapa.tar.gz |
## untar loncapa-X.Y.Z.tar.gz |
## |
## |
if ($have_tarball) { |
if ($have_tarball) { |
|
my $homedir = '/root'; |
|
my ($targetdir,$chdircmd,$updatecmd); |
|
if (($distro =~ /^ubuntu/) && ($instdir ne $homedir)) { |
|
($homedir) = ($instdir =~ m{^(.*)/[^/]+$}); |
|
$updatecmd = 'sudo ./UPDATE'; |
|
} else { |
|
$updatecmd = './UPDATE'; |
|
} |
print_and_log(&mt('Extracting LON-CAPA source files')."\n"); |
print_and_log(&mt('Extracting LON-CAPA source files')."\n"); |
writelog(`cd ~root; tar zxf $instdir/$lctarball`); |
if (-e $homedir) { |
|
writelog(`tar zxf $instdir/$lctarball --directory $homedir`); |
|
$targetdir = $homedir; |
|
} else { |
|
writelog(`tar zxf $instdir/$lctarball`); |
|
$targetdir = $instdir; |
|
} |
|
if ($lctarball =~ /^loncapa\-(\d+\.\d+\.\d+(?:|[^.]+))\.tar\.gz$/) { |
|
$chdircmd = "cd $targetdir/loncapa-".$1; |
|
} else { |
|
$chdircmd = "cd $targetdir/loncapa-X.Y.Z (X.Y.Z should correspond to a version number like '2.11.3')"; |
|
} |
print_and_log("\n"); |
print_and_log("\n"); |
print &mt('LON-CAPA source files extracted.')."\n". |
print &mt('LON-CAPA source files extracted.')."\n". |
&mt('It remains for you to execute the following commands:')." |
&mt('It remains for you to execute the following commands:'). |
|
"\n$chdircmd\n$updatecmd\n". |
cd /root/loncapa-X.Y.Z (X.Y.Z should correspond to a version number like '2.11.3') |
&mt('If you have any trouble, please see [_1] and [_2]', |
./UPDATE |
'http://install.loncapa.org/','http://help.loncapa.org/')."\n"; |
|
|
".&mt('If you have any trouble, please see [_1] and [_2]', |
|
'http://install.loncapa.org/','http://help.loncapa.org/')."\n"; |
|
$updateshown = 1; |
$updateshown = 1; |
} |
} |
return ($have_tarball,$updateshown); |
return ($have_tarball,$updateshown); |