Kategória: Üzemeltetés

  • PHP driver a Microsoft SQL Server-hez

    Van egy projektünk, ahol egy Microsoft SQL Server-hez kell csatlakozni, mert az ERP rendszer amihez kapcsolódunk az ebben tárolja az adatait. A projekt költöztetve lesz egy erősebb szerverre, így kénytelen voltam újra beállítani a PHP és ODBC drivereket, ami nem volt egyszerű, mert egyrészt elfelejtettem, másrészt több FPM verzió van fent, ami bonyolította a beállítást.

    Szóval aki erre adja a fejét, annak leegyszerűsítendő, írtam egy sorvezetőt.

    Ubuntu 22.04 a rendszer, először tegyük fel a függőségét:

    sudo apt-get install unixodbc-dev
    

    Majd jöhet a kiterjesztés telepítése

    sudo pecl -d php_suffix=8.2 install sqlsrv
    sudo pecl -d php_suffix=8.2 install pdo_sqlsrv
    printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
    printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
    sudo phpenmod -v 8.2 sqlsrv pdo_sqlsrv
    sudo systemctl restart php8.2-fpm
    

    Itt a php_suffix=8.2 csak akkor kell, ha több PHP verzió van a rendszeren. Ha ez megvan, akkor tudjuk ellenőrizni

    pecl list
    php8.2 -i | grep extension_dir
    

    Az ODBC driver valamivel egyszerűbb, mivel az alábbi linken lévő shell script tökéletesen elvégzi a dolgát!

  • SSH kulcsos hitelesítés

    Készítsünk egy kulcsot

    ssh-keygen -t ed25519 -C "your_email@example.com"
    vagy
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    A publikus kulcsot másoljuk a szerverre manuálisan a ~/.ssh/authorized_keys fájlba vagy az alábbi parancsot használva:

    ssh-copy-id user@your_server_ip
    

    Teszteljük a kapcsolatot:

    ssh user@your_server_ip
    

    Buktatók:

    • nincs a port engedélyezve a tűzfalon
    • ha elneveztük a kulcsot, akkor használjuk a -i kapcsolót
    ssh user@your_server_ip -i ./.ssh/keyname
    
    • ha a kulcsot kézzel rakjuk be, akkor szóköz kerül bele
    • Ubuntu esetén nem elég az sshd újraindítása
    sudo systemctl daemon-reload
    sudo systemctl restart ssh
    

  • Uptime lekérése

    Ha kiváncsiak vagyunk az időre, hogy mióta fut a gépünk / szerverünk, akkor erre több lehetőségünk is.

    Nézzük Linux alatt:

    • uptime parancs
    • uptimed csomag, mely után használhatjuk az uprecords parancsot
         #               Uptime | System                                     Boot up
    ----------------------------+---------------------------------------------------
    ->   1   567 days, 01:02:55 | Linux 4.19.0-0.bpo.9-amd  Thu Oct 12 07:26:03 2023
         2   210 days, 15:33:31 | Linux 4.19.0-0.bpo.9-amd  Fri Oct  7 08:47:43 2022
         3   159 days, 06:30:18 | Linux 4.19.0-0.bpo.9-amd  Sat May  6 00:52:32 2023
         4    62 days, 23:16:51 | Linux 4.19.0-0.bpo.9-amd  Mon Jul 25 07:19:57 2022
         5    19 days, 13:54:18 | Linux 4.19.0-0.bpo.9-amd  Tue Jul  5 10:41:51 2022
         6     8 days, 09:25:47 | Linux 4.19.0-0.bpo.9-amd  Wed Sep 28 23:21:41 2022
         7     2 days, 16:03:13 | Linux 4.19.0-0.bpo.9-amd  Mon Sep 26 06:45:29 2022
         8     0 days, 02:00:08 | Linux 4.19.0-0.bpo.9-amd  Mon Jul 25 01:06:19 2022
    
    

    Ugyanerre Windows alatt szintén több lehetőségünk van:

    • Powershell megoldás
    (get-date) – (gcim Win32_OperatingSystem).LastBootUpTime
    
    • systeminfo parancs
    • és használható a „net statistics workstation” is

  • Fájlok létrehozása Linuxon

    Egy új eszközt ismertem meg a napokban, amit mindjárt be is mutatok a témával kapcsolatban, de előbb nézzük meg, hogy milyen lehetőségünk van fájlok létrehozására linux alatt:

    touch teszt.txt
    

    Ez a legegyszerűbb megoldás, ez egy 0 byteos fájlt eredményez, de lehet hogy nekünk egy nagyobb fájlra van szükségünk pl. sebesség teszteléséhez, ehhez használhatjuk a dd-t.

    dd if=/dev/urandom of=random_data.bin bs=1M count=50
    

    Ebben a parancsban egy véletlenszerű adatokkal megtöltött 50MB-os fájl készítünk, a paraméterek:

    • if: input fájl, bemeneti forrás
    • of: output fájl, létrahozandó fájl
    • bs: blokkméret
    • count: blokkok száma
    dd if=/dev/zero of=ures_fajl.bin bs=1 count=0 seek=1G
    

    Ez pedig egy 1GB méretű valóban üres fájlt hoz létre, a seek paraméterrel adhatjuk meg, hogy hány blokkot hagyjon ki a bemeneten.

    De ettől van egy szebb megoldás is ugyanerre, mégpedig a fallocate parancs, mivel ez nem tölti fel adatokkal a fájl, használata:

    fallocate -l 5G test5G.bin
    

    Ez azonnal lefoglalja a helyet a fájlrendszerben, de nem inicializálja a fájlt adatokkal.

  • IMAP szinkronizálás

    Előforduló üzemeltetési feladat lehet, hogy két szerver között költöztetni kell a levelezést, ehhez nagyszerű eszköz az Imapsync mellyel könnyen megoldható a feladat. Ehhez a perl scripthez számos függőséget kell telepíteni, amit legegyszerűbben az alábbi leírás alapján tehetünk meg.