Heb je een VPS met CentOS 7 bij TransIP: zo snel mogelijk updaten!

Ingediend door Dirk Hornstra op 20-jan-2025 18:17

Ik ben IT-er, heb het altijd druk/dingen te doen. Ik heb 2 VPS-en, 1 voor "test-omgevingen" en 1 voor "productie-zaken". Zo nu en dan moet je updates doorvoeren, dat doe je dan en dat gaat bijna altijd goed. Soms wat problemen met packages, maar dat los je een keer op en dan plaats je hier een post zodat je het later terug kunt vinden.

Op 27 november 2024 kreeg ik een mail van TransIP. Het Linux besturingssysteem CentOS 7 is End Of Life. CentOS stopt, het wordt CentOS Stream. Op deze pagina van TransIP kun je lezen wat dat betekent. Op die VPS-en gebruik ik Plesk (je hebt ook cPanel). WebPros hoeft dus geen ondersteuning meer te leveren, maar ze doen dat toch tot 1 januari 2026 via hun Extended Lifecycle Support-programma. Een mooi initiatief, zodat gebruikers even wat langer de tijd hebben om over te gaan naar een andere Linux-variant. Alleen, daar hangt (natuurlijk) ook een kostenplaatje aan vast. In mijn "doelen voor 2025" had ik al becijferd dat al mijn kosten qua hosting aan de hoge kant zijn en als het nu nog hoger wordt, dan zal ik toch actie moeten ondernemen. En als jij je geld voor andere zaken nodig hebt, is het ook voor jou verstandig om je systeem bij te werken.

Hierbij nog even het overzicht van de tarieven zoals ik die 27 november 2024 ontvangen heb:

Licentie Reguliere prijs Prijs incl. ELS-toeslag
Plesk Web Host Edition € 22,50 € 34,00
Plesk Web Pro Edition € 12,99 € 20,00
cPanel Admin (5 gebruikers) € 30,50 € 38,00
cPanel Pro (30 gebruikers) € 41,99 € 53,00
cPanel Plus (50 gebruikers) € 60,50 € 75,00
cPanel Premier (100 gebruikers) € 76,99 € 96,00
cPanel Premier (150 gebruikers) € 99,99 € 122,00
cPanel Premier (200 gebruikers) € 122,99 € 150,00

 

Systemen updaten vind ik spannend. Ik heb het namelijk een keer voor elkaar gekregen om met een bepaalde update de mySQL-database kapot te maken, waar Plesk dus ook op draait... Gelukkig kon ik dat via een back-up herstellen.

Daarom deel ik hier de stappen die ik gevolgd heb, mocht daar iets misgaan, dan kun jij dat in ieder geval voorkomen :)

 

Spoiler: ondanks het volgen van de stappen toch tegen problemen aangelopen, back-ups teruggezet en al gauw een avond hieraan kwijt. Bah!
 

Stap 1: haal alle data lokaal binnen zodat je back-ups hebt van de data en de databases.

Eigenlijk had ik dit al veel eerder moeten doen. Een externe USB-schijf van 1TB is in vergelijking met vroeger "spotgoedkoop", dus via FTP je data binnen halen en daarop zetten, het is nu nog even een "handmatige actie", maar ik kan vast wel een soort script o.i.d. maken, waardoor ik dat proces later automatisch kan uitvoeren. Schijf aansluiten, script starten en zelf met andere dingen aan de slag.

Stap 2: back-ups van je e-mails.

Mogelijk zou dit ook een goed punt zijn, alleen heb ik op mijn test-server maar 2 lege mailboxen. Dus hier hoef ik in ieder geval niets mee te doen.

Stap 3: systeem updaten / upgraden.

Het echte werk! In de e-mail wordt verwezen naar deze pagina om je server te upgraden. Ik ga voor AlmaLinux. Mocht de pagina van TransIP om welke reden dan ook een keer niet beschikbaar zijn, dan heb je hier alsnog een kopie van de instructies (14 januari 2025), mocht na deze datum op de originele pagina aanpassingen gedaan worden, dan zie je die hier niet terug!

Check bij TransIP in je configuratiebestand bij de back-ups van je VPS of er een (recente) back-up is. Als de boel niet meer werkt, kun je een back-up terugzetten en het daarna opnieuw proberen.

 

QuickLink: het lukt bij mij niet met de onderstaande instructies (en eigen verwijder-acties), dus ik heb een deel van de acties uitgevoerd en op basis van een Github-repo de update uitgevoerd. Dat werkt wel. Klik hier om meteen door te gaan naar dat onderdeel op deze pagina.

 

Ik benoem ook even waar ik tegen aan loop. Ik zou bij stap 6 een melding over "INHIBITORS" moeten krijgen, maar die krijg ik niet. Wel lijkt er iets fout te gaan met een bestand o.i.d.
Als ik een cat /var/log/leapp/leapp-preupgrade.log doe kan ik zien welke melding het was. Er is een probleem met het bestand /etc/named-user-options.conf: "no such file or directory"

Een Google-zoekopdracht levert mij direct de juiste hit op: deze Github-pagina.
Onderaan staat de oplossing, Plesk heeft dat bestand op een andere plek staan. De auteur, ericmulder1980 geeft ook nog even de credits aan de link waar hij de informatie gevonden heeft. Door een "symlink" toe te voegen fix je dat:
 



# check eerst even of het bestand inderdaad bestaat!

cat /var/named/chroot/etc/named-user-options.conf

# ik zie content, dus bij mij staat ie inderdaad daar!

ln -s /var/named/chroot/etc/named-user-options.conf    /etc/named-user-options.conf
 

Daarna loopt het proces wel door. Wel krijg ik 2 Inhibitors:

  • leapp detected loaded kernel drivers which have been removed in RHEL 8. Update cannot proceed. - komt door floppy en pata_acpi, ook dat staat hieronder beschreven.
  • "missing required answers in the answer file" - dat komt overeen met wat hieronder staat en kan ik dus fixen.

 

Hierna heb ik geen inhibitors meer. Bij de eerste keer skip ik de epl - pakketten. Mocht de boel vastlopen, dan kan ik vanuit het configuratiescherm altijd nog een back-up van de VPS terugzetten.

Als ik leapp upgrade doe krijg ik uiteindelijk een foutmelding in leapp-report.txt: DNF execution failed with non zero exit code. Bij een zoektocht kom ik op deze Github-pagina.
In  die pagina zie ik wat over python en vim. Ik verwijder het python-pakket en voer daarna weer leapp upgrade uit. Daarna gaat het weer fout. Ik weet voldoende, ik ga alle epl - pakketten verwijderen. In mijn geval:

python36-lxml.x86_64, awstats.noarch, epel-release-noarch, libbsd.x86_64, libc-client.x86_64, libidn2.x86_64, libmd.x86_64, libopendkim.x86_64, libsodium.x86_64, luajit.x86_64, openssl11-libs.x86_64, perl-Data-Validate-IP.noarch, perl-Geo-IP.x86_64 perl-JSON-XS.x86_64, perl-Net-IP.noarch, php-imap.x86_64, pigz.x86_64, s-nail.x86_64, webalizer.x86_64, zstd.x86_64

Ik begin 'm wel een beetje te knijpen, want ik zie bij het verwijderen ook "Plesk" voorbij komen, straks is mijn Plesk-installatie niet meer werkend. We zullen zien... Vervolgens gaat het nog niet goed. Het lijkt toch aan Python te liggen als ik in het tekstbestand kijk.
Eerst doe ik een remove van alle Python, maar dan gaat ie YUM ook verwijderen en die is gelukkig beveiligd (want daar doe je alle installaties en de-installaties mee). Vervolgens gooi ik python2 eraf. Dan werkt leapp niet meer, want die installeert python2. Dus eerst leapp weer installeren.
Daarna alle python3 verwijderen, dat lijkt het te fixen. Installatie loopt goed door en daarna kan ik de reboot doen. Ik heb wel het idee dat ik nu wat teveel verwijderd heb.

Command: yum list installed | grep python

Een behoorlijke lijst.
yum erase python3-*

Na de succesvolle installatie werkt Plesk niet meer en ook mijn "normale sites" werken niet meer. Ik denk dat ik teveel verwijderd heb. Onder deze instructies ga ik verder met "hoe ik het aangepakt heb".

 

Stap 1

Verbind met je VPS via de VPS console in je controlepaneel of via SSH.


 

Stap 2 - optioneel bij private networks

Als je VPS is opgenomen in een private network is daar een netwerkadapter voor ingesteld. Het bijbehorende configuratiebestand voorkomt dat je de upgrade naar AlmaLinux kunt uitvoeren.

Controleer eerst de naam van je private network adapter:

ls /etc/sysconfig/network-scripts/

De private network adapter heeft een naam zoals ifcfg-eth0:1 of ifcfg-eth1. Hernoem de bijbehorende netwerkadapter (pas de bestandsnaam van de private network adapter aan indien nodig):

mv /etc/sysconfig/network-scripts/ifcfg-eth0:1 /etc/sysconfig/backup

