LAMP to sprawdzony i niezwykle popularny zestaw technologii open-source, który od lat stanowi fundament tysięcy serwerów i stron internetowych na całym świecie. To właśnie dzięki niemu możliwe jest uruchamianie dynamicznych stron WWW, blogów, sklepów internetowych oraz aplikacji webowych.
Nazwa LAMP to akronim opisujący cztery kluczowe elementy tej architektury:
- Linux – stabilny i bezpieczny system operacyjny,
- Apache – wydajny i niezawodny serwer HTTP,
- MariaDB – szybka baza danych kompatybilna z MySQL,
- PHP – język programowania odpowiedzialny za dynamiczną logikę aplikacji.
Połączenie tych technologii tworzy solidne, elastyczne i darmowe środowisko serwerowe, idealne zarówno dla małych projektów, jak i dużych wdrożeń produkcyjnych. LAMP to wybór, który daje pełną kontrolę nad serwerem, ogromne możliwości rozbudowy oraz wsparcie globalnej społeczności.
Jeśli chcesz postawić własny serwer pod WordPressa, stronę firmową lub aplikację webową, LAMP to doskonały punkt startowy.
Krok 1: Aktualizacja systemu
Przed przystąpieniem do instalacji LAMP należy zaktualizować Debiana
apt update && apt -y upgrade

Krok 2: Instalacja Apache
Apache to jeden z najpopularniejszych serwerów HTTP i domyślny wybór w Debianie.
Instalacja
apt install apache2 -y

Sprawdzenie czy działa
systemctl status apache2

Test w przeglądarce

Krok 3: Instalacja MySQL (MariaDB)
W Debianie 13 domyślnym silnikiem MySQL jest MariaDB – w pełni kompatybilna i polecana do zastosowań serwerowych.
Instalacja
apt install mariadb-server mariadb-client -y

Sprawdzenie statusu
systemctl status mariadb

Podstawowe zabezpieczenie bazy
sudo mariadb-secure-installation


Zalecane odpowiedzi:
- ustawić hasło administratora – TAK
- usunąć anonimowych użytkowników – TAK
- zablokować zdalny dostęp dla root – TAK
- usunąć testową bazę danych – TAK
- przeładować uprawnienia – TAK
Stworzenie użytkownika do bazy danych
Praca na koncie root w bazie danych nie jest zalecana, a dodatkowo – zgodnie z dobrymi praktykami bezpieczeństwa – dostęp roota do połączeń zdalnych został zablokowany.
Z tego powodu konieczne jest utworzenie oddzielnego użytkownika bazy danych, który będzie właścicielem konkretnej bazy.
Dobrą praktyką jest zasada „jedna baza – jeden użytkownik”, co znacząco zwiększa bezpieczeństwo i ułatwia zarządzanie uprawnieniami.
Zaloguj się do MariaDB:
mariadb
Utwórz nową bazę danych:
CREATE DATABASE lamp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Utwórz nowego użytkownika:
CREATE USER 'lamp_user'@'localhost' IDENTIFIED BY 'SILNE_HASLO';
Nadaj użytkownikowi uprawnienia wyłącznie do tej bazy:
GRANT ALL PRIVILEGES ON lamp_db.* TO 'lamp_user'@'localhost';
Zastosuj zmiany:
FLUSH PRIVILEGES;
Sprawdź uprawnienia:
SHOW GRANTS FOR 'lamp_user'@'localhost';

Krok 4: Instalacja PHP
⚠️ Ważne: Debian 12 domyślnie oferuje PHP 8.2. W momencie pisania tego artykułu najnowszą stabilną wersją PHP jest 8.4 (PHP 8.5 nie została jeszcze oficjalnie wydana).
Aby korzystać z nowszej wersji niż ta z repozytoriów Debiana, użyjemy sprawdzonego repozytorium Sury.
Instalacja dodatkowych, wymaganych pakietów
apt install ca-certificates curl gnupg lsb-release -y

Dodanie repozytorium PHP (Sury)
wget -qO – https://packages.sury.org/php/apt.gpg | gpg –dearmor -o /usr/share/keyrings/sury-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/sury-archive-keyring.gpg] https://packages.sury.org/php/ trixie main" | tee /etc/apt/sources.list.d/sury-php.list
apt update

Instalacja PHP 8.4
apt install php8.4 php8.4-cli

Weryfikacja PHP
php -v

Instalacja podstawowych dodatków do PHP
Może być również konieczne zainstalowanie innych modułów PHP, w zależności od wymagań projektu.
apt install -y \
php8.4 \
php8.4-cli \
php8.4-common \
php8.4-mysql \
php8.4-curl \
php8.4-gd \
php8.4-intl \
php8.4-mbstring \
php8.4-xml \
php8.4-zip \
libapache2-mod-php8.4

Test działania PHP 8.4 z Apache2
echo "<?php phpinfo();?>" > /var/www/html/test.php

Po poprawnej instalacji PHP, wejście na plik test.php w przeglądarce powinno wyświetlić stronę informacyjną PHP (phpinfo()), potwierdzającą prawidłowe działanie środowiska.

Krok 5: VirtualHost – poprawna struktura strony
Na potrzeby bloga lub aplikacji warto od razu używać VirtualHostów.
Struktura katalogów
mkdir -p /var/www/lamp.jestempatryk.pl/public_html
chown -R www-data:www-data /var/www/lamp.jestempatryk.pl
chmod -R 755 /var/www/lamp.jestempatryk.pl

Konfiguracja VirtualHosta
Skopiujmy przykład vhosta
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/lamp.jestempatryk.pl.conf

Za pomocą edytora tekstowego musimy teraz go uzupełnić
nano /etc/apache2/sites-available/lamp.jestempatryk.pl.conf

Poniżej znajduje się przykładowa konfiguracja VirtualHosta przygotowana dla domeny lamp.jestempatryk.pl.
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerName lamp.jestempatryk.pl
ServerAlias www.lamp.jestempatryk.pl
ServerAdmin webmaster@jestempatryk.pl
DocumentRoot /var/www/lamp.jestempatryk.pl/public_html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
<Directory /var/www/lamp.jestempatryk.pl/public_html>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/lamp_jestempatryk_pl_error.log
CustomLog ${APACHE_LOG_DIR}/lamp_jestempatryk_pl_access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

Aktywacja strony
/usr/sbin/a2ensite lamp.jestempatryk.pl.conf
/usr/sbin/a2enmod rewrite

Restart Apache2
systemctl reload apache2

Weryfikacja działania strony
Aby szybko sprawdzić, czy strona działa poprawnie, najprościej przypisać adres IP serwera do domeny w pliku hosts w systemie Windows. Takie rozwiązanie pozwala błyskawicznie zweryfikować konfigurację bez ingerencji w ustawienia DNS.
Należy jednak pamiętać, że ta metoda działa wyłącznie lokalnie – tylko na komputerze, na którym zmodyfikowano plik hosts. Jeśli chcemy, aby strona była dostępna publicznie w internecie, konieczna będzie odpowiednia konfiguracja rekordów DNS u dostawcy domeny.
Jeśli wszystko zostało skonfigurowane poprawnie, po wejściu na stronę w przeglądarce zobaczysz efekt jak poniżej.

Krok 6: Test połączenia PHP z bazą danych
<?php
$mysqli = new mysqli("localhost", "uzytkownik", "HASLO", "nazwa_bazy_danych");
if ($mysqli->connect_error) {
die("Błąd połączenia: " . $mysqli->connect_error);
}
echo "Połączenie z bazą danych działa poprawnie";
?>


Po wejściu na stronę w przeglądarce zobaczysz taki komunikat:

