Strah od nadogradnji

linux tuxSvake dvije godine prosječnog sistem-inženjera koji svoj poslužitelj (ili poslužitelje) drži na operativnom sustavu Debian poćinje progoniti neobičan osjećaj. Isprva se pita "jesam li ugasio plin kod kuće?" i "jesam li zaključao vrata auta?" Ali zapravo ga ne muče ta pitanja. "Jesam li poslao onu prezentaciju?", "Jesam, još prošli tjedan". Dobro je. No, neugodni osjećaj ne prestaje. U tom trenutku shvati, pa ga oblije hladan znoj: "Vrijeme je za nadogradnju poslužitelja!"

"Pa kud baš sad?! Treba odraditi dan Fakulteta, moram pripremati prezentacije, upisi stižu... što si oni misle, sve ionako radi jako dobro, uredno radim apt-get upgrade.... zapravo, ček da provjerim...":

  apache2 apache2-mpm-prefork apache2-suexec apache2-utils apache2.2-bin apache2.2-common bind9 bind9-doc bind9-host bind9utils curl dnsutils eject
ghostscript imagemagick imagemagick-common libapache2-mod-php5 libbind9-80 libcroco3 libcurl3 libcurl3-gnutls libdns88 libfreetype6 libgd2-xpm libgs9
libgs9-common libisc84 libisccc80 libisccfg82 libjasper1 libjbig2dec0 liblcms2-2 liblwres80 libmagickcore5 libmagickcore5-extra libmagickwand5
libmysqlclient18 libnl-3-200 libnl-genl-3-200 libnss-winbind libnss3 libnss3-1d libpam-winbind librtmp0 libssl1.0.0 libtiff4 libwbclient0 libx11-6
libx11-data libxpm4 linux-image-3.2.0-4-686-pae linux-libc-dev login monit munin munin-common munin-doc munin-node munin-plugins-core munin-plugins-extra
mysql-client mysql-client-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5 openssl passwd php-pear php5-cli php5-common php5-curl
php5-gd php5-ldap php5-mysql samba samba-common samba-common-bin smbclient tcpdump tnef tzdata unzip vim vim-common vim-runtime wget winbind
88 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/85.8 MB of archives.
After this operation, 683 kB disk space will be freed.
Do you want to continue [Y/n]?

"Eto, samo 88 paketa koje treba nadograditi. Obično čekam dulje vrijeme za slučaj da netko na listu sistemaca javi kako postoji problem s novim paketima. Zašto bih ja prvi imao problem?".

Ovo je stvarni primjer sa pre-jessie poslužitelja uzet u trenutku pisanja teksta.

Na Portalu je još 2012. objavljen članak "Pregaziti konfiguraciju ili ne?", u kojem smo htjeli pokazati u čemu je zapravo problem  pri nadogradnji Debiana. U osnovi, nadogradnja se radi na razini izvršnih datoteka i pripadajućih biblioteka, ali se postojeća konfiguracija zadržava.

Debian niti drugi Linuxi ne nadograđuju konfiguraciju u stilu Windows operativnih sustava. Sve što ćete dobiti je pitanje: želite li zadržati staru konfiguraciju ili staviti novu?

Pa, što onda odgovoriti?

a) Ostaviti staru konfiguraciju? Ovo znači da će vaše postavke ostati (ovo uključuje i promjene koje su napravili *-cn paketi, koji se računaju kao da ste ih vi napravili). No ovo može značiti i da servis neće raditi.

b) Staviti novu konfiguraciju? Time "gubite" svoje postavke (ne gubite, samo je konfiguracijska datoteka preimenovana u .dpkg-old - pogledajte članak), ali će servis gotovo sigurno proraditi - samo sa defaultnim vrijednostima. To nije poželjno, jer nema koristi od weba na kojem piše "It works!".

Zašto ostavljanje stare konfiguracije ne bi radilo, zar se format toliko promijenio? U većini slučajeva, stara konfiguracija bi trebala raditi (dobra vijest za enteraše - to su ljudi "koji samo lupaju enter"). Ali, programeri koji su softver napisali ("upstream") nemaju izravnu vezu s Debianom, nemaju obvezu pridržavati se Debianovih pravila i mogu isporučivati svoj softver kako njima odgovara. To znači da mogu izbaciti određenu opciju, direktivu ili varijablu, pe program može prestati raditi kada naiđe na nju u konfiguraciji. Može, ipak, samo ispisati upozorenje, upiisati upozorenje samo u logovima, ili jednostavno ignorirati ovu opciju. Ne može se znati unaprijed kako će neki program postupati.

