Monthly Archives :

március 2021

Ubuntu 18.04 szerver frissítés 20.04 Focal Fossa verzióra

Ubuntu 18.04 szerver frissítés 20.04 Focal Fossa verzióra 1280 720 bacsoa

Az elmúlt két napom a a telepítésekről és frissítésekről szólt. Tegnap fel kellett tennem az új Macbook Air M1-emre egy Apache, PHP, MySQL kombót, ma pedig a régóta esedékes Ubuntu 20.04 frissítést csináltam meg a szerveremen. Ez a post utóbbiról szól, de talán leírom majd az M1 Silicon LAMP telepítést is, abban kicsit nagyobb kihívás volt.

A szerverem a Digital Ocean-nél van másfél éve, akkor Ubuntu 18.04-gyel jött, de már 2021 van, a Focal Fossa pedig tavaly jött ki és már itt volt az ideje a frissítésnek. Van ugyan egy részletes angol nyelvű leírás a Digital Ocean oldalán, de ha kizárólag azt követtem volna, akkor most bajban lennék, mert nekem például történt egy kis probléma telepítés során (lásd később).

1. Előkészületek

Három dolgot mentettem le:

  • webszerveren lévő fájlok
  • MySQL adatbázisok
  • /etc könyvtár

A MySQL adatbázisok dumpolásával kezdtem, erre egy 3 soros batch file (hívjuk mondjuk „backup-sql.sh”-nak) alkalmas a következő tartalomal („nano backup-sql.sh” parancs kiadásával szerkeszthetjük a fájlt, ami egyből létre is hozza. Használhatjuk a Midnight Commandert is, de előtte hozzuk létre „touch backup-sql.sh” paranccsal):

#!/bin/sh
for DB in $(mysql -e 'show databases' -s --skip-column-names); do
     mysqldump $DB > "$DB.sql";
done

Kell neki futtatási jog is, mert a Linuxban az új fájlok alapból nem kapnak ilyet:

chmod 500 backup-sql.sh

Futtatás után az aktuális könyvtárban szépen sorban minden adatbázisból készül egy SQL fájl. Azzal most nem akarok foglalkozni, hogy mi kell ahhoz, hogy a bejelentkezett usernél ne kérjen a MariaDB jelszót, de akit érdekel, itt erről egy cikk. Mivel most már van futtatási jogunk a fájlra, akkor egyszerűen lefuttatjuk:

./backup-sql.sh

Ha ez is kész, jöhet a /etc könyvtár. Ez azért hasznos, mert ha az Ubuntu 20.04 frissítés után a telepítő felülír valamit és utána nem fog működni (pl. postfix/levélküldés, SSH, openssl, bármi), akkor vissza tudjuk tenni a régi konfig fájlból, vagy legalább meg tudjuk nézni, hogy ami előtte működött, az most miért nem, tehát össze tudjuk hasonlítani a kettőt. Ezt a parancsot is a /var/www/html adjuk ki a terminálban (vagy onnan, ahonnan majd rsync-kelni fogjuk a fájlokat):

root@xact:/var/www/html $ tar -zcvf ./backup-etc.tar.gz /etc

Jöhet az rsync, a parancs MacOS alatt kb így néz ki (user@1.2.3.4 a szerverünk címe, a /var/www/html pedig az a könyvtár, ahol a lementendő fájlaink vannak, nyilván az előző backup-sql.sh nevű parancsot is ide érdemes tenni, és innen futtatni, hogy az SQL dumpok is ide kerüljenek):

rsync -avr --progress -L user@1.2.3.4:/var/www/html/ /Users/macusername/Documents/backup-directory

A -L kapcsoló azt jelenti, hogy az rsync követi a symlinkeket és azokat is át fogja másolni. Nekem az első partíción nem sok hely van, ezért a /mnt alatt van a weboldalak nagyrésze (ide mountoltam még egy volume-t). Az Apache konfig egységessége miatt át van symlinkelve a /var/www/ alá. Ha a -L kapcsolót kihagyjuk, akkor csak a fizikai fájlokat fogja átmásolni, tehát csak azokat, amik a /var/www/html alatt vannak.

