Instalacja LAMP na Debianie 13 (Trixie) – krok po kroku

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:

Jeżeli podoba Ci się ten artykuł i chcesz mnie wesprzeć, możesz Postawić mi kawę !

Dodaj komentarz 💬

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *


Cześć, jestempatryk
Przegląd prywatności

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.