Home

 

Linux::FAQ en Oplossingen

In deze sectie aantekeningen over uitgevoerde projecten.

Naar index

Extra harde schijf toevoegen

  1. Monteer extra harde schijf, start PC en verifieer herkenning in de BIOS
  2. Start ClearOS systeem en controleer Linux herkenning via PuTTY:
    # dmesg (opstartlog)
  3. Maak partitie op extra schijf (in dit voorbeeld de derde HDD: 'sdc'). Zie ook Linux::Bestandssystemen FDISK
    # fdisk /dev/sdc
    kies optie : n (nieuw)
    kies  : primair  
    kies  : 1 (voor sdc1)
    specificeer start en eindblok of selecteer geboden defaults
    kies optie : w (write/opslaan)
  4. Formatteer partitie
    # mkfs -t ext3 /dev/sdc1
  5. Maak een directory aan in de root (in voorbeeld 'vault' genoemd) met beperkte rechten voor usergroep 'backup' en geen enkele voor 'iedereen'
    # mkdir /vault
    # chmod 750 /vault
    # chown root:backup /vault
  6. Voeg een instructie toe aan '/etc/fstab' voor het koppelen van '/vault' aan sdc1:
    /dev/sdc1 /vault ext3 defaults 1 2
    Zie ook fstab wiki
  7. Voer de fstab mount uit:
    # mount -a
  8. In het voorbeeld is het de bedoeling dat samba user 'backup' de door root in '/vault' geplaatste backups kan lezen en kopieren. Dit kan vrij eenvoudig geregeld worden door een symbolic link te plaatsen in de samba share '/home/backup'. Zie ook sectie Samba: Samba Network File Server
    # cd /home/backup
    # ln -s /vault

Naar index

Verhuizen van bijvoorbeeld /HOME naar eigen partitie of andere HDD

  1. Zie sectie Extra harde schijf toevoegen items 1 t/m 4 voor het aanmaken van een partitie (in dit voorbeeld 'sdc2')
  2. CD naar root, maak directory '/newhome' en koppel deze aan 'sdc2':
    # cd /
    # mkdir /mnt/newhome
    # mount -t ext3 /dev/sdc2 /mnt/newhome
  3. Kopieer de inhoud van '/home' directory naar '/mnt/newhome' op de nieuwe partitie
    Omdat de '/home' directory hardlinks, softlinks, bestanden en geneste directories kan bevatten zal een gewone copy 'cp' de taak misschien niet compleet uitvoeren. Het is beter het commando 'cpio' te gebruiken.
    Zie hiervoor ook: http://www.gnu.org/software/cpio/manual/cpio.pdf
    # cd /home/
    # find . -depth -print0 | cpio --null --sparse -pvd /mnt/newhome
    # cd /

    Zie kader 'cpio' voor uitleg van gebruikte opties
  4. Verifieer dat alles correct gecopieerd is.
  5. Ontkoppel de nieuwe partitie 'sdc2':
    # umount /mnt/newhome
  6. Ontkoppel /home. Omdat deze aktief is moet deze 'losgewerkt' worden van het systeem. Dit wordt gedaan met optie -l (lazy)
    # umount -l /home
  7. Hernoem de losgemaakte /home naar '/oldhome' en maak een nieuwe /home aan
    # mv /home /oldhome
    # mkdir /home
  8. Nu kan de nieuwe /home gekoppeld worden aan 'sdc2'
    # mount /dev/sdc2 /home
  9. Maak deze mount automatisch door de volgende regel toe te voegen aan /etc/fstab:
    /dev/sdc2 /home ext3 defaults 1 2
    In fstab is vaak sprake van 'LABEL', zie voor meer informatie hierover:
    http://wiki.sabayon.org/index.php?title=HOWTO:_UUID_and_Volumes
  10. Voer fstab uit:
    # mount -a
  11. Reboot linux en check dat alles werkt.
  12. Verwijder '/oldhome' en '/mnt/newhome'

Naar index

CPIO (item 3) # find . -depth -print0 | cpio --null --sparse -pvd /mnt/newhome
find . : Zoek bestanden in in de huidige directory hierarchie
-depth  : Verwerk inhoud van elke directory vóór de directory zelf
-print0 : Print elke complete bestandsnaam naar de standaard uitvoer gevolgd door een nul (inplaats van het standaard 'newline' teken)
| cpio  : Piping van uitvoer naar commando cpio. cpio kopieert de directory tree te beginnen met de huidige directory
--null : Zie -print0 hierboven: Deze twee opties werken samen tussen find en cpio zelfs als bestandsnamen speciale tekens bevatten
--sparse : Schrijf bestanden met grote blokken met nullen als sparse bestanden
-pvd : (p) pass-through, geef door naar /mnt/newhome, (d) creëer directories als nodig en (v) verbose, toon uitvoer op scherm

Naar index

/HOME van aparte partitie terugzetten naar systeempartitie 'sda1'

Het terugzetten van '/home' wordt als voorbeeld gebruikt. Kan uitgevoerd worden met elk koppelpunt dat tot nu toe een eigen partitie heeft.

  1. Maak een directory 'newhome' in de root:
    # mkdir /newhome
    Zorg dat op sda1 nog voldoende ruimte is voor het datavolume van '/home'
  2. Kopieer de inhoud van '/home' naar '/newhome':
    # find . -depth -print0 | cpio --null --sparse -pvd /newhome
    Zie voor uitleg kader CPIO
  3. Verwijder regel uit '/etc/fstab' betreffende koppelpunt van '/home'
  4. Ontkoppel '/home'. Omdat deze aktief is moet deze 'losgewerkt' worden van het systeem. Dit wordt gedaan met optie -l (lazy)
    # umount -l /home
  5. Maak plaats voor nieuwe home:
    # rmdir /home
  6. Plaats nieuwe /home:
    # mv /newhome /home
  7. Run aangepaste fstab:
    # mount -a
  8. De oorspronkelijke aparte partitie van '/home' (in voorbeeld vorige sectie was dat 'sdc2') kan nu verwijderd of leeggemaakt/geformatteerd worden.

Naar index

Wijzig grootte van Partitie and Filesysteem met behoud van data

Het verkleinen en vergroten van een partitie en het bijbehorende bestandssysteem met daarin data is mogelijk met e2fsck. resize2fs en fdisk.
Zie optioneel # man resize2fs

Belangrijk:

Voor navolgende voorbeelden hebben we de drive /dev/sdc van de testserver gebruikt.
Deze harddisk van 500GB heeft 1 partitie sdc1 met een bestandsysteem van 459G. Hiervan is 169G in gebruik met data.

[root@testserver ~]# df -h
Bestandssysteem       Grtte Gebr Besch Geb% Aangekoppeld op
/dev/sda1             9,5G  442M  8,6G   5% /
/dev/sda2              28G  1,3G   25G   5% /usr
/dev/sda3              92G  1,8G   86G   2% /var
/dev/sdb1             459G  169G  268G  39% /home
/dev/sdc1             459G  169G  267G  39% /vault
tmpfs                 2,0G     0  2,0G   0% /dev/shm

Er zijn geen vrije cilinders/sectoren aan het einde van de schijf en vergroten is dus niet mogelijk. Daarom laten we eerst het verkleinen als voorbeeld zien.

Naar index

Verklein partitie met behoud van data

We gaan de partitie met het bestandssysteem /dev/sdc1 verkleinen van 459G naar +/- 300G. Er blijft dan voldoende vrije ruimte voor de data.

1. Unmount het bestandssysteem en verifiëer

[root@testserver ~]# umount /dev/sdc1
[root@testserver ~]# df -h
Bestandssysteem       Grtte Gebr Besch Geb% Aangekoppeld op
/dev/sda1             9,5G  442M  8,6G   5% /
/dev/sda2              28G  1,3G   25G   5% /usr
/dev/sda3              92G  1,8G   86G   2% /var
/dev/sdb1             459G  169G  268G  39% /home
tmpfs                 2,0G     0  2,0G   0% /dev/shm

2. Run e2fsck op /dev/sdc1
Het eerst uitvoeren van deze check van het bestandssyteem is een vereiste voor het hierna volgende resize2fs.
WARNING!!! Running e2fsck on a mounted filesystem may cause SEVERE filesystem damage.

[root@testserver ~]# e2fsck -f /dev/sdc1
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdc1: 167085/61063168 files (15.8% non-contiguous), 46216404/122096000 blocks

3. Resize het bestandssyteem met resize2fs
Nu kan het bestandssysteem verkleind worden naar 300G

[root@testserver ~]# resize2fs /dev/sdc1 300G
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/sdc1 to 78643200 (4k) blocks.
Het bestandssysteem op /dev/sdc1 is nu 78643200 blokken groot.

Let op: Het eindresultaat is 78643200 blocks van 4k of te wel 314,6G. Omdat de partitie ook nog de nodige superblocks moet bevatten moeten we ook nog rekenen op 3%-5% ruimteverlies. Maak daarom de partitie niet kleiner dan 314,6G + 5% = 330G

4. Delete de partitie
Om de partitie te wijzigen moeten we deze eerst deleten en dan een nieuwe creëren.
Check eerst wat de eerste cilinder van de huidige partitie is, dit hebben we nodig voor het aanmaken van de nieuwe partitie.

[root@testserver ~]# fdisk /dev/sdc

Het aantal cylinders van deze schijf is ingesteld op 60801.
Hier is niets mis mee, maar het is groter dan 1024, en
kan met bepaalde instellingen problemen veroorzaken met:
1) software die werkt bij het opstarten (bijv. oude versies van LILO)
2) opstart- en partitioneringssoftware van andere besturings-
   systemen, zoals DOS FDISK en OS/2 FDISK

Opdracht (m voor hulp): p

Schijf /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Eenheden = cylinders van 16065 * 512 = 8225280 bytes

 Apparaat Boot      Start         Einde    Blokken  Id  Systeem
/dev/sdc1               1       60801   488384001   83  Linux

Opdracht (m voor hulp): d
Geselecteerde partitie 1

Opdracht (m voor hulp): p

Schijf /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Eenheden = cylinders van 16065 * 512 = 8225280 bytes

 Apparaat Boot      Start         Einde    Blokken  Id  Systeem

Opdracht (m voor hulp): w
De partitietabel is gewijzigd!

Aanroepen ioctl() om partitietabel opnieuw in te lezen.
Synchroniseren schijven.

5. Creëer nieuwe (kleinere) partitie

Niet kleiner dan 330G zoals uitgelegd in punt 3! Bij een te kleine partitie zal de systeemboot crashen.
Zorg ervoor dat de eerste cilinder dezelfde blijft, zijnde het ankerpunt van het bestandssysteem en de data hierin.


[root@testserver ~]# fdisk /dev/sdc

Opdracht (m voor hulp): n
Opdracht actie
   e   uitgebreid
   p   primaire partitie (1-4)
p
Partitienummer (1-4): 1
Eerste cylinder (1-60801, standaard 1): 1
Laatste cylinder of +size of +sizeM of +sizeK (1-60801, standaard 60801): +330G

Opdracht (m voor hulp): p

Schijf /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Eenheden = cylinders van 16065 * 512 = 8225280 bytes

 Apparaat Boot      Start         Einde    Blokken  Id  Systeem
/dev/sdc1               1       40121   322271901   83  Linux

Opdracht (m voor hulp): w
De partitietabel is gewijzigd!

Aanroepen ioctl() om partitietabel opnieuw in te lezen.
Synchroniseren schijven.

Deze nieuwe partitie gebruikt nu van de 60801 cilinders op de harde schijf de eerste 40121 cilinders en blijven er aan het einde nog 20680 cilinders beschikbaar voor een extra partitie.

6. Reboot het systeem
We zouden de partitie nu kunnen mounten met het # mount commando, maar het is beter een reboot te doen omdat dan direct aan het licht komt of alles goed is gegaan. Als we de partitie bijvoorbeeld toch nog te klein hebben gemaakt zal de boot crashen en moeten we de zaak oplossen door een monitor en keyboard op de server aan te sluiten.
Note: In dit geval zijn de data niet verloren! Blijf rustig en voer op de monitor van de server onderstaand voorbeeld uit van het vergroten van de partitie, te beginnen bij punt 2.

Na een succesvolle reboot lezen we de bestandssystemen uit

[root@testserver ~]# df -h
Bestandssysteem       Grtte Gebr Besch Geb% Aangekoppeld op
/dev/sda1             9,5G  446M  8,6G   5% /
/dev/sda2              28G  1,3G   25G   5% /usr
/dev/sda3              92G  1,8G   86G   2% /var
/dev/sdb1             459G  169G  268G  39% /home
/dev/sdc1             296G  169G  112G  61% /vault
tmpfs                 2,0G     0  2,0G   0% /dev/shm

Naar index

Vergroot partitie met behoud van data

We gaan de hierboven verkleinde partitie met het bestandssysteem /dev/sdc1 (terug) vergroten naar de volle schijfcapaciteit.

1. Unmount het bestandssysteem en verifiëer

[root@testserver ~]# umount /dev/sdc1
[root@testserver ~]# df -h
Bestandssysteem       Grtte Gebr Besch Geb% Aangekoppeld op
/dev/sda1             9,5G  446M  8,6G   5% /
/dev/sda2              28G  1,3G   25G   5% /usr
/dev/sda3              92G  1,8G   86G   2% /var
/dev/sdb1             459G  169G  268G  39% /home
tmpfs                 2,0G     0  2,0G   0% /dev/shm

2. Delete de partitie.
Om de partitie te wijzigen moeten we deze eerst deleten en dan een nieuwe creëren.
Check eerst wat de eerste cilinder van de huidige partitie is, dit hebben we nodig voor het aanmaken van de nieuwe partitie.

[root@testserver ~]# fdisk /dev/sdc

Opdracht (m voor hulp): p

Schijf /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Eenheden = cylinders van 16065 * 512 = 8225280 bytes

 Apparaat Boot      Start         Einde    Blokken  Id  Systeem
/dev/sdc1               1       40121   322271901   83  Linux

Opdracht (m voor hulp): d
Geselecteerde partitie 1

Opdracht (m voor hulp): p

Schijf /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Eenheden = cylinders van 16065 * 512 = 8225280 bytes

 Apparaat Boot      Start         Einde    Blokken  Id  Systeem

Opdracht (m voor hulp): w
De partitietabel is gewijzigd!

Aanroepen ioctl() om partitietabel opnieuw in te lezen.
Synchroniseren schijven.

3. Creëer nieuwe (grotere) partitie

Zorg ervoor dat de eerste cilinder dezelfde blijft, zijnde het ankerpunt van het bestandssysteem en de data hierin.


[root@testserver ~]# fdisk /dev/sdc

Opdracht (m voor hulp): n
Opdracht actie
   e   uitgebreid
   p   primaire partitie (1-4)
