Dlaczego Linux jest ważny dla web developera

Nawet jeśli na co dzień pracujesz na macOS lub Windows, Twoja aplikacja webowa niemal na pewno działa na serwerze z Linuxem. Ponad 96% serwerów internetowych to systemy Linux — od małych VPS-ów po infrastrukturę gigantów technologicznych. Kontenery Docker, serwery CI/CD, środowiska chmurowe — wszędzie spotkasz Linuxa.

Znajomość podstawowych komend Linuxa to nie opcja, a konieczność. Debugowanie problemów na produkcji, analiza logów, konfiguracja serwera, deployment aplikacji — wszystko to wymaga umiejętności pracy z terminalem. Ten artykuł to praktyczny przewodnik po komendach, które używamy najczęściej.

Nawigacja i system plików

Linux organizuje pliki w drzewiastą strukturę z korzeniem /. Najważniejsze katalogi:

  • /home — katalogi domowe użytkowników
  • /etc — pliki konfiguracyjne systemu i usług
  • /var/log — logi systemowe i aplikacyjne
  • /tmp — pliki tymczasowe (czyszczone przy restarcie)
  • /opt — oprogramowanie zainstalowane ręcznie

Podstawowe komendy nawigacji:

  • pwd — wyświetla bieżący katalog (Print Working Directory)
  • ls -la — lista plików z ukrytymi i szczegółami (uprawnienia, rozmiar, data)
  • cd /var/log — zmiana katalogu
  • mkdir -p projekty/nowy — tworzenie katalogów (z -p tworzy brakujące katalogi nadrzędne)
  • cp -r zrodlo/ cel/ — kopiowanie katalogów rekurencyjnie
  • mv stary.txt nowy.txt — przenoszenie lub zmiana nazwy
  • rm -rf katalog/ — usuwanie katalogu z zawartością (uwaga — brak kosza, operacja nieodwracalna)

find to potężne narzędzie do wyszukiwania plików: find /var/log -name "*.log" -mtime -7 znajduje pliki .log zmodyfikowane w ostatnich 7 dniach.

Podgląd i edycja plików

  • cat plik.txt — wyświetla całą zawartość pliku
  • less plik.txt — interaktywny podgląd z przewijaniem (strzałki do nawigacji, q wychodzi, /szukaj do wyszukiwania)
  • head -n 20 plik.txt — pierwsze 20 linii
  • tail -n 50 plik.txt — ostatnie 50 linii
  • tail -f /var/log/app.log — śledzenie pliku w czasie rzeczywistym (nieocenione przy debugowaniu)

grep to król wyszukiwania tekstu: grep -r "error" /var/log/ przeszukuje rekurencyjnie wszystkie pliki w katalogu logów. Przydatne flagi: -i (ignoruj wielkość liter), -n (numery linii), -c (liczba dopasowań).

Do szybkiej edycji plików konfiguracyjnych na serwerze najlepiej sprawdza się nano — prosty edytor z podpowiedziami skrótów na dole ekranu. Bardziej zaawansowani użytkownicy sięgają po vim, który jest potężniejszy, ale wymaga nauki.

Uprawnienia — chmod i chown

System uprawnień w Linuxie to trzy grupy (właściciel, grupa, pozostali) i trzy typy (odczyt, zapis, wykonanie). Komenda ls -la pokazuje uprawnienia w formacie -rwxr-xr--:

  • r (read) = 4 — odczyt
  • w (write) = 2 — zapis
  • x (execute) = 1 — wykonanie

chmod 755 skrypt.sh ustawia: właściciel może wszystko (7=4+2+1), grupa i pozostali mogą czytać i wykonywać (5=4+1).

chmod 644 index.html — właściciel czyta i pisze (6=4+2), reszta tylko czyta (4).

chown www-data:www-data /var/www/ — zmiana właściciela i grupy pliku.

