Apache 2, PHP 8.4, MariaDB og phpMyAdmin-oppsett

Installer Apache, PHP og MariaDB på Debian 13 (Trixie)

0 kommentar(er)

Revisert guide for Debian 13. Bruk av nativ APT-stakk uten XAMPP eller tredjepartsdepot for PHP 8.4.

Målversjoner (offisielle Debian 13-repositorier) :

Komponent Versjon
Apache 2.4.x
PHP 8.4.x
MariaDB 11.8.x
phpMyAdmin 5.2.x

1. Introduksjon


1.1. Målsetting


Sette opp en lokal utviklingsmiljø med:

  • Apache2
  • PHP 8.4
  • MariaDB
  • phpMyAdmin

Hvert komponent installeres og sjekkes før vi går videre til neste.

1.2. Hvorfor unngå XAMPP


XAMPP er praktisk for å starte med, men lite fleksibel under Linux: å bytte ut PHP-versjon, koble tjenestene til systemd, eller følge Debiens måte å håndtere pakker på blir snart frustrerende.

På Debian 13 er PHP 8.4, MariaDB 11.8 og Apache allerede i offisielle repositorier. Det er ingen behov for Sury-repositoriet for denne stakken.


2. Forberedelse av miljøet


2.1. Verifisere Debian-versjonen


Bash
cat /etc/os-release

Du skal se VERSION_CODENAME=trixie (Debian 13).

2.2. Oppdatering av pakker

Bash
sudo apt update && sudo apt upgrade -y

3. Installasjon av hovedtjenester


3.1. Apache


Apache serverer dine HTTP-sider på standardporten 80.

Installer først pakken, hvis ikke vil systemctl gi feilmeldingen Unit apache2.service does not exist:

Bash
sudo apt install apache2 -y
sudo systemctl enable --now apache2
sudo systemctl status apache2 --no-pager

Statusen skal vise active (running).

Verifisering i nettleser (standardport 80): http://localhost/

Hvis Apache-side ikke vises:

Bash
sudo systemctl start apache2
sudo systemctl status apache2 --no-pager

Bruksområder:

Bash
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2

3.1.1. Bytte HTTP-port til 90


På Debian konfigureres porten i to steder: den globale lytting (ports.conf) og hver egen Virtual Host. Endre ikke bare ett av de to.

A. Globale lytting:

Bash
sudo nano /etc/apache2/ports.conf

Erstatt:

Listen 80

med:

Listen 90

La Listen 443 være som den er hvis SSL-seksjonen er tilstede (ikke nødvendig for dette lokale HTTP-guiden).

B. Standard Virtual Host:

Bash
sudo nano /etc/apache2/sites-available/000-default.conf

Erstatt:

<VirtualHost *:80>

med:

<VirtualHost *:90>

C. Test konfigurasjonen, deretter last opp igjen:

Bash
sudo apache2ctl configtest
sudo systemctl reload apache2

configtest skal vise Syntax OK.

D. Kontroller at port 90 lytter:

Bash
ss -tlnp | grep ':90'

E. Tilgang via nettleser: http://localhost:90/

Bruk http://, ikke https://.
Apache lytter på plain HTTP på port 90. Hvis nettleseren automatisk konverterer til HTTPS (som i Firefox med HTTPS-Only-modus, HSTS osv.), får du feilmeldingen SSL_ERROR_RX_RECORD_TOO_LONG. I så fall: skriv eksplisitt http://localhost:90/ eller deaktiver midlertidig HTTPS-Only for localhost.

Fra nå av brukes alle lokale URLer på port 90
(http://localhost:90/, http://localhost:90/info.php, http://localhost:90/phpmyadmin).

Hvis du lager flere vhosts senere, legg også <VirtualHost *:90> (eller den valgte porten) i hvert side-fil.

3.2. MariaDB


MariaDB erstatter MySQL i Debian-arkivene. API-en er for de fleste PHP-prosjektet kompatibel.

Bash
sudo apt install mariadb-server -y
sudo systemctl enable --now mariadb
sudo systemctl status mariadb --no-pager

Sikre installasjonen:

På Debian er MariaDB allerede sikret som standard. Skriptet viser faktisk:

MariaDB is secure by default in Debian. Running this script is useless at best...

Vi kjører det likevel for å velge klart hvilken autentiseringstypen root skal bruke:

Bash
sudo mariadb-secure-installation

To muligheter eksisterer. Velg en av de to, noter valget, og følg instruksjonene for hvis valg A / hvis valg B i resten av veiledningen.

Valg A — enkelt Valg B — sikrere
root-autentisering Passord for SQL unix_socket
Brukernavn for phpMyAdmin / applikasjoner root + passord (ingen bruker dev) dev + passord (opprettet etter skript)
Admin i terminalen mariadb -u root -p sudo mariadb
Opprette en bruker dev? Nei Ja (obligatorisk)

Advarsel — valg A.
Å logge deg på phpMyAdmin (og muligens applikasjoner) med root er den enkleste veien.
Det er også den usikreste: et utslitt passord for root = alle databaser.
OK for en privat PC lokalt.
Valg B eksisterer nettopp for de som aldri vil sette root ut til internett.

Valg A — root + passord (enkelt)


Svar i mariadb-secure-installation:

Spørsmål Svar
Gjeldende passord for root Enter (tomt)
Bytt til autentisering med unix_socket n
Skal du endre passordet for root? Y → velg et passord og noter det
Fjerne anonyme brukere? Y
Tillate root-logginn fra fjernanslått? Y
Fjerne testdatabasen? Y
Laste om privilegertabellene? J

Sjekk:

Bash
mariadb -u root -p

Hvis valg A for resten av denne turen: bruk bare root + dette passordet (phpMyAdmin, eksempler på PDO osv.).
Lag ikke en bruger dev.

Valg B — unix_socket + bruger dev (mer sikker)


Svar i mariadb-secure-installation:

Spørsmål Svar
Gjeldende passord for root Enter (tomt)
Bytt til unix_socket-autentisering J
Skal du endre passordet for root? n
Fjerne anonyme brukere? J
Tillate root-logginn fra fjernanslått? J
Fjerne testdatabasen? J
Laste om privilegertabellene? J

Admin-terminal (ingen SQL-passord for root) :

Bash
sudo mariadb

Hvorfor en bruger dev i valg B?
phpMyAdmin kan logge seg på som root når root har et SQL-passord — det er valg A.
I valg B, er root i unix_socket: MariaDB aksepterer kun root hvis prosessen i Linux allerede er root (sudo mariadb). Apache / phpMyAdmin kjører som www-data, så en weblogginn som root mislykkes. Det trengs en SQL-bruker med passord (dev).

Lag umiddelbart dev (webbruker / app for resten av turen hvis valg B) :

SQL
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'change_me_strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'dev'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Erstatt change_me_strong_password med et virkelig passord og noter det.

Sjekk:

Bash
mariadb -u dev -p

Hvis valg B for resten av turen: phpMyAdmin, PDO osv. → dev + dette passordet. Bruk aldri root fra webben.

Mer restriktiv variant (bare én database) :

SQL
CREATE DATABASE mon_projet;
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'change_me_strong_password';
GRANT ALL PRIVILEGES ON mon_projet.* TO 'dev'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Detaljer om skriptspørsmålene (gemensam for begge)


Enter current password for root
Gjeldende passord for root for å tillate skriptet. På ny installert Debian : ofte tomt → Entret.

Switch to unix_socket authentication

  • n → valg A (SQL-passord).
  • Y → valg B (Linux socket / sudo).

Change the root password?**

  • Valg A : Y + angi passord.
  • Valg B : n (ikke nødvendig i dagligbruk med socket).

Remove anonymous users? → Y (ugjørlige brukere uten navn, uansett valg). Disallow root login remotely? → Y (bare lokal root ; « disallow » = forbudt fra eksternt). Remove test database? → Y Reload privilege tables? → Y

På maskinen hvor denne veiledningen ble følget live : valg A (root enkelt, uten dev). Valg B er dokumentert for de som velger det.

3.4. PHP 8.4


På Debian 13 er PHP 8.4 tilgjengelig naturligvis. Ingen Sury-repositorie trengs.

Bash
sudo apt install \
php8.4 \
php8.4-cli \
libapache2-mod-php8.4 \
php8.4-mysql \
php8.4-xml \
php8.4-mbstring \
php8.4-curl \
php8.4-zip \
php8.4-sqlite3 \
php8.4-gd \
php8.4-intl \
-y

Last opp Apache for å støtte PHP-modulen :

Bash
sudo systemctl restart apache2

Sjekk CLI :

Bash
php -v

Du skal se en linje av typen PHP 8.4.x.

Lag et testfil :

Bash
echo '<?php phpinfo();' | sudo tee /var/www/html/info.php

Åpne http://localhost:90/info.php, sjekk PHP 8.4, og slett filen derefter:

Bash
sudo rm /var/www/html/info.php

La ikke info.php stå kvar utenfor et av sikre miljø : det eksponerer serverkonfigurasjon.

3.5. phpMyAdmin


obligatorisk rekkefølge : installere pakken (§3.4.1) → sjekk at filene finnes → bare sånn aktivere Apache (§3.4.2). Uten pakken, /etc/phpmyadmin/apache.conf eksisterer ikke: en ln oppretter et brett link og a2enconf feiler med Conf phpmyadmin does not exist!.

3.4.1. Installasjon

Bash
sudo apt update
sudo apt install phpmyadmin -y

Under installasjon (debconf-skriner) :

  1. Velg webserver : apache2 (Rett for å merke av, Tab, Enter).

  2. Skal databasen til phpmyadmin konfigureres med dbconfig-common? → Ja. MariaDB er allerede installert ; dbconfig-common oppretter automatisk den interne database og brukeren som phpMyAdmin trenger. Svar Nei bare hvis du vil gjøre alt manuelt (utenkelig for et enkelt utviklingsmiljø).

  3. Angi et passord for MySQL/MariaDB-bruker phpmyadmin (noter det ; dette er ikke samme konto som root eller dev for å logge deg inn på nettlesergranseringen).

Kontrollpunkt — fortsett til 3.4.2 bare hvis dette er OK :

Bash
dpkg -l phpmyadmin | grep '^ii'
ls -la /etc/phpmyadmin/apache.conf
  • den 1. kommandoen skal vise ii phpmyadmin
  • den 2. skal liste filen (ikke « Ingen fil »)

Hvis phpmyadmin ikke er ii, stop : reinstallér (sudo apt install phpmyadmin -y) før du konfigurerer Apache.

3.4.2. Aktiver Apache-konfigurasjonen


Gjør dette bare etter kontrollpunkt §3.4.1.

Pakken leverer /etc/phpmyadmin/apache.conf. Apache må laste den via conf-available → a2enconf.

Oftest har installeringsprogrammet allerede opprettet linket. Sjekk:

Bash
ls -la /etc/apache2/conf-available/phpmyadmin.conf
  • Hvis fila/lenken eksisterer og peker mot /etc/phpmyadmin/apache.conf → aktiver og last inn på nytt bare:
Bash
sudo a2enconf phpmyadmin
sudo systemctl reload apache2
  • Ellers, opprett lenken (med backup hvis en fil allerede besitter navnet) :
Bash
# Abort if the package config is missing (do not create a broken symlink)
test -f /etc/phpmyadmin/apache.conf || {
echo "ERROR: /etc/phpmyadmin/apache.conf missing — finish §3.4.1 first"
exit 1
}
# Keep a copy if a file already occupies that name
if [ -e /etc/apache2/conf-available/phpmyadmin.conf ]; then
sudo cp -a /etc/apache2/conf-available/phpmyadmin.conf \
/etc/apache2/conf-available/phpmyadmin.conf.bak
fi
sudo ln -sf /etc/phpmyadmin/apache.conf \
/etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin
sudo systemctl reload apache2
  • test -f : stopper hvis pakken ikke er installert (unngår brukt symlink).
  • cp -a : virkelig backup før utbytte.
  • ln -sf : lenke til konfigurasjonen fra pakken.

3.4.3. Tilgang


URL: http://localhost:90/phpmyadmin

  • Hvis valg A : innlogging root + passord fra mariadb-secure-installation. Ingen dev.
  • Hvis valg B : innlogging dev + passord laget i §3.2. En web-innlogging med root mislykkes her på grunn av unix_socket (i valg A, root + passord fungerer).

3.4.4. Bruker dev – gjenopplighting / reparasjon (valg B bare)


Hvis valg A : ignorér denne seksjonen. Du holder deg på root.

Hvis valg B : dev er allerede opprettet i §3.2. Her kun hvis du har glemt eller må resette.

Bash
sudo mariadb
SQL
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'change_me_strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'dev'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Endre passord for dev:

SQL
ALTER USER 'dev'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
EXIT;

En dedikert database (rekommenderes for et prosjekt, alltid i valg B) :

SQL
CREATE DATABASE mon_projet;
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'change_me_strong_password';
GRANT ALL PRIVILEGES ON mon_projet.* TO 'dev'@'localhost';
FLUSH PRIVILEGES;
EXIT;

3.4.5. Feilsøking tilkobling


Logg inn som admin:

Bash
# Si option A :
mariadb -u root -p
# Si option B :
sudo mariadb

Liste brukere:

SQL
SELECT User, Host, plugin FROM mysql.user;
  • Hvis valg A : root har et passord-plugin → phpMyAdmin = root.
  • Hvis valg B : root har vanligvis plugin = unix_socket → phpMyAdmin = dev.

Endre et passord:

SQL
-- Si option A :
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
-- Si option B :
ALTER USER 'dev'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;

Avslutte:

SQL
EXIT;

3.4.6. Snar sekurisering (lokalt)


For et lokal utviklingsmiljø er tilgangen localhost ofte tilstrekkelig. For å begrense det ytterligere, rediger konfigurasjonen for Apache phpMyAdmin og begrens tilgangene, for eksempel:

Require local

Deretter:

Bash
sudo systemctl reload apache2

4. Konfigurering av PHP


4.1. Sjekk den aktive versjonen


Bash
php -v
php -m

4.2. Flere PHP-versjoner (valgfritt)


Hvis du senere installerer flere grenser (f.eks via Sury for PHP 8.5), bytt CLI med:

Bash
sudo update-alternatives --display php
sudo update-alternatives --config php

For Apache mod_php, aktiver kun en PHP-modul om gangen:

Bash
# Example: switch from php8.4 to another installed version
sudo a2dismod php8.4
sudo a2enmod phpX.Y
sudo systemctl restart apache2

Erstatt phpX.Y med den virkelige installerte versjonen.

4.3. Fil php.ini for Apache


Bash
sudo nano /etc/php/8.4/apache2/php.ini

Etter endringene:

Bash
sudo systemctl restart apache2

Vanlige innstillinger lokalt:

display_errors = On
error_reporting = E_ALL
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M

5. Viktig filer


5.1. Apache


Rolle Sti
Hovedkonfigurasjon /etc/apache2/apache2.conf
Lyttoppgaver /etc/apache2/ports.conf
Dokumentrot /var/www/html/
Tilgjengelige nettsteder /etc/apache2/sites-available/
Aktiverte nettsteder /etc/apache2/sites-enabled/
Standard vhost /etc/apache2/sites-available/000-default.conf
Logg tilgang /var/log/apache2/access.log
Feillogg /var/log/apache2/error.log

Aktiver / deaktiver en vhost:

Bash
sudo a2ensite nom-du-site.conf
sudo a2dissite nom-du-site.conf
sudo systemctl reload apache2

5.2.PHP


Rolle Sti
php.ini (Apache) /etc/php/8.4/apache2/php.ini
php.ini (CLI) /etc/php/8.4/cli/php.ini
Ekstensjoner se php -i | grep extension_dir

5.3. MariaDB


Rolle Sti
Serverkonfigurasjon /etc/mysql/mariadb.conf.d/50-server.cnf
Datafiler /var/lib/mysql/
Feillogg /var/log/mysql/error.log

5.4. phpMyAdmin


Rolle Sti
App-konfigurasjon /etc/phpmyadmin/config.inc.php
Apache-konfigurasjon /etc/phpmyadmin/apache.conf
Loggfilene /var/log/apache2/error.log og access.log

6. Valideringscheckliste


Bash
# Services
systemctl is-active apache2
systemctl is-active mariadb
# Versions
apache2 -v
php -v
mariadb --version
# Ports
ss -tlnp | grep -E ':90|:3306'
  • http://localhost:90/ svarer
  • Apache lytter på porten 90 (ikke 80)
  • php -v viser 8.4.x
  • http://localhost:90/phpmyadmin åpner seg
  • Hvis valg A : phpMyAdmin fungerer med root + passord (ingen dev)
  • Hvis valg B : brukeren dev er opprettet (§3.2) og phpMyAdmin funker med dev + passord
  • info.php er slettet

7. Spesielle egenskaper for Debian 13


  • PHP 8.4 er innbygget : ingen behov for Sury-leverandør eller apt-key (avviklet).
  • MariaDB er på versjon 11.8 ; sikkerhetsinstallasjonsskriptet heter mariadb-secure-installation.
  • Apache holder seg på versjon 2.4, med de samme verktøyene a2enmod / a2ensite / systemctl.
  • Denne veiledningen bruker HTTP-port 90 (ports.conf + Virtual Host).
  • MariaDB : valg A = enkelt root (ingen dev) ; valg B = unix_socket + dev. Valget B eksisterer for de som blir overbevist av varsel A.

8. Mulige videre trinn


For lokale prosjekter med et tilpasset domenenavn (minprosjekt.local), kan du konfigurere en Apache Virtual Host som peker mot en dedikert mappe (utenfor /var/www/html hvis du ønsker det). Legg også innenheten i /etc/hosts.

Artikkel med detaljer: Hvordan sette opp en VirtualHost for Apache på Debian 13 for et lokalt PHP-prosjekt

Du liker kanskje også:

Kommentarer

Ingen godkjente kommentarer ennå.

Logg inn med en kommentatorkonto for å publisere en kommentar. Logg inn.