p
Partitienummer (1-4): 1
Eerste cylinder (1-60801, standaard 1): 1
Laatste cylinder of +size of +sizeM of +sizeK (1-60801, standaard 60801):
Standaardwaarde 60801 wordt gebruikt

Opdracht (m voor hulp): p

Schijf /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Eenheden = cylinders van 16065 * 512 = 8225280 bytes

 Apparaat Boot      Start         Einde    Blokken  Id  Systeem
/dev/sdc1               1       60801   488384001   83  Linux

Opdracht (m voor hulp): w
De partitietabel is gewijzigd!

Aanroepen ioctl() om partitietabel opnieuw in te lezen.
Synchroniseren schijven.

Deze nieuwe partitie gebruikt nu van de 60801 cilinders op de harde schijf de eerste 40121 cilinders en blijven er aan het einde nog 20680 cilinders beschikbaar voor een extra partitie.

4. Run e2fsck op /dev/sdc1
Het eerst uitvoeren van deze check van het bestandssyteem is een vereiste voor het hierna volgende resize2fs.
WARNING!!! Running e2fsck on a mounted filesystem may cause SEVERE filesystem damage.

[root@testserver ~]# e2fsck -f /dev/sdc1
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdc1: 167085/39321600 files (15.8% non-contiguous), 45532276/78643200 blocks

5. Resize het bestandssyteem met resize2fs
Nu kan het bestandssysteem vergroot worden naar de capaciteit van de partitie.
Als geen grootte ingevoerd wordt wordt de hele capaciteit van de partitie benut.

[root@testserver ~]# resize2fs /dev/sdc1
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/sdc1 to 122096000 (4k) blocks.
Het bestandssysteem op /dev/sdc1 is nu 122096000 blokken groot.

6. Mount partitie en check

[root@testserver ~]# mount /dev/sdc1 /vault
[root@testserver ~]# df -h
Bestandssysteem       Grtte Gebr Besch Geb% Aangekoppeld op
/dev/sda1             9,5G  446M  8,6G   5% /
/dev/sda2              28G  1,3G   25G   5% /usr
/dev/sda3              92G  1,8G   86G   2% /var
/dev/sdb1             459G  169G  268G  39% /home
tmpfs                 2,0G     0  2,0G   0% /dev/shm
/dev/sdc1             459G  169G  267G  39% /vault

Naar index

Externe HDD aansluiten met USB

  1. Sluit externe HDD aan op een USB poort
  2. # dmesg -> Zie aan het einde wat het nieuwe device is. Zoek naar een regel met iets als: sd 4:0:0:0: Attached scsi disk sdd . In ons voorbeeld is het nieuwe device dus 'sdd1'
  3. Mount device sdd1:
    # cd /
    # mkdir /mnt/usb-hdd
    # mount -t ext3 /dev/sdd1 /mnt/usb-hdd

    of als het een HDD met NTFS is
    :
    # mount -t ntfs /dev/sdd1 /mnt/usb-hdd
    In dit laatste geval moet er wel een driver voor het NTFS bestandssysteem geïnstalleerd zijn. Zie hiervoor Server::Configureren NTFS bestandssysteem

Naar index

Draai Piwigo met de backup in /VAULT