Heb je meerdere configuratiebestanden? Dan kun je ieder backup-bestand een unieke naam geven (door de naam backup te vervangen) of een directory aanmaken genaamd backup en daar de bestanden in plaatsen, bijvoorbeeld:

mkdir /etc/sysconfig/backup
mv /etc/sysconfig/network-scripts/ifcfg-eth0:1 /etc/sysconfig/backup/
mv /etc/sysconfig/network-scripts/ifcfg-eth1:1 /etc/sysconfig/backup/

 

Stap 3

De publieke mirror van CentOS (mirrorlist.centos.org ) is niet langer beschikbaar. Update daarom eerst de .repo-bestanden en verwijs naar de CentOS Vault:

sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo

De CentOS Vault bevat een momentopname van de repositories die via mirrorlist.centos.org werden aangeboden voor de end-of-life status bereikt werd.


 

Stap 4

Het is belangrijk om te zorgen dat al je software up-to-date is en je VPS te herstarten om eventuele configuratiewijzigingen door te voeren. Update en herstart dan ook nu eerst je VPS.

yum -y update
reboot

 

Stap 5

Installeer vervolgens de elevate-release- en leapp-packages en de benodigde migratie data. Vervang afhankelijk van je keuze in besturingssysteem hier leapp-data-almalinux door een van de volgende opties:

  • leapp-data-almalinux 
  • leapp-data-centos 
  • leapp-data-eurolinux 
  • leapp-data-oraclelinux 
  • leapp-data-rocky
yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
yum -y install leapp-upgrade leapp-data-almalinux

 

Stap 6

Voer nu de preupgrade-controle uit.

leapp preupgrade

Je krijgt de eerste keer dat je die uitvoert altijd een melding aan het eind dat de upgrade niet uitgevoerd kan worden omdat er enkele 'inhibitors' gevonden worden. Je herkent dit aan de melding:

=====================================================
                   UPGRADE INHIBITED
=====================================================

Het vinden van 'inhibitors' op dit punt is normaal en nodig om bijvoorbeeld een answer file te genereren (zie de volgende stap) en inzage te krijgen in eventuele kernel mods die verwijderd moeten worden.


 

Stap 7

Er zijn enkele 'inhibitors' waardoor het upgrade proces nog niet uitgevoerd kunnen worden. De eerste is de pam_pkcs11 module die niet beschikbaar is in RHEL-8. Voor dit issue is er een answer file gegenereerd (/var/log/leapp/answerfile) waarin gevraagd wordt of pam_pkcs11 verwijderd mag worden.
Kun je checken met een cat /var/log/leapp/answerfile

Geef toestemming om pam_pcks11 te verwijderen door de answer file aan te passen, of via het volgende commando:

leapp answer --section remove_pam_pkcs11_module_check.confirm=True

 

Stap 8

Als onderdeel van het upgrade-proces is SSH root-toegang nodig. Niet zozeer omdat er via SSH als root ingelogd gaat worden, maar omdat anders het upgrade proces de SSH-configuratie aanpast naar enkele standaard waardes waarmee inloggen via SSH met een wachtwoord niet langer mogelijk is.

Geef toestemming voor SSH root-toegang via het volgende commando:

sed -i -e "s/^PermitRootLogin no/PermitRootLogin yes/" /etc/ssh/sshd_config

 

Stap 9

In een aantal test-installaties kwamen wij nog als laatste 'inhibitor' enkele unsupported kernel modules tegen. Dit gaat om de modules floppy en pata_acpi. Indien je hier ook een melding over ziet verwijder je beide met de commando's:

modprobe -r floppy
modprobe -r pata_acpi

 

Stap 10

Controleer voor de zekerheid of er geen andere inhibitors zichtbaar zijn in het bestand /var/log/leapp/leapp-report.txt.

nano /var/log/leapp/leapp-report.txt

Issues in /var/log/leapp/leapp-report.txt die als high worden weergegeven zonder de toevoeging (inhibitor) mag je negeren. Mocht je wel nog inhibitors zien, volg dan de instructie in /var/log/leapp/answerfile.


 

Stap 11

Voer nogmaals het leapp preupgrade commando uit:

leapp preupgrade

De preupgrade zal nu geen inhibitors meer vinden. Aan het eind van de preupgrade controle herken je dat het proces geslaagd is wanneer je o.a. de volgende output ziet:

============================================================
                               REPORT
============================================================
A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt
============================================================
                           END OF REPORT
============================================================