Ez ellesz egy darabig, attól függően, hogy a webszerveren hány virtuálhost (weboldal) van és mekkora mennyiségű fájllal.

Ezzel megvan a mentés. Mielőtt elindítanánk a frissítést érdemes egy terminálon be SSH-zni a szerverre egy SUDO jogú userrel és átváltani root-ra, ha esetleg beüt a krach az installálás során, legyen egy plusz lábunk. Ha nem tesszük meg és lerohad az install, lehet, hogy nem fogunk tudni SUDO-zni, azaz elveszítjuk az irányítást a rendszer fölött. Tehát mielőtt do-release, előtte be SSH-zunk a szerverre egy Sudo joggal rendelkező userrel (ez fontos!):

ssh user@1.2.3.4

Majd átváltunk root userre:

sudo su

Én az installt a Digital Ocean beépített Java-s konzoljából indítottam el böngésző alól, de SSH-ból is csinálhatjuk (de akkor is indítsunk egy külön SSH sessiont az előbb leírt módon).

2. Installálás

Miután beléptem a konzolon először érdemes leállítani a lényeges futó szolgáltatásokat, ne egy élő rendszeren indítsunk operációs rendszer frissítést. Én az Apache-ot és a MySQL-t állítottam le, de ha nálad NGINX van PHP-FPM-mel, vagy bármi egyéb akkor érdemes lelőni azokat is:

sudo systemctl stop apache2

Majd a MySQL-t is:

sudo systemctl stop mysql

Még egy ellenőrzés, hogy biztos leállt:

sudo systemctl status apache2
sudo systemctl status mysql

Ha azt látjuk mindkettőnél, hogy Active: inactive, akkor kezdhetjük a frissítést ezzel a paranccsal:

sudo do-release-upgrade

Ezután jön a következő képernyő:

Itt nyilván nyomjuk ‘y’-t, ha ‘N’-t nyomunk (kis és nagybetű számít), akkor a telepítő kilép. Ezután valami hasonlót fogunk látni:

Itt arról tájékoztat, hogy az új Ubuntu 20.04 rendszer a mostanihoz képest 2 csomagot már nem támogat, 13 csomag el lesz távolítva, 208 csomagot fel fog rakni és 665 csomagot frissíteni fog. Rohadt vicces, hogy ha most visszamennénk 20 évet az időben, amikor még 56k modemmel interneteztünk (aki mondjuk a 80-as évek körül született, mint én is), akkor 19 óra alatt jönne le az 508MB-nyi telepítő adat 🙂 Én itt nyomtam egy ‘d’-t mert kíváncsi voltam a részletekre. Ha téged nem érdekel, nyomj ‘y’-t (fontos a kis és nagybetű!). Tehát a ‘d’-re kattintva ez fogadott:

A PHP 7.2 el lesz távolítva, ami nem is baj, mert más amúgy is 7.4-re akartam frissíteni (sőt már itt van a 8.0 is), meg pár Apache2 modul. Na és akkor itt van ez a kérdés, ami miatt érdemes be SSH-zni jól egy külön terminál sessionben:

Itt annyit közöl, hogy egy csomó szolgáltatás újraindul és ha megszakad valami, akkor nem fogsz tudni bejelentkezni (pl. SSH-val sem).

Ezután még jó sok mindent fogunk látni a képernyőn és sokszor, sok minden fog kérdezni az Ubuntu telepítőő. Főleg olyanokat, hogy a már meglévő konfig fájl eltér attól, amit installálni szeretnénk. Én a nagyrészét felülírtam, leginkább azokat, amiről tudtam hogy nem nyúltam hozzá. Amit viszont sokat állítgattam (pl. opendmarc), abból meghagytam a 18.04-es verziót. Nekem egészen eddig a kérdésig nem történt semmi probléma:

Itt nyomtam egy ‘D’-t, hogy mutassa a különbségeket. Ez amúgy az SSH konfig, ahol én pl. olyanokat állítottam be, hogy jelszóval ne lehessen be SSH-zni a szerverre, csak SSH kulccsal, stb. Viszont valamiért a ‘D’ megnyomása után fogta magát a rendszer és visszadobott ide:

Kicsit furcsa is volt, hogy a telepítés kellős közepén egy kérdés után visszakapom ezt a képernyőt. Mivel már csinálta egy ideje a telepítést még az is felmerült bennem, hogy végzett. Gondoltam megnézem az oprendszer verziót:

Úgy tűnik minden oké igaz? Sajnos nem, itt csak annyi történt, hogy az alapcsomag már befrissült, tehát a /etc/issue fájl tartalma lefrissült új oprendszer verziószámára, de azon kívül minden a régi maradt. Tehát megszakadt a telepítés. Ellenőriztem a PHP verziót, ami a 18.04-en még 7.2 volt, viszont a 20.04-n már 7.4-nek kellene lennie, és a gyanúm beigazolódott:

Gondoltam kiadom újra a do-release-upgrade parancsot, de nem segített:

Itt már látszik a gond a do-release-upgrade-re azt mondja a telepítő, hogy nincs fejlesztői változat, azaz a rendszer már a legfrissebb. Csakhogy a dist-upgrade -f (‘-f’, azaz force kapcsoló kell!) kiadva látszik, hogy a dpkg csomagkezelő frissítés közben leállt, tehát akkor adjuk ki ezt a parancsot:

sudo dpkg --configure -a

Ez már jó lett, elkezdte folytatni a frissítést a dpkg. Újra jött a kérdés:

Most ahelyett, hogy megnéztem volna a különbségeket (az előbb itt fagyott le a telepítő, plusz nem érdekelt, mert már elmentettem a teljes /etc könyvtárat) inkább felülírtam a régit a legújabb konfig fájllal. Ezután még jött egy csomó hasonló kérdés, majdnem mindenre (kivéve pl. opendmarc) Y-t nyomtam. Jött egy ilyen:

A dpkg lefutott, de az lxd-client nem tudta frissíteni. Akkor újra kiadtam ezt:

sudo apt dist-upgrade -f

Ezután újra elkezdett frissítgetni, köztük ezt a problémás LXD klienst is:

Fogalmam sincs mi volt ez, úgyhogy nyomtam egy ‘latest’-t (bár a telepítő a 4.0-t ajánlott). Folytatódott a frissítés, majd jött egy ilyen:

Amiről tudtam, hogy nem nyúltam hozzá a 18.04 konfigurálása után (ez volt az első Ubuntu verzióm), azt felülírtam az új verzióval (tehát ‘Y’-t nyomtam). Miután végzett a csomagok frissítésével, a grub-ot is frissíteni akarta:

Mivel az én szerveremen nincs más oprendszer, csak az Ubuntu, ezért itt a ‘package maintainer’s version’ lehetőséget választottam. Jött még néhány konfig fájl, például a Midnight Commanderé is:

Ezt véletlenül felülírtam, így a 20.04-en megint be kellett állítanom, hogy a backspace-re kattintva menjen vissza egy könyvtárat (mivel ez a beállítás az mc.keymap fájlban van tárolva, leírást lásd itt). Aztán jött az Opendkim konfig kérdése:

Na erre nyomtam például N-t nyomtam, mert elég sokat szórakoztam az email címeim authentikálásával, hiányzik a francnak, hogy újra be kelljen állítani. A vége felé még jött egy ilyen:

Itt Yes-t választottam, mert szeretném a jövőben saját kezűleg beállítani ezt. Néhány adabázisra vonatkozó kérdés, jelszó miegymás:

Ezután végzett a telepítés, amit egy rövid ‘done’ üzenettel adott tudtomra. Újraindítás után még nyomtam egy update-t és leszedtem a már nem használt csomagokat (ezt a do-release-upgrade amúgy megtenné helyettünk):

sudo apt autoremove

Ezután újraindítottam a szervert:

sudo init 6

Újraindítás után már a jól megszokott képernyő fogadott:

Újra leellenőriztem a php verziót:

Minden jó, ha vége jó. A telepítéshez köszönöm a segítséget Szécsényi Zoltán barátomnak!

Macbook Air M1-re váltás

Macbook Air M1-re váltás 2000 1500 bacsoa