Typowe uprawnienia na serwerze webowym: katalogi 755, pliki HTML/CSS/JS 644, skrypty i pliki binarne 755, pliki konfiguracyjne z hasłami 600 (tylko właściciel).

Zarządzanie procesami

  • ps aux — lista wszystkich procesów z użyciem CPU i pamięci
  • top lub htop — interaktywny monitor procesów (htop jest czytelniejszy, ale wymaga instalacji)
  • kill PID — wysyła sygnał SIGTERM do procesu (grzeczne zamknięcie)
  • kill -9 PID — SIGKILL, natychmiastowe zabicie procesu (ostateczność)
  • lsof -i :8080 — pokazuje, który proces nasłuchuje na porcie 8080

Systemd — zarządzanie usługami

Na nowoczesnych dystrybucjach Linuxa (Ubuntu, Debian, CentOS) systemd zarządza usługami systemowymi:

  • systemctl status nginx — stan usługi
  • systemctl start/stop/restart nginx — uruchamianie, zatrzymywanie, restart
  • systemctl enable nginx — automatyczne uruchamianie przy starcie systemu
  • journalctl -u nginx -f — logi usługi w czasie rzeczywistym

Docker również jest usługą systemd: systemctl status docker.

Cron — zadania cykliczne

Cron to planista zadań w Linuxie. Komenda crontab -e otwiera edytor zadań. Format wpisu:

minuta godzina dzień_miesiąca miesiąc dzień_tygodnia komenda

Przykłady:

  • 0 3 * * * /home/user/backup.sh — codziennie o 3:00
  • */5 * * * * curl -s https://example.pl/health — co 5 minut
  • 0 0 1 * * certbot renew — pierwszego dnia każdego miesiąca o północy

Przydatna strona: crontab.guru — wizualny edytor wyrażeń cron z opisem w prostym języku.

SSH — bezpieczny dostęp zdalny

SSH (Secure Shell) to standard zdalnego dostępu do serwerów:

  • ssh user@serwer.pl — połączenie z serwerem
  • ssh -i klucz.pem user@serwer.pl — połączenie z kluczem prywatnym
  • scp plik.txt user@serwer.pl:/home/user/ — kopiowanie pliku na serwer
  • rsync -avz lokalne/ user@serwer.pl:/zdalne/ — synchronizacja katalogów (inteligentniejsze niż scp — przesyła tylko zmiany)

Klucze SSH zamiast haseł to standard bezpieczeństwa. Generowanie: ssh-keygen -t ed25519. Klucz publiczny dodajesz na serwerze do ~/.ssh/authorized_keys, klucz prywatny zostaje na Twoim komputerze.

Konfiguracja SSH w pliku ~/.ssh/config upraszcza połączenia:

Host produkcja
    HostName 185.210.30.45
    User deploy
    IdentityFile ~/.ssh/deploy_key

Po takiej konfiguracji łączysz się jednym poleceniem: ssh produkcja.

Praktyczne kombinacje

Kilka przydatnych one-linerów, które używamy regularnie:

  • du -sh /var/log/* — rozmiar każdego pliku/katalogu w logach
  • df -h — użycie dysków w czytelnym formacie
  • free -h — użycie pamięci RAM
  • netstat -tlnp lub ss -tlnp — otwarte porty i nasłuchujące procesy
  • docker logs --tail 100 -f kontener — ostatnie 100 linii logów kontenera Docker z śledzeniem

Podsumowanie

Znajomość Linuxa to fundament pracy web developera, niezależnie od specjalizacji. Nawigacja po systemie plików, zarządzanie uprawnieniami, analiza logów, konfiguracja SSH i cron — te umiejętności przydają się codziennie przy deploymencie, debugowaniu i utrzymaniu aplikacji.

Potrzebujesz pomocy z konfiguracją serwera Linux? Skontaktuj się z nami — skonfigurujemy infrastrukturę dopasowaną do Twojego projektu.