Piwigo op mijn server slaat de data (foto's) op in /home/pwgdata en beheert deze data in de MySQL-MariaDb database 'piwigo'. Met behulp van een CRON maakt de server dagelijks een volledige backup van de directory '/home/pwgdata' en een dump van de MySQL database en deze worden weggeschreven naar /vault/piwigo/pwgdata. Zie hiervoor ook Piwigo::Backup.
Voor een restore van de Piwigo (foto)data moet zowel de complete ‘pwgdata’ directorie als de MariaDB ‘piwigo’ database teruggezet worden. Het is hierbij belangrijk dat beide op het zelfde moment gemaakt zijn, wat in dit geval door de dagelijkse backup gegarandeerd wordt.
Let op!!: Het is ook mogelijk Gallery op de testserver te 'klonen' met de backup van de mainserver (of omgekeerd).

Gebruik /vault als pwgdata vervanger van /home
In mijn webserver hebben zowel de /home als de /vault een eigen harde schijf. In het geval de harde schijf met de /home directory crashed of ernstig corrupt is, kan Piwigo vrij snel weer in de lucht gebracht worden door te switchen naar 'pwgdata' in de backup op /vault.

  1. Voor een restore is het beter te zorgen dat het oude bestand verwijderd is.
  2. Als het PIWIGO programma zelf nog wel werkt is het niet nodig deze te vervangen door de backup uit /vault.
  3. Om een restore te doen van PIWIGO is het voldoende de huidige lege of corrupte /home/pwgdata directories /_data, /galleries, /update, template-extensions en /local te verwijderen en te vervangen door hun respectievelijke laatste backups in /vault/piwigo/pwgdata
    Note:
    Door het grote datavolume van vooral de directorie 'galleries' zal dit kopieren erg lang duren. Als tussenoplossing kunnen we in dit stadium Piwigo laten draaien op de 'pwgdata'in de vault. Zie 'Overschakelen naar Vault' hieronder.
  4. Vervolgens moet de Piwigo database hersteld worden. Voer onderstaande commando's uit voor het droppen van de oude MariaDB piwigo database en het importeren van de sql-dump in de backup:
    a. cd naar /vault/piwigo/pwgdata/dbase_dump met het laatste goede bestand 'piwigo-dump.sql'
    b. # mysqladmin -uroot -p'' drop piwigo (verwijdert de oude 'piwigo')
    c. # mysql -uroot -p'' < piwigo-dump.sql (importeert de backup 'piwigo') Hiermee is PiWiGo weer (tijdelijk) hersteld naar de situatie van de laatste backup.

Overschakelen naar Vault
In Piwigo hebben we SYMBOLIC LINKS gebruikt om de data op te slaan buiten de webroot in /home/pwgdata. Om snel in de lucht te zijn kunnen we in plaats van bovenstaande stap 3 eerst in het piwigo programma de symbolic links naar de probleembestanden verwijderen en deze vervangen met symbolic links naar de backups in Vault.

Bijvoorbeeld voor ../piwigo/galleries:
a. # cd /var/www/html/piwigo
b. # unlink galleries
c. # ln -s /vault/piwigo/pwgdata/galleries galleries
d. Doe hetzelfde met _data, upload, template-extension en local.

Herstel nu de database zoals omschreven in bovenstaande stap 4. En op deze manier is Piwigo weer beschikbaar.

Tijdelijk!
Nu hebben we de server weer 'up and running' met Gallery maar hebben we nog niet alles opgelost. De gecrashte op gecorrumpteerde schijf moet zo spoedig mogelijk hersteld of vervangen worden. Tot die tijd is het belangrijk dat de automatische backup met CRON naar /vault niet uitgevoerd wordt. doe dit met # crontab -e

Uiteindelijk herstel
Kopiëer de fysieke backupbestanden naar Piwigo met een andere naam, bijvoorbeeld:
# cp -aR /vault/piwigo/pwgdata/galleries /home/pwgdata/bck-galleries
Op dezelfde manier kopiëren we _data, upload, template-extension en local.

Vervolgens stoppen we Piwigo en verwijderen we de symbolic links:
# unlink galleries
Zo ook voor _data, upload, template-extension en local

Als alle links verwijderd zijn hernoemen we de fysieke bestanden:
# rename bck-galleries galleries bck-galleries
Zo ook voor bck_data, bck-upload, bck-template-extension en bck-local

Herstel nu de oorspronkelijke symbolic links naar de data in /home/pwgdata
# ln -s /home/pwgdata/galleries galleries
Opnieuw ook voor _data, upload, template-extension en local
Hiermee is PiWiGo weer hersteld naar de situatie van de laatste backup!

Naar index

Installatievoorbeeld Canon MP540 PRINTER met WEBMIN

Hiervoor is het nodig dat de printer beschikbaar is als LAN netwerkprinter of als gedeelde printer op 1 van de LAN netwerk PC's
Aangezien de server, beschreven op deze site, in headless mode gebruikt wordt verloopt alle output via een browser of werkstation met puTTY. Een printer op zo'n server configureren heeft dan ook weinig zin. De hier na volgende procedure is dan ook alleen ter informatie.

Missende Linux Printer Drivers toevoegen
Met een nieuwe printer kan het zijn dat er op het door ClearOS geleverde pakket nog geen drivers beschikbaar zijn. Dit was voor mijn Canon MP540 All-in-One het geval. Ook kon er geen equivalent driver pakket gevonden worden, waarmee de printer naar behoren werkte. Een zoektocht langs de verschillende RPM sites leverde ook niets op.
De gezochte drivers werden uiteindelijk via Google gevonden bij Canon!

  1. Haal met een Windows PC het bestand MP540_RPM_drivers.tar op bij http://software.canon-europe.com/software/
  2. Plaats dit bestand in '/usr/tmp' op de server
  3. Voer uit aan prompt:
    # cd /usr/tmp/
    # tar -xf MP540_RPM_drivers.tar
  4. Dit resulteert in 2 tarballs waarvan één voor de scanner. We gaan verder met de tarball voor de printer:
    # tar -xf MP540_RPM_printer.tar
    Er zijn nu twee RPM bestanden over en opnieuw een tarball. De laatste lijkt alle bestanden te bevatten om zelf te compileren. Hier gaan we verder met de twee RPM bestanden.
  5. Installeer 'cnijfilter-common-3.00-1.i386.rpm' en 'cnijfilter-mp540series-3.00-1.i386.rpm'.
    Dit kan aan de prompt of bijvoorbeeld met Webmin. Het kan zijn dat voor dependencies 'gtk2' eerst geïnstalleerd moet worden.
  6. Het geheel afgewerkt met een reboot van de server.
  7. Activeer CUPS in Webconfig en pas de Firewall aan voor CUPS poort 631 udp en tcp
  8. Log in op CUPS met browser op https://<myserver-IP>:631/admin, user en wachtwoord als van server

Naar index

Downloadpagina met behulp van PHP

Hoe browsers omgaan met download bestanden
Als een gebruiker naar de URL van een bestand gaat (bijvoorbeeld een download link) dan zal dit bestand in de browser getoond worden als de browser dit bestandstype ondersteund. Imagebestanden zoals jpg, png, gif, etc zullen bijna altijd in de browser getond worden. Archief bestanden zoals zip, tar, gzip, etc. daarentegen zullen altijd gedownload worden. Sommige bestanden worden getoond in bepaalde browsers en niet bij anderen afhankelijk of de browser het bestand kan lezen. Internet Explorer zal bijvoorbeeld gewoonlijk proberen MS Word in de browser te openen, terwijl de meeste andere browsers het zullen downloaden. Google Chrome heeft zijn eigen pdf converter en zal proberen pdf bestanden om te zetten om ze te laten zien in de browser.
Of een browser een bestand kan lezen is ook afhankelijk van eventuele add-on's geïnstalleerd door de gebruikers.
Als een browser het bestand kan lezen wordt deze getoond, maar als de browser het niet kan lezen dan zal deze een download naar de harde schijf forceren.

Hoe kan een download geforceerd worden voor alle bestandtypen
Op deze server heb ik een download directory aangemaakt. Hierin kunnen mappen met bestanden geplaatst worden die beschikbaar zijn voor download.

In het configuratiebestand van de http server staat per default de instelling van 'Indexes' uit, om te voorkomen dat een browser de directory listing toont als er geen automatisch opstartbestand zoals 'index.htm' voorkomt. De gebruiker zal in dit geval de door mij beschikbaar gestelde bestanden niet zien. Zie hiervoor op deze site: HTTPD.CONF Apache configuratie
Bij de downloadmap willen we juist dat de directorylisting wel getoond wordt zodat bestanden geselecteerd kunnen worden. Dit kan door middel van een speciale directive 'Options +Indexes' voor de downloadmap.
Zie het resultaat met de url: www.makkink.eu/exploringlinux/download en ondanks dat de mappen en bestanden door elkaar staan wordt wel een complete listing van aangeboden bestanden getoond. Als op een map geklikt wordt dan opent deze met op zijn beurt weer een listing van de mapinhoud. Als een bestand geselecteerd wordt dan doet zich echter het hierboven bechreven probleem voor en wordt het bestand of geopend of gedownload.

Het meest eenvoudige om een bestand toch als download aan te laten bieden is door het bestand in te pakken in een archief zoals zip en tar.
Maar zelfs dan is de downloadpagina zeer basic zonder enkele vorm van layout en design.

De PHP METHODE
Hieronder volgt een voorbeeld zoals ik het op deze site opgelost heb gebruikmakend van PHP.
De toelichting is hierbij gesplitst in de volgende onderdelen:

Naar index

Downloadpagina van layout voorzien
Om te beginnen wordt een html gemaakt met de gewenste layout. Zie hier een eenvoudig voorbeeld.
In dit stadium is nog geen PHP aanwezig en is daarom het venster waar de downloads getoond zullen gaan worden nog leeg.
Om de mappen en bestanden te tonen en te navigeren door eventuele (sub)directories en hierin een bestand te kunnen selecteren en aan te bieden voor download wordt nu PHP gebruikt. Om te beginnen wijzigen we hiervoor de extentie van de pagina van .html naar .php

Hieronder volgt een nadere uitleg en documentatie van het PHP proces.
Klik hier om de complete PHP-download code te bekijken en eventueel af te drukken

Naar index

Directory listing met PHP
Variabelen definieren:

Directory listing halen:

Sorteer directory listing in de array: eerst directories en daarna alfabetisch.

Tel het aantal gevonden bestanden

Naar index

HTML voor Tabel samenstellen met PHP

In het geval er geen bestanden gevonden zijn zal de tabel er ongeveer als volgt uitzien:

Downloads

BestandsnaamGewijzigd opGrootte Kb
 

Op het moment zijn er helaas geen downloadbestanden beschikbaar
Probeer het later nog eens of neem contact met mij op

Naar index

Verzamel tabelvariabelen met loop door bestanden

Naar index

Vul tabel rij voor rij met verzamelde output

Naar index

Download bestand met force.php

In de voorgaande secties hebben we gezien dat indien een element geen directory is en dus een bestand dat deze een link krijgt om down te loaden.
Als een gebruiker deze download link aanklikt dan zou dit bestand echter in de browser getoond worden als de browser dit bestandstype ondersteund. Om een download te forceren wordt daarom de url als argument doorgestuurd naar het php-script force.php

<?php
$file = ($_GET['f']);

header('Cache-Control: public, must-revalidate, max-age=0');
header('Pragma: no-cache');
// voor .basename() moeten eventuele spaties in $file verwijderd of omgezet worden
header("Content-disposition: attachment; filename=".basename(str_replace(' ', '_', $file)));
header("Content-type: application/octet-stream");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');

ob_clean();
flush();

readfile("$file");
?> 

Naar index

Data uitwisselen tussen Linux machines op het zelfde netwerk

SSH Protocol
Secure Shell (kortweg: SSH) is een protocol uit de toepassingslaag van de TCP/IP-protocolgroep.SSH maakt het mogelijk om op een versleutelde manier in te loggen op een andere computer, en op afstand commando's op de andere computer uit te voeren via een shell. Omdat ssh met encryptie werkt, is het voor eventuele afluisteraars, die de (internet)verbinding aftappen, zo goed als onmogelijk om wachtwoorden of commando's te achterhalen.

Voorbeelden van netwerkcommunicatie tussen Mainserver en Testserver
Machines:
Mainserver IP:192.168.1.xxx
Testserver IP:192.168.1.yyy

Taken:
1. Haal op testserver bestandslijst van mainserver
2. Kopieer op testserver bestanden van de mainserver (ontvangen)
3. Kopieer op testserver bestanden naar de mainserver (zenden)

Met SSH bestandslijst ophalen van Linux share op netwerk
Voer commando uit op testserver om bestandslijst op te halen van de mainserver:

# ssh root@192.168.1.155 ls -l /var/www/html/

Er zal naar het wachtwoord van Mainserver-root gevraagd worden. Zie ook FAQs SSH

Met Secure Copy bestanden van de Mainserver halen
Voer commando's uit op de testserver (-r voor recursive).
Als bestanden op bestemming al bestaan worden deze overschreven!

# scp -r root@192.168.1.155:/vault/g2data /home/
of
# cd /home
# scp -r root@192.168.1.155:/vault/g2data .

Er zal in beide gevallen naar het wachtwoord van Mainserver-root gevraagd worden. Zie ook FAQs SCP

Met Secure Copy bestanden naar de Mainserver sturen
Voer commando's uit op de testserver.
Als bestanden op bestemming al bestaan worden deze overschreven!

# scp -r /vault/g2data/ root@192.168.1.155:/vault/

Er zal naar het wachtwoord van Mainserver-root gevraagd worden. Zie ook FAQs SCP

Naar index

Netwerkkaart toevoegen/vervangen

In de BIOS moet PnP enabled zijn

  1. Verwijder de Network Interface Card (NIC), bijvoorbeeld 'eth1'
  2. Boot en stel vast dat het systeem de NIC mist
  3. # shutdown (dus niet power uit!).
  4. Installeer de kaart en boot
  5. Als de NIC niet automatisch geladen wordt zoek dan in /etc/sysconfig/network-scripts naar bestand 'ifcfg-eth1'
  6. Als dit bestand niet bestaat maak het dan aan:
    # touch /etc/sysconfig/network-scripts/ifcfg-eth1
  7. Het bestand moet minstens de volgende regels bevatten:
    DEVICE=eth1
    TYPE="Ethernet"
    ONBOOT="yes"
    USERCTL="no"
    BOOTPROTO="static"
    IPADDR="192.168.1.50" (gewenste vaste IP van NIC)
    NETMASK="255.255.255.0"
    GATEWAY="192.168.1.254"
  8. Herstart netwerk:
    # service network restart

Naar index

Servernaam wijzigen

Als we de naam van een server willen wijzigen van bijvoorbeeld 'homeserver' naar 'testserver' moeten hiervoor een reeks instellingen aangepast worden.
Het is daarbij belangrijk dat de LDAPapp gewijzigd wordt vóór apps die van LDAP gebruik maken zoals bijv. Samba

  1. Directory Server
    Webconfig > Server > Directory > Directory Server.
    Wijzig: Base Domain
    Controleer wijziging eventueel in /var/clearos/openldap/config.php
  2. Windows Networking (Samba)
    Webconfig > Server > File > Windows Networking (Samba) > Settings
    Wijzig: Server Name en Server Comment
  3. IP settings
    Webconfig > Network > Setting > IP settings
    Wijzig: Hostname
  4. Hosts
    Edit /etc/hosts
    Wijzig: oude naam naar nieuwe naam
  5. Webserver
    Webconfig > Server > Web > Webserver > Settings
    Wijzig: Server Name
  6. DNS Server
    Webconfig > Network > Infastructure > DNS Server > DNS Entries
    Wijzig: Hostname
  7. Mail Settings
    Webconfig > System > Settings > Mail Settings > Settings
    Wijzig: Mail Domain en Mail Hostname

    Reboot

  8. System Registration
    Log in! en vervolgens Webconfig > System > Settings > System Registration
    Voeg aan de URL in de browser toe: ../reset
    https://homeserver:81/app/registration/reset
    Als resultaat wordt de bestaande registratie van 'homeserver' verwijderd.
    Vul nu het registratieformulier opnieuw in met de nieuwe gegevens.
  9. Browser Bladwijzers
    Pas alle gerelateerde Bladwijzers in de browsers aan
  10. puTTY
    Pas settings van SSH console pyTTY aan
  11. Last Pass
    Pas Last Pass data van gerelateerde server aan

Naar index

Server verhuizen naar ander netwerk

Als de server verhuisd wordt naar een ander netwerk is de kans groot dat de IP range van dat 'nieuwe' netwerk afwijkt van de range waarvoor de server geconfigureerd is.
Als gevolg hiervan zullen onderdelen van de configuratie van de firewall, samba, etc met 'hard-coded' IP's resulteren in blokkades.

Voorbeelden van de Mainserver-configuraties met 'hard-coded' IP's

  1. Firewall
    Zie Server::Firewall > Firewall Custom en Webconfig > Network > Firewall > Custom Firewall

    Om toegang tot specifieke poorten te beperken worden deze alleen open gezet voor clienten in het lokale netwerk zoals bijvoorbeeld voor Webconfig de rule:
    $IPTABLES -I INPUT -p tcp --source 192.168.178.0/26 --destination 192.168.178.4 --dport 81 -j ACCEPT

    Bovenstaande houdt in dat alleen voor de "hard-coded" IP's tussen 192.168.178.0 en .63 port 81 open staat.
    Door in mijn thuisnetwerk op de router de DHCP pool in te stellen boven IP 192.168.178.63, zullen clienten die via DHCP een IP-adres krijgen geen toegang krijgen tot poort 81.
    Dat houdt dat alleen "trusted IP's" met door de beheerder op de router ingestelde IP reservering toegang krijgen tot poort 81. Zie ook meer hierover in Server::Samba > Beperking toegang tot 'trusted-IP's'

  2. Samba fileserver
    Zie Server::Samba > Samba Network Server met in in de sambaconfiguratie de toevoeging hosts allow = 192.168.178.0/26
    Ook hier worden alleen netwerkclienten toegelaten met IP's tussen 192.168.178.0 en 63

  3. Hosts bestand
    Eenvoudig gezegd is het bestand /etc/hosts een bestand met platte tekst dat door het besturingssysteem wordt gebruikt om hostnamen naar IP-adressen te vertalen. Het systeem zal altijd eerst het hosts-bestand controleren en alles wat niet in het hosts-bestand is gedefinieerd, wordt opgezocht op de DNS-servers die zijn gedefinieerd in de netwerkinstellingen.

    Op de mainserver ziet het hosts bestand er als volgt uit:
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.178.4 mainserver.makkink.eu mainserver
    192.168.178.5 testserver.makkink.eu testserver
    192.168.178.10 ben-xps
    192.168.178.14 erica
    192.168.178.15 benovo
    192.168.178.16 asrock
    192.168.178.24 hp6234

    Opnieuw allemaal "hardcoded IP's" die niet meer zullen kloppen als de Mainserver in een ander netwerk geplaatst wordt.

Waar moeten IP's in de diverse configuraties gecorrigeerd worden?

Om vast te stellen waar deze hard-coded IP's voorkomen gebruiken we het commando #grep bijvoorbeeld:
# grep -rnw '/etc' -e '192.168.178'

Op de mainserver resulteert dit bijvoorbeeld in:

/etc/hosts:3:192.168.178.4 mainserver.makkink.eu mainserver
/etc/hosts:4:192.168.178.5 testserver.makkink.eu testserver
/etc/hosts:5:192.168.178.10 ben-xps
/etc/hosts:6:192.168.178.14 erica
/etc/hosts:7:192.168.178.15 benovo
/etc/hosts:8:192.168.178.16 asrock
/etc/hosts:9:192.168.178.24 hp6234
/etc/clearos/firewall.d/custom:9:       $IPTABLES -I INPUT -p tcp --source 192.168.178.0/26 --destination 192.168.178.4 --dport 81 -j ACCEPT # Webconfig-trusted-IPs
/etc/clearos/firewall.d/custom:10:      # $IPTABLES -I INPUT -p tcp --source 192.168.178.0/26 --destination 192.168.178.4 --dport 22 -j ACCEPT # SSH-trusted-IPs
/etc/clearos/firewall.d/custom:11:      $IPTABLES -A INPUT -p udp --source 192.168.178.0/24 --destination 192.168.178.4 --dport 1024:65535 -j ACCEPT # SMB-Highports
/etc/clearos/firewall.d/custom:12:      $IPTABLES -I INPUT -p udp --source 0.0.0.0/0 --destination 192.168.178.4 --dport 138 -j ACCEPT # NETBIOS-DGM
/etc/clearos/firewall.d/custom:13:      $IPTABLES -I INPUT -p udp --source 192.168.178.0/24 --destination 192.168.178.0/24 --dport 137 -j ACCEPT # NETBIOS-NS
/etc/samba/smb.conf:128:        hosts allow = 192.168.178.0/26
/etc/samba/smb.conf:140:        hosts allow = 192.168.178.10 192.168.178.37
/etc/samba/smb.conf:152:        hosts allow = 192.168.178.10
/etc/samba/smb.conf:164:        hosts allow = 192.168.178.10 192.168.178.37
/etc/httpd/conf.d/custom_httpd.inc:51:        Require ip 192.168.178.0/24
/etc/httpd/conf.d/awstats.conf:30:        Require ip 192.168.178.0/24
/etc/httpd/conf.d/awstats.conf:37:        Allow from 192.168.178.0/24
/etc/httpd/conf.d/custom_httpd.conf:127:        Require ip 192.168.178.0/24
/etc/httpd/conf.d/phpldapadmin.conf:12:    Require ip 192.168.178.10

Uit bovenstaande kunnen we dus afleiden in welke bestanden de IP's gecorrigeerd moeten worden naar het IP adres van de nieuwe router.
Als de IP range van de nieuwe router bijvoorbeeld 192.168.1.0/24 is moeten we in bovenstaande bestanden alle voorkomens van 192.168.178 wijzigen naar 192.168.1

IP Update door middel van script

SSH toegang:
Om het script uit te kunnen voeren is het essentiëel dat er met een PC in het nieuwe netwerk een SSH verbinding, m.b.v. bijv. puTTY, gemaakt kan worden met de server.
Daarom moet de firewall alle clienten in het thuisnetwerk, waarin de server opgenomen wordt, toegang verlenen tot poort 22
Zie Server::Firewall > Firewall Inkomend, dus hier geen "hard-coded"IP's gebruiken!
Mocht er toch een "hardcoded" IP gebruikt zijn dan rest niets anders dan de server te voorzien van keyboard en monitor en vervolgens de firewall uit te schakelen met het commando: # systemctl stop firewall

Script # 'server-ipupdate'
Voor het eenvoudig updaten van de IP's na een router-wissel heb ik een script 'server-ipupdate' geschreven.
Dit script maakt gebruik van een referentie bestand /usr/local/server-netips dat de IP's bevat zoals ze tot voor de uitwisseling zijn.

# Huidig LAN IP
lanip 192.168.178.0
#
# Huidig IP van de PC (ssh client)van waaruit het netwerk en server beheerd wordt.
clientip 192.168.178.10
#
# Huidig IP van de server
hostip 192.168.178.4

Zie hier het complete script 'server-ipupdate'.

In het script zetten we m.b.v. van het 'string editor' commando # sed eerst de variabelen voor de oude te vervangen ip's uit het referentiebestand /usr/local/server-netips en zetten we de variabelen van de niewe IP's. Zie ook Return only the portion of a line after a matching pattern

# Oude IP's in het referentiebestand
prev_lanip=$(sed -n '/lanip/{s/.*lanip *\([^ ]*\).*/\1/p;q;}' /usr/local/server-netips | cut -d. -f-3);
prev_srvrip=$(sed -n '/hostip/{s/.*hostip *\([^ ]*\).*/\1/p;q;}' /usr/local/server-netips);
prev_clientip=$(sed -n '/clientip/{s/.*clientip *\([^ ]*\).*/\1/p;q;}' /usr/local/server-netips);

# Nieuwe IP range met de nieuwe router
nw_lanip=$(ip route get 8.8.8.8 | sed -n '/src/{s/.*src *\([^ ]*\).*/\1/p;q}' | cut -d. -f-3);
nw_srvrip=$(ip route get 8.8.8.8 | sed -n '/src/{s/.*src *\([^ ]*\).*/\1/p;q}');
nw_clientip=$(echo $SSH_CLIENT | awk '{ print $1}');

En vervolgens gebruiken we # sed om alle voorkomens van de oude IP's te vinden en deze te wijzigen naar de nieuwe IP-range bijvoorbeeld voor de firewall
Zie ook How to Use sed to Find and Replace String in Files

sed -i "s/\b$prev_srvrip\b/$nw_srvrip/g"  /etc/clearos/firewall.d/custom;
sed -i "s/\b$prev_lanip\b/$nw_lanip/g"  /etc/clearos/firewall.d/custom;

Met bovenstaande wordt in het firewall configuratiebestand /etc/clearos/firewall.d/custom de regel:
$IPTABLES -I INPUT -p tcp --source 192.168.178.0/26 --destination 192.168.178.4 --dport 81 -j ACCEPT # Webconfig-trusted-IPs
gewijzigd naar:
$IPTABLES -I INPUT -p tcp --source 192.168.1.0/26 --destination 192.168.1.21 --dport 81 -j ACCEPT # Webconfig-trusted-IPs

In bovenstaand voorbeeld is de nieuwe router range 192.168.1 ($nw_lanip) en de nieuwe server IP 192.168.1.21 ($nw_srvip)

Als laatste wordt met het script het refentie bestand /usr/local/server-netips ook geupdated.

# ALTIJD als laatste
# update referentiebestand /usr/local/server-netips
sed -i "s/\b$prev_srvrip\b/$nw_srvrip/g" /usr/local/server-netips;
sed -i "s/\b$prev_clientip\b/$nw_clientip/g" /usr/local/server-netips;
sed -i "s/\b$prev_lanip\b/$nw_lanip/g" /usr/local/server-netips;

Procedures voor het opnemen van de Mainserver in een netwerk met ander IP-bereik

Voor de duidelijkheid van de hiernavolgende procedures gebruiken we voor het oorspronkelijke thuisnetwerk het IP bereik 192.168.178.0/24 en nemen we van het nieuwe netwerk aan dat het IP-bereik 192.188.1.0/24 is.

1. Procedure met behoud van volledige Mainserver functionaliteit als File- en Webserver

  1. Verbindt de ‘beheerders-PC’ via een netwerkkabel met de ‘nieuwe’ router.

  2. Open in de browser op deze PC het Router Gebruikers Interface en log in (zie routerhandleiding voor IP adres, gebruikersnaam en wachtwoord).

  3. De Mainserver is dusdanig geconfigureerd dat alleen apparaten in het lokale netwerk en binnen het IP bereik 0-63 toegang wordt verleend.
    Hiervoor moet op de router dit bereik vrijgehouden worden t.b.v. IP-reservering (Static IP) voor deze apparaten. Stel daarom op de router de DHCP pool in beginnend boven 64, bijvoorbeeld 192.188.1.64 tot 192.188.1.200
    Gasten, mogelijk ongewenst, krijgen nu middels DHCP automatisch een IP buiten het ‘trusted-IP’ bereik en krijgen als gevolg geen toegang tot de Mainserver.

  4. Zoek op de router de netwerkverbinding van de ‘beheerders-PC’ (MAC-adres) en wijzig het aanvankelijk door DHCP verkregen IP naar een IP reservering binnen de range 192.188.1.0/26 (0-63), bijvoorbeeld 192.188.1.50.
    Herstart de ‘beheerders’ PC

  5. Sluit de Mainserver aan op de router en lokaliseer op de router de netwerkverbinding van de Mainserver (MAC-adres) en reserveer op de router een vast IP bijvoorbeeld 192.188.1.5.
    Hiermee heeft de Mainserver een vast lokaal IP, benodigd voor portforwarding naar de Webserver.
    Herstart de Mainserver.

  6. Doe hetzelfde voor alle client PC's in het netwerk die toegang tot de Samba-shares moeten krijgen, dus met een vast IP in het bereik 192.188.1.0/26

  7. Start nu op de 'beheerders-PC' een SSH sessie op de Mainserver op adres 192.188.1.5 via poort 22 (bijvoorbeeld met de SSH-client puTTY voor Windows).
    Log in met gebruikersnaam ‘beheerder’ (Zie LastPass voor accounts en wachtwoorden).

  8. SU naar root en start op de command-line het script: 'server-ipupdate'
    Het script zoekt in de diverse Mainserver-configuratiebestanden naar alle oude "hardcoded" IP's 192.168.178.x en vervangt deze met het nieuwe IP 192.188.1.x .
    Herstart de Mainserver.

  9. Hiermee is de Mainserver geïntegreerd in het nieuwe thuisnetwerk.

  10. We kunnen nu in de browser van de ‘beheerders-PC’ de Mainserver Gebruikersinterface 'Webconfig' openen met de URL: https://192.188.1.5:81 (log in als root).

  11. Op een Windows PC in het nieuwe thuisnetwerk kunnen we nu in de Verkenner de Samba Fileserver benaderen met het adres: \\192.188.1.5\files of \\mainserver\files
    Er zal om authenticatie gevraagd worden, log in als één van de gebruikers van de gebruikersgroep 'lanshare' (zie Webconfig>System>Accounts>Users en/of Groups)
    Bijvoorbeeld gebruiker 'beheerder'. Ga naar LastPass voor wachtwoord).

    Zie on-line voor inloggen op Samba vanaf een Windows PC:
    https://www.makkink.eu/exploringlinux/server7/html/samba.html#sambanetwerk
    Of off-line op Desktop-PC van Ben met url:file:
    ///D:/Data/Documenten/Webdesign/webserver/exploringlinux/server7/html/samba.html#sambanetwerk
    Of eerst website downloaden van STACK:
    www/exploringlinux/server7/

  12. De Webserver is lokaal in de browser te openen met de url: https://192.188.1.5/
    Als we de server open willen stellen op het internet dan moet hiervoor op de router portforwarding ingesteld worden.
    Op de Mainserver zelf staan de poorten 80 en 443 al open.