Ez már a negyedik Macem. Az előző, egy 2017-es Touchbaros Macbook Pro egy rémálom volt. Egyrészt a billentyűzet miatt, amit kétszer is meg kellett csináltatnom – szerencsére gyári visszahívásban -, másrészt a touchbar miatt. Először jó ötletnek tűnt (de jó lesz majd Photoshopban, stb.), de a Macbookon eleve kevés a billentyű egy PC-hez képest, és akkor még a funkcióbillentyűket is elvették…borzalmas.

Tavaly jött az M1, amiről nem tudtam semmit, de a tesztek alapján meggyőző volt. Gyors és viszonylag olcsó. Mármint egy Apple termékhez képest 🙂 Volt még pár hónapja egy próbálkozásom, hogy egy Lenovo-ra tettem kizárólag Linuxot, hogy egyszerűbb legyen kipróbálni az új dolgokat (új Ubuntu, 8-as PHP kipróbálása, Redis vs. Memcached stb), de az nagyon nem jött be. Inkább a régi Macbook Pro-mra tettem egy Ubuntu külön partícióra, teljesen jól működik. A helyzet az, hogy a Macbook billentyűzet és főleg a trackpad egyszerűen tökéletes, ennél csak sokkal rosszabbakat próbáltam.

Vissza az M1-re. 2 hete használom és többségében elégedett vagyok.

Előnyök:

  • Gyors. Minden azonnal megnyílik és bőven elég a 8GB RAM. Legalábbis nekem, aki egy Atom vagy Sublime Text és Photoshop / Illustrator társaságában dolgozik nap, mint nap. Emellett nyitva van még kb 20 Chrome fül és 3-4 Firefox fül is. Plusz a szokásos Slack, Viber és Telegram folyamatosan. Egyáltalán nem érzem, hogy 16GB kellene, viszont az 512GB SSD az kell.
  • Billentyűzet. Végre visszakaptam a rendes gépelési élményt. Az Apple is rájött, hogy a pillangómechnikás fejlesztés egy zsákutca volt. Ezért visszatértek az jó öreg ollós mechnanizmushoz. Ezerszer jobb.
  • Trackpad. Ezen nincs mit magyarázni, a világ legjobb trackpadja. Ez az egyik oka annak, hogy notebookon dolgozom és nem asztalin, hogy a billentyűzet és a trackpad közel van egymáshoz, emiatt nem kell az egérhez jobbra nyúlni és emiatt felemelni a kezemet a billentyűzetről. Sokkal hatékonyabb így dolgozni. Én egyfolytában egy text editorban írom a kódot, közben nézem és tesztelem a weboldal működését, amihez meg egér kell. Megőrülnék, ha ezt egy külön egérrel kellene megtennem.
  • Kedvező ár. Hardveraprón áfa nélkül vettem ezt a gépet, vadonatújan, fóliával, magyar billentyűzettel. Ha az Apple-s árát nézed, akkor is teljesen jó. 200e Ft alatt egyáltalán nem kapsz normális gépet, ami gyors és megbízható. Maximum asztali verzióban.
  • Akkuidő. Nem mintha számítana, mert ezzel eddig sem volt gond (meg amúgy is rá van dugva folyamatosan a töltőre), de azért az elég jó, hogy esténként 2-3 óra netezés, youtube videó nézés után 4%-ot merül a gép. Ezzel tényleg megvan a 18 óra munkaidő.

Hátrányok:

  • Kompatibilitás. Tény, hogy pár program egyáltalán, vagy nem tökéletesen fut a Big Sur operációs rendszeren. Az Atom text editor, amin dolgozom konkrétan összefagy állandóan. Ezért most visszatértem a jó öreg Sublime Texthez, azzal tökéletes. Az SSHFS beállítása kb 3 órámba telt, mert a Big Surban egy csomó mindent megváltoztattak, emiatt nem volt egyszerű beállítani. Újraindítás után engedélyezni kellett a Kernel szintű kiegészítők telepítését, stb.
  • Brew csomagkezelő nem működik rendesen. A Brew az egyes Linux disztrók csomagkezelője (pl. apt, yum, pacman) helyett van. Sok minden nincs alapból a MacOS alatt (pl. Midnight Commander), amire a brew kínál megoldást. Jelenleg elég béta állapotban van. Annyira, hogy felraktam, aztán eltűnt 🙂 Majd újra felraktam, és épp most nem működik. Egyelőre várok vele.


Fotók