"Zašto tu konverziju konfiguracije to vi (paketaši, CARNet) ne napravite umjesto nas?" Pa, to se i radi, ali je moguće obaviti samo u određenoj mjeri. Za pravu konverziju treba napisati parser, koji će pročitati konfiguraciju, pronaći razlike te ispisati konfiguracijsku datoteku koja je prilagođena trenutnoj inačici softvera. I to se mora obaviti za svaku nadogradnju, što praktični znači program raditi iznova. No, takvih programa nema, što dovoljno govori o složenosti zadatka.

Softver otvorenog koda je možda moćan, ali traži ulaganje u vlastito znanje.

"Ali, ja nemam vremena za sve to, uz PC-je, printere i projektore". Da, znamo, zato su tu paketi, da ne morate sami konfigurirati od početka. CARNetovi paketi konfiguriraju Debian s adresama naših servera, naših usluga i tako dalje. Dakle, ako instalirate ntp-cn, ne morate znati adrese NTP servera u CARNetu.

"Pa, kako onda postupiti"?

Evo nekih smjernica:

1. PRIPREMITE SE UNAPRIJED

- Napravite full backup dan ranije (bez obzira na uslugu sys.backup)

- U konfiguracijskim datotekama, kada ih mijenjate, ostavite svoj tag, datum i što ste radili, npr:

# BY SISTEMAC, 2017-05-10
# Dodana nova domena

2. KORISTITE OPCIJU "D" kako bi vidjeli razlike u konfiguracijskim datotekama

- Ovo će pomoći pri odluci trebate li jednostavno pregaziti datoteke ili ostaviti stare

- Ukoliko vidite da ste nešto mijenjali (ili *-cn paket), konfiguracijska je datoteka kandidat da ostane

- Neke konfiguracijske datoteke možete bez problema zgaziti, npr /etc/logrotate.d/apache2:

wheezy:

/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}

jessie:

/var/log/apache2/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
if /etc/init.d/apache2 status > /dev/null ; then \
/etc/init.d/apache2 reload > /dev/null; \
fi;
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}

Vidimo da su dopisane samo dodatne provjere i da se može staviti nova datoteka. Naravno, ukoliko ste vi nešto mijenjali, morate te postavke vratiti. Slično je situacija za datoteke /etc/apache2/apache2.conf i /etc/apache2/ports.conf.

3. UPOZNAJTE SVOJ POSLUŽITELJ

Ukoliko već niste, zapisujte što ste mijenjali, odnosno što trebate podesiti: "Apache VHOST je na portu 8001", "Dovecot treba imati uključen SSL/TLS u 10-ssl.conf", "korisnici trebaju imati kvotu 500 MB" itd.

Oblik zapisa je takav da vam pomogne konfigurirati prazan Debianov poslužitelj po vašim potrebama. Ukoliko opcija i teksta kojeg treba ukucati ima dosta, možete taj zapis spremati u datoteku.Ukoliko je zapis u elektroničkom obliku, možete si dodatno pomoći s konkretnom konfiguracijom, jer je moguće raditi copy-paste nekih teško pamtljivih opcija:

# SSL protocols to use
# POODLE
ssl_protocols = !SSLv2 !SSLv3
# SSL ciphers to use
# LogJam
ssl_cipher_list = ALL:!aNULL:!eNULL:!ADH!LOW:!MEDIUM:!EXP:!SSLv2:HIGH

I na kraju...

Mnogi sistemci vuku konfiguracijske datoteke godinama, kroz nekoliko inačica Debiana. Na poslužitelju se nalaze nepotrebni paketi, zaostale datoteke, simbolički linkovi ili jednostavno smeće koje ostaje nakon što pukne instalacija paketa. Drugim riječima: ponekad nadogradnja zapravo nije pravi izbor.

Razmotrite mogućnost instaliranja čistog nove distribucije Debiana, pa zatim prionite ručnom konfiguriranju servisa. Na ovaj način ćete prilikom narednih dogradnji imati manje upita, manje nepotrebnih stvari na sustavu i manje downtimea.

Nadogradnja poslužitelja nije trivijalna operacija, pa se zato pripremite što bolje - kako bi cijela operacija potrajala što kraće, a time i vi i vaši korisnici bili zadovoljniji.

 

Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)