2. Procedure voor alleen toegang tot de Fileserver voor bijvoorbeeld datarecovery.

Met deze procedure is geen manipulatie van router nodig, de Mainserver wordt gewoon via DHCP aan het nieuwe netwerk gehangen.
Pas op: Alle apparaten in het thuisnetwerk kunnen na deze procedure inloggen op de Samba shares, dus ook bijvoorbeeld ongenode WiFi gasten.
Er is geen IP-reservering, dus is geen portforwarding voor de Webserver mogelijk.
Lokaal is de Webserver nog wel beschikbaar.

  1. Sluit de Mainserver aan op de router

  2. Start nu op de 'beheerders-PC' een SSH sessie op de Mainserver op adres 192.188.1.xx via poort 22 (bijvoorbeeld met de SSH-client puTTY voor Windows).
    Check op de router welk IP via DHCP is toebedeeld aan de Mainserver
    Log in met gebruikersnaam ‘beheerder’ (Zie LastPass voor accounts en wachtwoorden).

  3. Start op de command-line het script: 'server-ipupdate'.
    Het script zoekt in de diverse Mainserver-configuratiebestanden naar alle oude "hardcoded" IP's 192.168.178.x en vervangt deze met het nieuwe IP 192.188.1.x .

  4. Start op de command-line het script: ‘server-smbopen’(Zie de volgende sectie hieronder voor de uitleg van dit script).
    Het script past de Samba configuratie aan door de ‘Trusted-IP’ restrictie te verwijderen.
    Alle apparaten op het thuisnetwerk krijgen nu toegang tot de Fileserver
    Herstart de Mainserver.

  5. Met stappen 3 en 4 is de Mainserver nu gekoppeld aan het nieuwe thuisnetwerk.
    We kunnen nu in de browser van de ‘beheerders-PC’ bijv. de Mainserver Gebruikersinterface 'Webconfig' openen met URL: https://192.188.1.xx:81 (log in als root).
    Check op de router welk IP via DHCP is toebedeeld aan de Mainserver

  6. Op een Windows PC in het nieuwe thuisnetwerk kunnen we nu in de Verkenner de Samba Fileserver benaderen met het adres: \\192.188.1.xx\files of \\mainserver\files
    Log in als één van de gebruikers van de gebruikersgroep 'lanshare' (zie Webconfig>System>Accounts>Users en/of Groups)
    Bijvoorbeeld gebruiker 'beheerder'. Ga naar LastPass voor wachtwoord).
    Zie on-line voor inloggen op Samba vanaf een Windows PC:
    https://www.makkink.eu/exploringlinux/server7/html/samba.html#sambanetwerk
    Of off-line op Desktop-PC van Ben met url:file:
    ///D:/Data/Documenten/Webdesign/webserver/exploringlinux/server7/html/samba.html#sambanetwerk
    Of eerst website downloaden van STACK:
    www/exploringlinux/server7/

  7. De Webserver is lokaal in de browser te openen met de url: https://192.188.1.xx/
    De webserver kan niet zondermeer opengesteld worden naar het internet omdat deze geen vast IP heeft. Hiervoor moet eerst in de router een IP voor de Mainserver gereserveerd worden waarna vervolgens portforwarding ingesteld kan worden.

Script 'server-smbopen' voor verwijderen Samba's Trusted-IP restrictie

De Mainserver Samba-configuratie voorziet in een Trusted-IP restrictie op apparaten in het locale netwerk.
Alleen de door de beheerder geselecteerde apparaten worden in de router voorzien van een IP-reservering.

Met de tweede procedure hierboven zien we ervan af een router in een bestaand netwerk om te bouwen om dit te faciliteren.
Nu moeten we wel het Samba configuratie bestand aanpassen zodat alle netwerkapparaten toegang krijgen.

Procedure:
Maak een copie van /etc/samba/smb.conf en noemen deze /etc/samba/smb.conf.smbopen en editen dit bestand.
Markeer in dit bestand alle regels met hosts deny = ALL en hosts allow = 192... uit.

Bijvoorbeeld:

[files]
        comment = Gedeelde bestanden en mappen
        path = /home/files
        force user = files
        force group = lanshare
        read only = No
        create mode = 0644
        directory mask = 0751
        # Alle hosts in LAN krijgen toegang
        # hosts deny = ALL
        # hosts allow = 192.168.178.0/26
        browsable = Yes

Zie hier het complete bestand /etc/samba/smb.conf.smbopen

Vervolgens vervangen we het originele smb.conf door dit aangepaste bestand met een kort script server-smbopen

