Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

M-am lovit de curand de o problema destul de deranjanta si anume updatarea mai multor instalari WordPress. Updatarea unui WordPress nu e o treaba complicata si se poate face in patru pasi simpli:

  • se descarca ultima versiune;
  • se dezarhiveaza;
  • se uploadeaza/suprascriu fisierele de pe server;
  • se acceseaza fisierul de updatare a bazei de date – /wp-admin/upgrade.php.

Upgradarea nu este complicata, dar daca avem un numar mare de bloguri (ex. 50) uploadarea fiecarei instalari ar presupune uploadarea fisierelor de mai multe ori. Cu un mic script in Perl primii trei pasi pot fi facuti automat. Ultimul pas trebuie executat manual pentru fiecare instalare in parte, dar avand in vedere ca partea costisitoare este uploadarea fisierelor putem considera rularea urmatorului script ca fiind un avantaj mare:

#!/usr/bin/perl
 
use Archive::Tar;
use WWW::Mechanize;
use strict;
 
# Descarc ultima versiune
print "Descarc ultima versiune de WordPress...\n";
my $url  = 'http://wordpress.org/latest.tar.gz';
my $mech = WWW::Mechanize->new();
   $mech->get( $url );
   $mech->save_content('latest.tar.gz');
 
my @lista;
my $tar = Archive::Tar->new;
 
# Dezarhivez latest.tar.gz
print "Dezarhivez WordPress...\n";
$tar->read('latest.tar.gz');
$tar->extract();
 
# Preiau lista de instalari
print "Incarc lista pentru instalare...\n";
open(LISTA,"lista.txt");
push(@lista,$_) while( <lista> );
close(LISTA);
chomp( @lista );
 
# Suprascriu fisierele pentru fiecare instalare
print "Suprascriu fisierele:\n";
foreach( @lista ) {
    my $path =  $_;
       $path =~ /^\/home\/([^\/]+)\//;
    my $user = $1;
    print "... suprascriu $path\n";
    system("cp -r wordpress/* $path");
    system("find $path -user root -exec chown $user '{}' \\;");
}
 
# Sterg fisierele de care nu mai am nevoie
system("rm -rf wordpress");
system("rm latest.tar.gz");
</lista>

Scriptul de mai sus il salvam cu numele upgrade.pl si ii dam drept de executie (chmod 755 upgrade.pl).

Pentru ca scriptul sa functioneze trebuie sa cream un fisier lista.txt care va contine pe cate o linie calea catre fiecare instalare WordPress care trebuie updatata. Ex:

/home/site1/public_html/
/home/site2/public_html/blog/
/home/site3/public_html/stiri/

Dupa ce am creat fisierele upgrade.pl si lista.txt rulam ca root comanda ./upgrade.pl:

[root@hosting ~/wordpress]# ./upgrade.pl 
Descarc ultima versiune de WordPress...
Dezarhivez WordPress...
Incarc lista pentru instalare...
Suprascriu fisierele:
... suprascriu /home/site1/public_html/
... suprascriu /home/site2/public_html/blog/
... suprascriu /home/site3/public_html/stiri/

Mai departe trebuie doar sa accesam din browser fisierul /wp-admin/upgrade.php pentru fiecare instalare in parte.

PHP

10 Responses so far.

  1. Marius Balaban says:

    uite asta prinde foarte bine.

  2. Eugen says:

    Daca e vorba de 50+ bloguri nu ar mai simplu un wpmu cu parcare domeniu? Zic si eu, nu dau cu parul! ๐Ÿ™‚

  3. admin says:

    Depinde de context. In cazul de fata era vorba de un client care oferea servicii de web hosting unor clienti de-ai lui. Cele 47 de conturi erau ale unor persoane diferite, deci nu prea mergea faza cu WordPress MU. De era vorba de un singur cont de hosting cu mai multe bloguri era intr-adevar lejer cu MU ๐Ÿ˜€

  4. George Jipa says:

    E buna ideea, dar automatic update.. cu un click, se poate face si din Dashboard.

  5. Cornel M says:

    Imi prinde bine postul tau.Tocmai mi-am instalat de curand, pe curat, WP 2.9.

  6. Sergiu says:

    Ma bucur ca ti-am fost de ajutor ๐Ÿ™‚

  7. Jocuri says:

    Ms moolt admin. Mi-a fost si mie de ajutor ๐Ÿ™‚

  8. Boxe says:

    Interesant trucul. Poate ar merge integrat intr-un plugin pe care sa il postezi pe site-ul WordPress. Oricum, eu sunt destul de ingrijorat cand vine vorda de facut update unui blog.

    De fiecare data imi este teama ca ceva nu o sa mearga bine si o sa crape tot. Am mai multe site-uri la care nu am facut niciodata update-ul din cauza asta. E vreun pericol sa se intample ceva aiurea ?

  9. Sergiu Tot says:

    In orice CMS se descopera vulnerabilitati si buguri. Daca nu face update, e posibil ca siteul sa fie hackuit la un moment dat. Mai bine fa un backup si apoi updateaza. Daca ceva merge prost (desi sunt mici sansele) dai un restore si ai rezolvat problema.

  10. Ciprian says:

    BuddyPress. Am spus tot. Intr-adevar asa se faceau upgrade-urile inainte la furnizorii de hosted blogs, dar acum nu cred ca mai e cazul.

    Oricum, exemplul tau a fost notat.