Apache & ISPConfig: Oprava chýbajúcich logov a odstránenie chýb pri príkaze grep (Manual & Auto Script)

Ilustrácia serverového prostredia ISPConfig v tmavom režime, zobrazujúca automatickú opravu chýbajúcich prístupových logov a odstránenie chýb príkazu grep.

Tento návod rieši problém, kedy pri diagnostike servera (napríklad pri použití príkazu grep) terminál vypisuje chyby "No such file or directory" pre weby, ktoré sú v ISPConfigu nastavené ako Inactive.

Podstata problému

Keď v ISPConfigu prepneš web do režimu Inactive, Apache prestane zapisovať požiadavky do súboru access.log. Ak však v rámci údržby alebo rotácie logov tieto súbory fyzicky zmiznú, adresárová štruktúra webu (/var/log/ispconfig/httpd/domena.sk/) často ostane zachovaná.

Pri globálnom prehľadávaní logov (napr. grep -r "error" /var/log/ispconfig/httpd/) sa systém snaží dostať aj do priečinkov neaktívnych webov. Keď tam nenájde očakávaný súbor, proces sa preruší alebo znečistí výstup chybovými hláškami.

Riešenie 1: Manuálne vytvorenie (pre jednotlivé domény)

Ak ti chybu hádže len pár konkrétnych webov, najrýchlejšie je vytvoriť prázdne atrapy logov (dummy files). Tieto súbory nebudú zaberať miesto, ale uspokoja príkazy, ktoré očakávajú ich existenciu.

Spusti tento príkaz (nahraď názov domény):

Bash
touch /var/log/ispconfig/httpd/nazov-domeny.sk/access.log

Riešenie 2: Automatizovaný skript (pre celý server)

Ak spravuješ server s množstvom webov a nechceš pátrať, ktorý konkrétne chýba, použi tento skript. Prejde všetky adresáre v zložke logov a ak nájde priečinok webu, ktorý nemá access.log, automaticky ho vytvorí.

Tento skript je bezpečný – existujúce logy neprepíše, len doplní chýbajúce.

Jednorazový príkaz (One-liner): Môžeš to spustiť priamo v termináli ako jeden blok:

Bash
for d in /var/log/ispconfig/httpd/*; do if [ -d "$d" ] && [ ! -f "$d/access.log" ]; then touch "$d/access.log"; echo "Vytvorený dummy log pre: $(basename "$d")"; fi; done

Vysvetlenie kódu:

  • for d in /var/log/ispconfig/httpd/*: Prechádza všetky položky v hlavnom log adresári.
  • if [ -d "$d" ]: Kontroluje, či je položka skutočne adresár (a nie súbor).
  • [ ! -f "$d/access.log" ]: Kontroluje, či súbor access.log neexistuje.
  • touch "$d/access.log": Vytvorí prázdny súbor.

Tip pre pokročilú údržbu

Tento one-liner si môžeš uložiť napríklad do svojho údržbového skriptu (napr. maintenance.sh), ktorý spúšťaš občasne na prečistenie servera. Zabezpečíš tak, že tvoje grep vyhľadávania budú vždy čisté a bez chýb.