cp -a /etc/samba/smb.conf.smbopen /etc/samba/smb.conf;

systemctl restart smb;

Naar index

Wordpress blog migreren naar nieuwe server

Zie ook WORDPRESS::Backup and Restore > Wordpress migreren met backup data
Voor het migreren van de Wordpress blog van de huidige on-line server naar een nieuwe on-line server kunnen we de Wordpress backup gebruiken zoals omschreven in Gebruikersinstructies
Kopiëer hiervoor van de huidige server met rsync de meest recente backupdata in /vault/wordpress naar de vault van de nieuwe server en volg de gebruikersinstructies.
Zodra de nieuwe server on-line genomen wordt in domein www.makkink.eu is nu de Wordpress blog geheel operationeel.

Als we de voormalige on-line server willen gaan gebruiken als een lokale testserver lopen we tegen het probleem aan dat bij Wordpress alle links permalinks zijn met het volledige pad en als root het domein www.makkink.eu

Het eerste probleem waar we tegen aan lopen begint al als we in willen loggen als beheerder om bijvoorbeeld al deze links te wijzigen.
De link voor het inloggen verwijst ook nog steeds naar www.makkink.eu, dus zelfs vanaf de testserver belanden we in de on-line webserver.
De settings voor o.a. in- en uitloggen kunnen we wijzigen in Wordpress > Dashboard > Instellingen > Algemeen, maar daar moeten we wel voor ingelogd zijn.

