Aktualizacja Proxmox’a bez subskrypcji – konfiguracja repozytorium
Jeżeli jesteś szczęśliwym posiadaczem Proxmox VE, to pewnie zauważyłeś, że w pewnym momencie Proxmox nie podnosi się samoistnie do najnowszej…
Czytaj dalej →
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:
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.
Przed przystąpieniem do instalacji LAMP należy zaktualizować Debiana
apt update && apt -y upgrade

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

systemctl status apache2

Test w przeglądarce

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

systemctl status mariadb

sudo mariadb-secure-installation


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';

⚠️ 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.
apt install ca-certificates curl gnupg lsb-release -y

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

apt install php8.4 php8.4-cli

php -v

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

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.

Na potrzeby bloga lub aplikacji warto od razu używać VirtualHostó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

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>

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

systemctl reload apache2

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.

<?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ę !