EPEL-packages zoals openssl kunnen ervoor zorgen dat het upgrade proces vast loopt, ook al geeft Leapp aan dat ze in orde zijn. Controleer daarom voor stap 12 welke EPEL-packages je geïnstalleerd hebt en overweeg om die eventueel te verwijderen voor de upgrade en na de upgrade te herinstalleren. Je controleert welke EPEL-packages je gebruikt met het commando:

 yum list installed | grep epel

Je kunt packages eventueel verwijderen met het commando:

yum erase packagenaam

 

Stap 12

Voer nu daadwerkelijk de upgrade uit met het commando:

leapp upgrade

Krijg je een foutmelding over te weinig geheugen? Probeer dan de volgende commando's:

export LEAPP_OVL_SIZE=4096
leapp upgrade --preserve-env 

 

Stap 13

Herstart na afloop je VPS. Het 'elevate-upgrade'-proces wordt nu uitgevoerd om CentOS 7 te upgraden naar AlmaLinux 8. Dit zal de nodige tijd in beslag nemen (30-60 min). Als je tot nu toe SSH gebruikte, is het handig om voor deze stap even de console in het TransIP-controlepaneel erbij te pakken om de voortgang in de gaten te houden.

reboot

 

Stap 14

Wanneer het proces klaar is herken je dit aan een melding die er als volgt uitziet:

leapp upgrade complete

Je inlogscherm is niet zichtbaar. Druk op 'Enter' om deze te voorschijn te toveren. Je ziet dan een inlogprompt terug zoals in het screenshot hierboven. Log in als root-gebruiker.


 

Stap 15

Schakel de toestemming om als root-gebruiker in te mogen loggen via SSH weer uit en herstart je SSH-server:

systemctl restart sshd

  

Stap 16 - optioneel bij private networks

Als je gebruik maakt van een private network, hernoem dan nu het netwerkconfiguratiebestand en herstart je interface:

mv /etc/sysconfig/backup /etc/sysconfig/network-scripts/ifcfg-eth0:1
ifdown eth0 && ifup eth0

 

Stap 17
 

Gefelicteerd! Je CentOS 7 installatie is nu volledig omgezet naar een nieuwer besturingssysteem. Controleer dat de upgrade correct is uitgevoerd met het volgende commando:

cat /etc/os-release
        

 

Stap 18 - DirectAdmin

Gebruikte je DirectAdmin icm CentOS 7? Rebuild dan door CustomBuild beheerde software opnieuw, anders is het mogelijk dat sommige software niet werkt. Dit doe je eenvoudig met twee commando's:

cd /usr/local/directadmin/custombuild
./build all d

 

Met de bovenstaande stappen lukt het niet. Ik kreeg geen Plesk meer, de websites werkten niet meer. Ik heb de back-up teruggezet en heb een deel van de commando's overgenomen en uitgevoerd wat bij de Plesk installatie op deze Github-locatie staat. Met deze actie heb ik wél een werkende update naar AlmaLinux 8.10 kunnen uitvoeren!

 


 

yum -y update
reboot

Pas de sites aan: eerste check van centos2alma is op PHP versie: je moet dus geen sites met een PHP versie < 8 hebben draaien!

sed -i -e "s/^PermitRootLogin no/PermitRootLogin yes/" /etc/ssh/sshd_config
# bovenstaande was schijnbaar toch niet aangepast. Daarom maar even handmatig een sudo vi /etc/ssh/sshd_config aanpassing uitgevoerd.

modprobe -r floppy
modprobe -r pata_acpi

# yum erase python3-*
# NIET GEDAAN! dit verwijdert Plesk (onderdelen) en is ook nodig om de centos2alma uit te voeren

ln -s /var/named/chroot/etc/named-user-options.conf    /etc/named-user-options.conf

# op basis van https://github.com/plesk/centos2alma

wget https://github.com/plesk/centos2alma/releases/download/v1.4.5/centos2alma-1.4.5.zip
unzip centos2alma-1.4.5.zip
chmod 755 centos2alma

screen -S centos2alma
./centos2alma &

# monitoren:
./centos2alma --status
./centos2alma --monitor
... live monitor session ...

# connectie verloren?
screen -r centos2alma

Die update duurt wel een half uur, dus ik kan tussendoor even naar een uitzending van "De slimste mens" kijken. Als ik weer bij mijn computer kom, staat het inlogscherm er al voor. Inloggen lukt. Plesk werkt weer, de sites ook. Alleen heb ik in mijn overzicht van updates nog 3 updates staan. Die allemaal bedoeld zijn voor CentOS.  Ik heb eerder wat issues gehad met Plesk en daar een kort artikel aan gewijd. Daar staat ook de oplossing: plesk sbin pum --update en daarna in de web-interface even opnieuw de boel vernieuwen.