Apache 2, PHP 8.4, MariaDB, phpMyAdmin

Kaip įdiegti Apache, PHP ir MariaDB Debian 13 (Trixie)

0 komentaras(-ai)

Atnaujintas vadovėlis skirtas Debian 13. Naudojami oficialūs APT reikšmės, be XAMPP ir trečiųjų šaltinių PHP 8.4.

Tinkimų versijų (oficialieji Debian 13 depažinai) :

Komponentas Tarpinė versija
Apache 2.4.x
PHP 8.4.x
MariaDB 11.8.x
phpMyAdmin 5.2.x

1. Praėjimas


1.1. Tikslas


Įdiegti vietinę kūrimo platformą su:

  • Apache2
  • PHP 8.4
  • MariaDB
  • phpMyAdmin

Kiekvienas komponentas bus įdiegiamas ir patikrintas prieš eitimo į kitą.

1.2. Kodėl reikia vengti XAMPP


XAMPP yra praktiškas pradžioje, bet mažai fleksingas Linux sistema: PHP versijos keitimas, pasirinkimo systemd seris prijungimas arba Debian paketų valdymo būdo laikymasis keliau sunkiai.

Debian 13 yra oficialieji depažinai su PHP 8.4, MariaDB 11.8 ir Apache. Sury depažinas šiam stackui nereikalingas.

2. Kūrimo aplinkos pasiruošimas


2.1. Debian versijos tikrinimas


Bash
cat /etc/os-release

Turite matyti VERSION_CODENAME=trixie (Debian 13).

2.2. Pakavų atnaujinimas


Bash
sudo apt update && sudo apt upgrade -y

3. Pagrindinių paslaugų įdiegimas


3.1. Apache


Apache pateikia jūsų HTTP puslapius pagrindinėje 80 portu.

Pirmiausia įdiekite paketą, kitu atveju systemctl grąžins Unit apache2.service does not exist:

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

Būsenos turėtų rodyti active (running).

Naršyklės patikrinimas (pagrindinis 80 portas): http://localhost/

Jeigu Apache puslapis nepateikiama:

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

Naudingos komandos:

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

3.1.1. Keisti HTTP prievartą į 90 (pasirinktinai)


Nemažai programų naudoja 80 prievartą, todėl gali kilti specialūs situacijos. Taigi, jeigu jūsų Apašo serveris paleistas po kitos programa, kurioje jis jau yra naudojamas, gali įvykti blokavimas.

Debianėje prievartą galima konfigūruoti duose vietas: bendroji klausimo („ports.conf“) ir kiekvieno Virtual Host. Pakeiskite tik vieną iš dviejų vietų.

A. Bendras klausimas :

Bash
sudo nano /etc/apache2/ports.conf

Pakeiskite :

Listen 80

iki :

Listen 90

Palikite Listen 443 kaip yra, jei yra SSL sekcija (nebereikia šiam lokaliam HTTP vadovėlui).

B. Numatytasis Virtual Host :

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

Pakeiskite :

<VirtualHost *:80>

iki :

<VirtualHost *:90>

C. Testuoti konfigūraciją, tada atnaujinti :

Bash
sudo apache2ctl configtest
sudo systemctl reload apache2

„configtest“ turėtų rodyti „Syntax OK“.

D. Patikrinti, ar 90 prievartas klausiasi :

Bash
ss -tlnp | grep ':90'
  1. Naršyklės prieigos adresas: http://localhost:90/

Naudojant, būtina įrašyti http://, ne https://.
Apašas klausiasi paprasto HTTP 90 prievartoje. Jeigu naršyklė priverčia naudoti HTTPS (Firefox HTTPS-only režimas, HSTS ir t.t.), gausite klaidą „SSL_ERROR_RX_RECORD_TOO_LONG“. Tokiu atveju: įrašykite tiesiogiai http://localhost:90/ arba laiku išjunkite localhost HTTPS-only.

