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
cat /etc/os-release |
Turite matyti VERSION_CODENAME=trixie (Debian 13).
2.2. Pakavų atnaujinimas
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:
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:
sudo systemctl start apache2 |
sudo systemctl status apache2 --no-pager |
Naudingos komandos:
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 :
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 :
sudo nano /etc/apache2/sites-available/000-default.conf |
Pakeiskite :
<VirtualHost *:80> |
iki :
<VirtualHost *:90> |
C. Testuoti konfigūraciją, tada atnaujinti :
sudo apache2ctl configtest |
sudo systemctl reload apache2 |
„configtest“ turėtų rodyti „Syntax OK“.
D. Patikrinti, ar 90 prievartas klausiasi :
ss -tlnp | grep ':90' |
- Naršyklės prieigos adresas: http://localhost:90/
Naudojant, būtina įrašyti
http://, nehttps://.
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 tiesiogiaihttp://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ų.
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ą:
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ų) kaiprootyra paprastiausias būdas.
Tai taip pat yra ne tvarkingiausias / nesaugiausias: išleistasrootslaptažodis = visos duomenų bazės.
Galima naudoti tik privatus kompiuterį lokalioje sąsaloje.
Pasirinkimas B yra skirtas tiems, kurie ne nori jebkada išskleistirootinternete.
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:
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):
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) :
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:
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ė):
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_socketLinux /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 (
rootpaprastas, bedev). Variantas B yra dokumentuotas toms, kurioms jį pasirinkę.
3.3. PHP 8.4
Debian 13 teikia natyviai PHP 8.4. Nereikia Sury režimo.
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į:
sudo systemctl restart apache2 |
Patikrinti CLI:
php -v |
Turite matyti eilutę tipo PHP 8.4.x.
Sukurti testavimo failą:
echo '<?php phpinfo();' | sudo tee /var/www/html/info.php |
Atidarykite http://localhost:90/info.php, patikrinkite PHP 8.4, tada ištrinkite failą:
sudo rm /var/www/html/info.php |
Ne laiskykite
info.phpbū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
sudo apt update |
sudo apt install phpmyadmin -y |
Instaluojant (debconf ekrane):
- Pasirinkite internetinį serverį: apache2 (Spauskite spąstą, paspauskite Tab ir Enter).
- Ar reikia konfigūruoti phpMyAdmin duomenų bazę su dbconfig-common? → Taip.
MariaDB jau yra įdiegta;
dbconfig-commonsukurs jums baze ir vartotoją, kuris phpMyAdmin reikia. Atsakykite Ne, tik jei norėsite viską daryti rankiniu būdu (nebereikalingai paprastame kūrimo aplinkoje). - Nustatykite slaptažodį MySQL/MariaDB vartotojui
phpmyadmin(pasidalinkite šiuo slaptažodžiu; tai nėra tuo pačiorootarbadevvartotojo slaptažodis, kuriu prisijunkite prie internetinės sąsajos).
Tikrinti — tęskite tik jei šie reikalavimai įmanomi :
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:
ls -la /etc/apache2/conf-available/phpmyadmin.conf |
- Jeigu failas/nuoroda egzistuoja ir kyla į
/etc/phpmyadmin/apache.conf→ aktyvuokite ir atsinaujinkite tik štai:
sudo a2enconf phpmyadmin |
sudo systemctl reload apache2 |
- Kitu atveju, sukurkite nuorodą (su saugos kopija, jei failas jau užima šį pavadinimą) :
# 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ėradev. - Jeigu pasirinkote B : prisijungimas
dev+ slaptažodis sukurtas §3.2.
Web prisijungimasrootnepavyksta čia dėlunix_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ą.
sudo mariadb |
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:
ALTER USER 'dev'@'localhost' IDENTIFIED BY 'new_password'; |
FLUSH PRIVILEGES; |
EXIT; |
Atskira duomenų bazė (rekomenduojama projektui, visada variantas B):
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:
# Si option A : |
mariadb -u root -p |
|
# Si option B : |
sudo mariadb |
Išvardyti vartotojus:
SELECT User, Host, plugin FROM mysql.user; |
- Jeigu pasirinkote A:
rootturi slaptažodžio pluginą → phpMyAdmin =root. - Jeigu pasirinkote B:
rootdaugiau tikėtina turėsplugin=unix_socket→ phpMyAdmin =dev.
Pakeisti slaptažodį:
-- 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:
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:
sudo systemctl reload apache2 |
4. PHP konfigūravimas
4.1. Patikrinti aktyvų versiją
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:
sudo update-alternatives --display php |
sudo update-alternatives --config php |
Apache mod_php atidarykite vieną PHP modulį kartu:
# 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
sudo nano /etc/php/8.4/apache2/php.ini |
Po pakeitimų:
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:
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
# 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 -vrodo 8.4.x versiją - http://localhost:90/phpmyadmin atidaryta
- Jeigu pasirinkimas A : phpMyAdmin veikia su
root+ slaptažodis (nedev) - Jeigu pasirinkimas B : vartotojas
devsukurtas (§3.2) ir phpMyAdmin veikia sudev+ slaptažodis -
info.phpiš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(nedev) ; 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
Komentarai
Kol kas nėra patvirtintų komentarų.
Prisijunkite su komentuotojo paskyra, kad galėtumėte komentuoti. Prisijungti.