Edit Wordpress database met (phpMyAdmin) MySQL
De enige manier om hier een voet tussen de deur te krijgen is het in phpMyAdmin of aan de prompt bewerken van de databasetafel van wordpress.wp_options waarin de instellingen opgeslagen zijn.

Update wp_options URL's
Check in kolom option_value naar records met www.makkink.eu terwijl in kolom option_name: 'login_redirect_url','logout_redirect_url','home' of 'siteurl'

MariaDB [wordpress]> SELECT * FROM `wp_options`
WHERE option_name IN ('login_redirect_url', 'logout_redirect_url','home','siteurl')
AND option_value LIKE '%www.makkink.eu%';
+-----------+---------------------+-----------------------------+----------+
| option_id | option_name         | option_value                | autoload |
+-----------+---------------------+-----------------------------+----------+
|         2 | home                | https://www.makkink.eu/blog | yes      |
|       748 | login_redirect_url  | https://www.makkink.eu/blog | yes      |
|       747 | logout_redirect_url | https://www.makkink.eu/blog | yes      |
|         1 | siteurl             | https://www.makkink.eu/blog | yes      |
+-----------+---------------------+-----------------------------+----------+

Update in de de text in option_value van 'www.makkink.eu' naar '192.168.1.5'

MariaDB [wordpress]> UPDATE `wp_options`
    -> SET option_value=REPLACE(option_value,'www.makkink.eu','192.168.1.5')
    -> WHERE option_name IN ('login_redirect_url', 'logout_redirect_url','home','siteurl')
    -> AND option_value LIKE '%www.makkink.eu%';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

Na deze update kunnen we weer inloggen op Wordpress op de testserver

Note:
Er zijn meer permalinks met www.makkink.eu in de tafel wp_options, maar deze zijn nested in arrays.
Deze kunnen we alleen updaten met Wordpress > Dashboard > Weergave > Customizer door de layout geheel opnieuw op te bouwen.
Voor de testserver is dat niet nodig, te veel werk voor niets. Slechts enkele afbeeldingen zullen door de browser van de domeinserver www.makkink.eu gehaald worden.

Update wp_options records met e-mailadres erica@makkink.eu naar ben@makkink.eu

MariaDB [wordpress]> UPDATE `wp_options`
SET option_value=REPLACE(option_value,'erica@makkink.eu','ben@makkink.eu')
WHERE option_value LIKE '%erica@makkink.eu%'

Alle POSTS met permalinks
Posts met foto's bevatten alle permalinks en in ons geval opnieuw allemaal naar https://www.makkink.eu/. Ten tijde van dit schrijven praten we over zo'n 1650 permalinks die bewerkt moeten worden.
Dit gaat het beste met het editen met MySQL van de tafel wp_posts.
De permalink met 'www.makkink.eu' kan voorkomen in 2 kolommen zijnde wp_posts.post_content en/of wp_posts.guid

We voeren de volgende updates uit:

MariaDB [wordpress]> UPDATE `wp_posts`
    -> SET post_content=REPLACE(post_content,'www.makkink.eu','192.168.1.5')
    -> WHERE post_content LIKE '%www.makkink.eu%';
Query OK, 367 rows affected (0.06 sec)
Rows matched: 367  Changed: 367  Warnings: 0

MariaDB [wordpress]> UPDATE `wp_posts`
    -> SET guid=REPLACE(guid,'www.makkink.eu','192.168.1.5')
    -> WHERE guid LIKE '%www.makkink.eu%';
Query OK, 1279 rows affected (0.01 sec)
Rows matched: 1279  Changed: 1279  Warnings: 0

Verwijder onnodige adressen uit Email Subscriber

Naar index

Anacron Logrotate error tracen

Als met de logrotate procedure iets fout gaat wordt een e-mail met een waarschuwing gestuurd naar de Admin (root@mainserver.makkink.eu) met bijvoorbeeld volgende vermelding:

/etc/cron.daily/logrotate:
gzip: stdin: file size changed while zipping

Het enige wat we hieruit op kunnen maken dat er iets fout gegaan is met het roteren van een log van één van de vele processen die gelogd worden.

Als de volgende dag geen waarschuwing ontvangen wordt is het en incidentele fout als bijvoorbeeld geprobeerd wordt een logbestand te roteren terwijl deze gelockt is.
In dat geval is verder onderzoek niet nodig.
Als echter dagelijks een waarschuwing blijft komen moeten we dit onderzoeken.

Hiervoor maken we het 'logrotate-proces' verbose, met als resultaat dat het hele proces van alle logrotaties voluit in een e-mail gestuurd wordt.

Edit /etc/cron.daily/logrotate
Voeg aan het einde van de commandoregel toe: --verbose

#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf --verbose
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

De resulterende dagelijkse e-mail ziet er uit bijvoorbeedl uit als volgt:

/etc/cron.daily/logrotate:

reading config file /etc/logrotate.conf
including /etc/logrotate.d
reading config file BackupPC
reading config file bootlog
reading config file chrony
reading config file clamd
reading config file compliance
reading config file dnsmasq
.... etc.
Allocating hash table for state file, size 15360 B

Handling 28 logs

rotating pattern: /var/log/boot.log
 after 1 days (7 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/boot.log
  log does not need rotating (log is empty)
rotating pattern: /var/log/chrony/*.log  weekly (10 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/chrony/*.log
  log /var/log/chrony/*.log does not exist -- skipping
not running postrotate script, since no logs were rotated
.... etc.

Naar index

What's next

Naar index