Nuo šiol visos vietinės URL naudoja prievartą 90
(„http://localhost:90/“, „http://localhost:90/info.php“, „http://localhost:90/phpmyadmin“).

Jeigu vėliau sukūsite kitus Virtual Host, į kiekvieno svetainės failą įdėkite <VirtualHost *:90> (arba pasirinktą prievartą).

3.2. MariaDB


MariaDB pakeičia MySQL Debianės srautuose. API yra kompatiškas daugumai PHP projektų.

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

Saugojimas po įdiegimo :

Debianėje MariaDB jau yra saugi numatytomis nuostatomis. Skriptas taip pat rodo:

Mariadb yra saugus pagal nutarimą Debianėje. Šio skripto vykdymas visų pirma nereikalingas...

Tačiau jį iškviečiame, kad aiškiai pasirinktume root autentifikacijos būdą:

Bash
sudo mariadb-secure-installation

Yra du galimybės. Pasirinkite vieną, pažymėkite jį, tada sekite nuorodas jei pasirinkote A / jei pasirinkote B toliau vadovėlyje.

Pasirinkimas A — paprastas Pasirinkimas B — saugiau
root autentifikacija SQL slaptažodis unix_socket
PhpMyAdmin / programų vartotojas root + slaptažodis (nekuriamas dev vartotojas) dev + slaptažodis (kuriamas po skripto vykdymo)
Terminalinis administratorius mariadb -u root -p sudo mariadb
Kuriamas dev vartotojas? Ne Taip (būtinas)

Varavimas — pasirinkimas A.
Prisijungti prie phpMyAdmin (ir galimai kitų programų) kaip root yra paprastiausias būdas.
Tai taip pat yra ne tvarkingiausias / nesaugiausias: išleistas root slaptažodis = visos duomenų bazės.
Galima naudoti tik privatus kompiuterį lokalioje sąsaloje.
Pasirinkimas B yra skirtas tiems, kurie ne nori jebkada išskleisti root internete.

Pasirinkimas A — root + slaptažodis (paprastas)


Atsakymai į klausimus mariadb-secure-installation:

Klausa Atsakymas
Dabartinis root slaptažodis Enter (tuščias)
Perjungti į unix_socket autentifikavimą n
Keisti root slaptažodį? Taip → pasirinkite slaptąjį žodį ir išsaugokite jį
Ištrinti anoniminės vartotojo duomenis? Taip
Neleisti root prisijungti iš eterno? Taip
Ištrinti testinę duombazę? Taip
Atkurti privilegijų lentelės? Taip

Patikrinti:

Bash
mariadb -u root -p

Jeigu pasirinkote variantą A, visame kitoje instrukcijoje naudokite tik root + šį slaptąjį žodį (phpMyAdmin, pavyzdžiai PDO, ir t.t.).
Nekurkite vartotoją dev.

Variantas B — unix_socket + vartotojas dev (saugiau)


Atsakymai į klausimus mariadb-secure-installation:

Klausa Atsakymas
Dabartinis root slaptažodis Enter (tuščias)
Perjungti į unix_socket autentifikavimą? Taip
Keisti root slaptažodį? ne
Ištrinti anoniminės vartotojo duomenis? Taip
Neleisti root prisijungti iš eterno? Taip
Ištrinti testinę duombazę? Taip
Atkurti privilegijų lentelės? Taip

Administratoriaus terminalas (nebereikia SQL slaptažodis root):

Bash
sudo mariadb

Dėl vartotojo dev varianto B:
phpMyAdmin gali prisijungti kaip root, jei root turi SQL slaptąjį žodį — tai yra variantas A.
Variantu B, root naudoja unix_socket: Mariadb priima tik tuos procesus, kurie jau yra root (sudo mariadb). Apache / phpMyAdmin dirba kaip www-data, todėl internetinis prisijungimas kaip root nepavyksta. Reikia SQL vartotojo su slaptažodžiu (dev).

Sukurkite tiesiogiai dev (internetinės svetainės / programų naudotoją visame toliau pateikiamo tutoje, jei pasirinkote variantą 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;

Pakeiskite change_me_strong_password tikru slaptažodžiu ir pažymėkite jį.

Patikrinkite:

Bash
mariadb -u dev -p

Jeigu pasirinkote variantą B visame toliau pateikiamo tutoje : phpMyAdmin, PDO, etc. → dev + šis slaptažodis. Niekada naudokite root internetinėje aplinkoje.

Griežtesnis variantas (tik viena duomenų bazė):

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;

Skiriasi užklausos scenarijaus klausimai (bendri dviem variantams)


Enter current password for root
Dabartinis root slaptažodis, kad leisti scenarijui. Šviežiai įdiegtame Debian 13: dažniausiai tuščias → Enter.

Switch to unix_socket authentication

  • N → variantas A (SQL slaptažodis).
  • Taip → variantas B (unix_socket Linux / sudo).

Change the root password?`**

  • Variantas A: Y + nustatykite slaptažodį.
  • Variantas B: n (nebūtinas dienoraštyje, jei naudojate unix_socket).

Remove anonymous users? → Y (negaliojančių vartotojų šalinimas yra būtinas visose variantuose). Disallow root login remotely? → Y (root galima prisijungti tik lokaliam sistemai; « disallow » = negali prisijungti iš eterno). Remove test database? → Y Reload privilege tables? → Y

Šioje mašinėje, kur šis vadovas buvo sekimas tiesiogiai, buvo pasirinktas variantas A (root paprastas, be dev). Variantas B yra dokumentuotas toms, kurioms jį pasirinkę.

3.3. PHP 8.4


Debian 13 teikia natyviai PHP 8.4. Nereikia Sury režimo.

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

Atsinaukinti Apache, kad įtrauktų PHP modulį:

Bash
sudo systemctl restart apache2

Patikrinti CLI:

Bash
php -v

Turite matyti eilutę tipo PHP 8.4.x.

Sukurti testavimo failą:

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

Atidarykite http://localhost:90/info.php, patikrinkite PHP 8.4, tada ištrinkite failą:

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

Ne laiskykite info.php būti esančia nepastovioje aplinkoje: jis pateikia serverio konfigūraciją.

3.4. phpMyAdmin


Būtina eiti šiais etapais: instaliuokite paketą (§3.4.1) → patikrinkite, kad failai egzistuoja → ** tik tada** įjunkite Apache (§3.3.2). Be paketo /etc/phpmyadmin/apache.conf nepasirinktas: ln sukurs nesukurtą junginį ir a2enconf išės klaidos su Conf phpmyadmin does not exist!.

3.4.1. Instalacija


Bash
sudo apt update
sudo apt install phpmyadmin -y

Instaluojant (debconf ekrane):

  1. Pasirinkite internetinį serverį: apache2 (Spauskite spąstą, paspauskite Tab ir Enter).
  2. Ar reikia konfigūruoti phpMyAdmin duomenų bazę su dbconfig-common? → Taip. MariaDB jau yra įdiegta; dbconfig-common sukurs jums baze ir vartotoją, kuris phpMyAdmin reikia. Atsakykite Ne, tik jei norėsite viską daryti rankiniu būdu (nebereikalingai paprastame kūrimo aplinkoje).
  3. Nustatykite slaptažodį MySQL/MariaDB vartotojui phpmyadmin (pasidalinkite šiuo slaptažodžiu; tai nėra tuo pačio root arba dev vartotojo slaptažodis, kuriu prisijunkite prie internetinės sąsajos).

Tikrinti — tęskite tik jei šie reikalavimai įmanomi :

Bash
dpkg -l phpmyadmin | grep '^ii'
ls -la /etc/phpmyadmin/apache.conf
  • Pirmoji komanda turėtų rodyti ii phpmyadmin
  • Antrąja bus išvardyta failas (ne « Nėra jokių failų »)

Jei phpmyadmin nėra ii, stojkite : įstatykite iš naujo (sudo apt install phpmyadmin -y) prieš pradedant konfigūruoti Apache.

3.4.2. Aktyvuokite Apache konfigūraciją


Darykite tik po tikrinimo §3.4.1.

Paketas suteikia /etc/phpmyadmin/apache.conf. Apache turėtų jį įkviesti per conf-available → a2enconf.

Dažniausiai diegimas jau sukūrė šią nuorodą. Patikrinkite:

Bash
ls -la /etc/apache2/conf-available/phpmyadmin.conf
  • Jeigu failas/nuoroda egzistuoja ir kyla į /etc/phpmyadmin/apache.conf → aktyvuokite ir atsinaujinkite tik štai:
Bash
sudo a2enconf phpmyadmin
sudo systemctl reload apache2
  • Kitu atveju, sukurkite nuorodą (su saugos kopija, jei failas jau užima šį pavadinimą) :
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 : Blokuoja, jei paketas nėra įdiegtas (apsaugojimas nuo trūkstamo simboliško junginio).
  • cp -a : Tikra saugos kopija prieš pakeitimą.
  • ln -sf : Nuoroda į paketo konfigūraciją.

3.4.3. Prieigos būdai


URL: http://localhost:90/phpmyadmin

  • Jeigu pasirinkote A : prisijungimas root + slaptažodis iš mariadb-secure-installation. Nėra dev.
  • Jeigu pasirinkote B : prisijungimas dev + slaptažodis sukurtas §3.2.
    Web prisijungimas root nepavyksta čia dėl unix_socket (jei pasirinkote A, root + slaptažodis veikia).

3.4.4. Vartotojas dev — atmintis / pašalinimas (tik B variantas)


Jeigu pasirinkote A : Nepaisykite šios daliai. Jūs visada naudosite root.

Jeigu pasirinkote B : dev jau sukurtas §3.2. Čia tik tuo atveju, jei pamiršate arba nukreipte į pradinę konfigūraciją.

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;

Pakeisti slaptažodį dev:

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

Atskira duomenų bazė (rekomenduojama projektui, visada variantas 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. Susirūpinimas su prisijungimu


Prisijungti kaip administratorius:

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

Išvardyti vartotojus:

SQL
SELECT User, Host, plugin FROM mysql.user;
  • Jeigu pasirinkote A: root turi slaptažodžio pluginą → phpMyAdmin = root.
  • Jeigu pasirinkote B: root daugiau tikėtina turės plugin = unix_socket → phpMyAdmin = dev.

Pakeisti slaptažodį:

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;

Išeiti:

SQL
EXIT;

3.4.6. Greitas saugojimas (lokaliai)


Lokaliniame kūrimo tinklapyje localhost prieigos paklausa dažniausiai užima. Jeigu norite toliau apriboti, redaguokite phpMyAdmin Apache konfigūraciją ir apribinkite prieigą, pvz.:

Require local

Tada:

Bash
sudo systemctl reload apache2

4. PHP konfigūravimas


4.1. Patikrinti aktyvų versiją


Bash
php -v
php -m

4.2. Daugelis PHP versijų (neprivaloma)


Jeigu vėliau įdiegiate kitas galimybes (pvz., naudojant Sury rašymą į PHP 8.5), pakeiskite CLI štai taip:

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

Apache mod_php atidarykite vieną PHP modulį kartu:

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

Pakeiskite phpX.Y į tikrai įdiegtą versiją.

4.3. „php.ini“ failas Apache


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

Po pakeitimų:

Bash
sudo systemctl restart apache2

Būdingi lokaliniams nustatymams:

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

5. Bendrosios failai


5.1. Apache


Rolis Kelias
Pagrindinė konfigūracija /etc/apache2/apache2.conf
Skaičiavimo priemonės /etc/apache2/ports.conf
Dokumentų šaknis /var/www/html/
Galimi tinklapių serveriai /etc/apache2/sites-available/
Įjungti tinklapių serveriai /etc/apache2/sites-enabled/
Numatytoji vhost konfigūracija /etc/apache2/sites-available/000-default.conf
Pavyzdiniai paslaugos logai /var/log/apache2/access.log
Klaidų logai /var/log/apache2/error.log

Įjungti / išjungti vhost:

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

5.2. PHP


Rolis Kelias
php.ini (Apache) /etc/php/8.4/apache2/php.ini
php.ini (CLI) /etc/php/8.4/cli/php.ini
Priedai žr. php -i | grep extension_dir

5.3. MariaDB


Rolis Kelias
Serverio konfigūracija /etc/mysql/mariadb.conf.d/50-server.cnf
Duomenys /var/lib/mysql/
Klaidų logai /var/log/mysql/error.log

5.4. phpMyAdmin


Rolis Kelias
Programos konfigūracija /etc/phpmyadmin/config.inc.php
Apache konfigūracija /etc/phpmyadmin/apache.conf
Logai /var/log/apache2/error.log ir access.log

6. Patvirtinimo sąrašas


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/ atsakoma
  • Apache klausiasi tinklo prievartos 90 (ne 80)
  • php -v rodo 8.4.x versiją
  • http://localhost:90/phpmyadmin atidaryta
  • Jeigu pasirinkimas A : phpMyAdmin veikia su root + slaptažodis (ne dev)
  • Jeigu pasirinkimas B : vartotojas dev sukurtas (§3.2) ir phpMyAdmin veikia su dev + slaptažodis
  • info.php ištrintas

7. Debian 13 įskaitos ypatumai


  • PHP 8.4 yra natūralus : nepakanka Sury reikalavimų ir apt-key (atsiejamas).
  • MariaDB yra 11.8 ; saugumo skriptas vadinasi mariadb-secure-installation.
  • Apache liko 2.4, su tokiomis įrankiais kaip a2enmod / a2ensite / systemctl.
  • Ši vadovė naudoja HTTP 90 portą (ports.conf + Virtual Host).
  • MariaDB: pasirinkimas A = paprastas root (ne dev) ; pasirinkimas B = unix_socket + dev. Pasirinkimas B yra skirtas tuo, kurie nori išvengti įspėjimo A.

8. Galimybės toliau


Kuriant vietinius projektus su unikalių domenų pavadinimu (monprojet.local), konfigūruokite Apache Virtual Host, nukreiptą į skirtą aplanką (bėgimo /var/www/html, jei norite). Tada pridėkite įrašą prie /etc/hosts.

Detaliau apie tai čia: Kaip sukurti Apache VirtualHost Debian 13 vietiniam PHP projektui

Jums taip pat gali patikti:

Komentarai

Kol kas nėra patvirtintų komentarų.

Prisijunkite su komentuotojo paskyra, kad galėtumėte komentuoti. Prisijungti.