Hur man installerar phpMyAdmin med Nginx på Debian 12, 11 eller 10

phpMyAdmin är ett allmänt använt verktyg med öppen källkod skrivet i PHP, designat för att hantera administrationen av MySQL och MariaDB över webben. Det erbjuder ett intuitivt grafiskt gränssnitt för att utföra olika databasoperationer som att skapa, ändra och ta bort databaser, tabeller, fält eller rader, exekvera SQL-satser och hantera användarbehörigheter. Att installera phpMyAdmin på Debian 12, 11 eller 10 innebär att man ställer in LEMP-stacken (Linux, NGINX, MySQL/MariaDB, PHP) manuellt, följt av att ladda ner och konfigurera den senaste versionen av phpMyAdmin.

Att använda phpMyAdmin förenklar databashanteringen, vilket gör den tillgänglig även för användare som kanske inte är bekväma med att använda kommandoraden för databasoperationer. Den här guiden leder dig genom stegen för att manuellt installera LEMP-stacken, konfigurera phpMyAdmin och säkra din installation.

Installera LEMP Stack på Debian för phpMyAdmin

Steg 1: Uppdatera Debian System

Börja uppdatera ditt Debiansystem med de senaste paketen för en säker och felfri installation. Detta proaktiva steg syftar till att minska sannolikheten för konflikter under installationsprocessen.

sudo apt update && sudo apt upgrade

Om du uppdaterar kärnan eller många paket är en omstart nödvändig.

Steg 2: Installera Nginx

Installera först Nginx för att skapa en LEMP-stack. Kör följande kommando:

sudo apt install nginx

Normalt aktiverar systemet Nginx-tjänsten som standard efter installationen. Kontrollera dock alltid försiktigt dess status och se till att den fungerar som förväntat:

systemctl status nginx

Om servern inte är aktiv, använd följande kommando för att aktivera Nginx och se till att den startar automatiskt vid varje omstart:

sudo systemctl enable nginx --now

Detta kommando installerar standardversionen av Nginx.

Obs: Om du är intresserad av att distribuera den senaste stabila eller huvudversionen av Nginx, överväg att följa vår guide om hur man uppgraderar Nginx på Debian 12, 11 eller 10 Linux.

Steg 3: Installera MariaDB

Installera sedan databaskomponenten i LEMP-stackinstallationen. Många väljer MariaDB framför MySQL på grund av dess överlägsna prestanda och ytterligare funktioner.

För att installera MariaDB, kör följande:

sudo apt install mariadb-server mariadb-client

Obs: Om du vill installera en annan version av MariaDB från de officiella MariaDB.org-förråden, vår guide om installera MariaDB 11.x eller 10.x på Debian 12, 11 eller 10 Linux.

När det är klart, bekräfta MariaDB-tjänstens aktivering och korrekta funktion, liknande din verifiering av Nginx:

systemctl status mariadb

Om MariaDB inte är aktiverat, använd kommandot nedan för att aktivera det och se till att det startar vid omstart.

sudo systemctl enable mariadb --now

För att stärka din MariaDB:s säkerhet, kör det medföljande säkerhetsskriptet, mysql_secure_installation, under installationsprocessen. Standardinställningarna för en ny MariaDB-installation lämnar ofta sårbarheter som skadliga aktörer kan utnyttja.

sudo mysql_secure_installation

Att köra säkerhetsskriptet guidar dig genom flera steg för att stärka din MariaDB:s säkerhet. Dessa steg innebär att ställa in root-lösenordet, begränsa fjärråtkomst, ta bort anonyma användarkonton och ta bort testdatabasen.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y <---- Type Y then press the ENTER KEY.
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y <---- Type Y then press the ENTER KEY.
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y <---- Type Y then press the ENTER KEY.
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y <---- Type Y then press the ENTER KEY.
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Steg 4: Installera PHP

Installera PHP-tjänsten för att slutföra LEMP-stackinstallationen. PHP, genom PHP-FPM-tjänsten och ytterligare moduler som behövs av phpMyAdmin, fungerar som bryggan mellan Nginx och MariaDB.

Obs: Om du vill installera en specifik version av PHP, se vår guide på installera valfri PHP 8.x-version som är tillgänglig på Debian 12, 11 eller 10 Linux.

För att distribuera PHP och PHP-FPM, tillsammans med de nödvändiga modulerna på ditt Debiansystem, kör följande:

sudo apt install php-fpm php-mbstring php-bcmath php-xml php-mysql php-common php-gd php-cli php-curl php-zip php-gd

Efter PHP-installationen, bekräfta statusen för PHP-tjänsten, precis som du gjorde för MariaDB och Nginx.

För PHP 8.2, som är standard på Debian Bookworm, till exempel, skulle det specifika kommandot vara:

systemctl status php8.2-fpm

Om PHP-tjänsten förblir inaktiv, använd följande kommando för att aktivera den och se till att den startar automatiskt vid varje omstart.

sudo systemctl enable php-fpm --now

Slutför phpMyAdmin med Nginx och Debian

Det här avsnittet förklarar proceduren för att skaffa phpMyAdmin-arkivet och ställa in nödvändiga kataloger, behörigheter och databasposter.

Steg 1: Skapa en superanvändare för phpMyAdmin

Vanligtvis kan du komma åt phpMyAdmin med hjälp av root-användaren. Men för att följa robusta säkerhetsrutiner, skapa en distinkt superanvändare istället för att använda rotanvändaren. Detta koncept ligger i linje med Linux-praxis att utnyttja en sudo-användare istället för att logga in direkt som root.

Autentisera dig först i terminalgränssnittet:

sudo mariadb -u root

Efter framgångsrik autentisering innebär det efterföljande steget att skapa en databas i MariaDB-terminalen.

CREATE USER PMAUSER IDENTIFIED BY 'password here change';

Skapa sedan en användare och ge dem de nödvändiga behörigheterna, som illustreras nedan:

GRANT ALL PRIVILEGES ON *.* TO 'PMAUSER'@'localhost' IDENTIFIED BY 'password here change' WITH GRANT OPTION;

Ersätter platshållarlösenordet "byt lösenord här" med ett säkert lösenord är avgörande innan du utför kommandona.

När du har etablerat användaren och ställt in behörigheter, kom ihåg att uppdatera privilegierna för ändringarna.

FLUSH PRIVILEGES;

För att avsluta MariaDB-terminalen, använd följande kommando.

QUIT;

Steg 2: Ladda ner phpMyAdmin-källkoden

Det här avsnittet belyser hur man skaffar källarkivet för phpMyAdmin. Att utnyttja kommandoradsterminalen ger en effektiv metod för att ladda ner den senaste versionen på alla språk.

För att ladda ner phpMyAdmin-arkivet, kör följande kommando i terminalen.

DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
URL="$(echo $DATA | cut -d ' ' -f 3)"
VERSION="$(echo $DATA | cut -d ' ' -f 1)"
wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.gz

Om du vill ha den engelska versionen av phpMyAdmin, ersätt den sista raden i föregående kommando med följande:

wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-english.tar.gz

Efter nedladdningen är det efterföljande steget att extrahera phpMyAdmin-arkivet genom att utföra kommandot nedan:

tar xvf phpMyAdmin-${VERSION}-all-languages.tar.gz

Steg 3: Konfigurera phpMyAdmin

Nästa fas involverar migrering av alla extraherade filer till deras slutdestination i /var/www/-katalogen med hjälp av mv-kommandot.

sudo mv phpMyAdmin-*/ /var/www/phpmyadmin

När du installerar phpMyAdmin från källan kommer du att observera att en TMP-katalog inte existerar som standard. Följaktligen skulle det vara bäst om du skapade den här katalogen manuellt.

sudo mkdir /var/www/phpmyadmin/tmp

phpMyAdmin-katalogen innehåller en standardfil för konfigurationsexempel, som du måste byta namn på för att phpMyAdmin ska känna igen den. Använd kommandot CP för att skapa en kopia av standardfilen i katalogen /var/www/phpmyadmin/, vilket säkerställer en säkerhetskopia.

För att replikera config.sample.inc.php till config.inc.php, kör följande kommando:

sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php

När du har kopierat filen öppnar du den med en föredragen textredigerare. I det här exemplet använder vi nanotextredigeraren:

sudo nano /var/www/phpmyadmin/config.inc.php

phpMyAdmin använder ett Blowfish-chiffer. För att ändra denna inställning, navigera till raden som börjar med $cfg['blowfish_secret'].

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Tilldela en sträng med 32 slumpmässiga tecken inom de enkla citattecken. Använd programmet pwgen som en bekväm metod för att generera denna sträng. Kör följande terminalkommando för att installera pwgen:

Detta håller alla åtgärder tydliga och direkt tillskrivna användaren (eller den som gör åtgärden).

sudo apt install pwgen 

Efter installationen, kör kommandot nedan:

pwgen -s 32 1

Detta kommando kommer att generera en sträng med 32 slumpmässiga tecken för att fungera som blåsfiskens hemlighet.

Exempel på att infoga chiffer i konfigurationsfilen (Kopiera inte):

UvqAlsvTxRdYIyO8TnlkJsVQaWs2LfgL

Exempel i konfigurationsfilen:

För en majoritet av användarna bör de återstående standardinställningarna vara tillräckliga. Men om din server finns på en annan server i ditt nätverk, måste du hitta och ändra raden $cfg['Servers'][$i]['host'] för att återspegla den privata IP-adressen. En illustration av denna modifiering visas nedan:

$cfg['Servers'][$i]['host'] = '192.168.55.101';

Steg 4: Konfigurera filbehörigheter för phpMyAdmin

Att tilldela behörigheter till katalogägaren till www-användare är avgörande för att säkerställa kompatibilitet och säkerhet.

Så här ställer du in chown-behörigheten:

sudo chown -R www-data:www-data /var/www/phpmyadmin/

Så här ställer du in chmod-behörigheten:

sudo find /var/www/phpmyadmin/ -type d -exec chmod 755 {} \;
sudo find /var/www/phpmyadmin/ -type f -exec chmod 644 {} \;

I det följande avsnittet kommer vi att diskutera att skapa och ställa in Nginx-tjänsten Block för din phpMyAdmin-tjänst.

Konfigurera ett NGINX-serverblock för phpMyAdmin

För att komma åt webbgränssnittet phpMyAdmin, skapa ett NGINX-serverblock som ett viktigt steg. Etablera en distinkt underdomän för att stärka säkerhetsåtgärder och avvärja brute-force-attacker, vilket rekommenderas starkt. Namnge gärna denna underdomän vad du än finner lämpligt.

Steg 1: Skapa Nginx-serverblock för phpMyAdmin på Debian

Låt oss börja med att skapa och öppna ditt serverblock med nanotextredigeraren. Kör följande kommando:

sudo nano /etc/nginx/sites-available/phpmyadmin.conf

Steg 2: Konfigurera Nginx Server Block

När du lyckats öppna serverblockfilen, kopiera och klistra in följande text i filen. Se till att ersätta domänens URL med din egen:

server {
  listen 80;
  listen [::]:80;
  server_name pma.example.com;
  root /var/www/phpmyadmin/;
  index index.php index.html index.htm index.nginx-debian.html;

  access_log /var/log/nginx/phpmyadmin_access.log;
  error_log /var/log/nginx/phpmyadmin_error.log;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ ^/(doc|sql|setup)/ {
    deny all;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /\.ht {
    deny all;
  }
}

Här är några viktiga punkter att notera om exemplet ovan:

  • /run/php/php8.2-fpm.sock; – Den här sökvägen måste återspegla den version av PHP-FPM som används. Det kan till exempel vara 8.3, 8.1, 8.0, 7.4 osv.
  • root /var/www/phpmyadmin/; – Detta hänvisar till vägen som definieras i denna guide. Om din phpMyAdmin finns någon annanstans, se till att uppdatera den här raden i enlighet med detta.

Om du är den enda personen som kommer åt servern från en statisk IP-adress, överväg att lägga till följande kod ovanför den första platsposten:

  allow <your ip address>;
  deny all; 

  location / {
    try_files $uri $uri/ /index.php;
  }

Ovanstående kod blockerar effektivt obehöriga besökare på sidan med ett 403-fel, vilket ger åtkomst enbart till din IP-adress. Det är ett rejält försvar mot brute-force-attacker, även om det kanske inte passar alla inställningar.

Steg 3: Spara och avsluta textredigeraren

För att spara dina ändringar, tryck på (CTRL+O), och för att avsluta redigeraren, tryck på (CTRL+X).

Steg 4: Skapa en symbollänk till konfigurationsfilen

Skapa sedan en symbolisk länk från katalogen som är tillgänglig för webbplatser till den katalog som är aktiverad för webbplatser där konfigurationsfilen finns:

sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/

Steg 5: Utför ett torrkörningstest

Ett torrkörningstest är avgörande innan du hoppar för att starta om NGINX-tjänsten. Denna åtgärd är väsentlig i levande miljöer och säkerställer att eventuella ändringar av dina konfigurationsfiler inte utlöser NGINX-fel:

sudo nginx -t

Om din konfiguration är felfri kommer följande utdata att välkomna dig:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Steg 6: Starta om din NGINX-tjänst

Slutligen, för att göra ändringarna effektiva, starta om din NGINX-tjänst:

sudo systemctl restart nginx

Det avslutar det här avsnittet om att skapa ett NGINX-serverblock för phpMyAdmin. I nästa avsnitt kommer du att öppna och logga in på phpMyAdmins webbgränssnitt.

Navigera i phpMyAdmin webbgränssnitt

Börja din interaktion med phpMyAdmins gränssnitt genom att starta din föredragna webbläsare. Mata in pma.example.com i adressfältet och se till att du ersätter "exempel" med ditt domännamn eller server-IP-adress. Kom ihåg att du också kan använda localhost i interna miljöer.

Efter att ha gjort detta kommer du att landa på inloggningsskärmen för phpMyAdmin, som visas i följande bild:

Navigera genom inloggningsskärmen genom att ange dina referenser och välja "fortsätt" eller "logga in". Denna åtgärd ger dig tillgång till phpMyAdmin-instrumentpanelen, som den efterföljande bilden visar.

Som förstagångsanvändare av phpMyAdmin kanske du vill bekanta dig med "statussidan". Det ger en omfattande inblick i din databas status och hälsa.

Utöver statistiksidan har phpMyAdmin också ett "rådgivaresystem". Den här praktiska funktionen ger förslag på prestandaförbättringar.

Det är dock klokt att komma ihåg att även om rådgivaren rekommenderar att du väntar i 24 timmar, anser de flesta att minst 72 timmar är mer optimalt. Detta säkerställer att databassamplingen sker under en längre period, vilket ger mer exakta rekommendationer.

Dessutom bör rådgivaresystemet inte vara din enda grund för ändringar. Att ändra dina MySQL- eller MariaDB-konfigurationsfiler kräver noggrann övervägande, grundlig testning och möjligen flera iterationer. Målet är att optimera konfigurationerna för bästa resultat, och det tar ofta tid.

Säkra phpMyAdmin via Let's Encrypt SSL-certifikat

Skapa ett SSL-certifikat via Certbot

För att stärka säkerheten för din phpMyAdmin-instans, kör Nginx över HTTPS med ett SSL-certifikat. Att utnyttja Let's Encrypt, en känd certifikatmyndighet som erbjuder gratis, automatiserade och öppna SSL-certifikat, är den mest enkla metoden.

Installera först certbot-paketet, som hjälper till att hantera Let's Encrypt SSL-certifikat, genom att köra:

sudo apt install python3-certbot-nginx -y

När du har slutfört installationen av certbot-paketet, skapa ditt SSL-certifikat genom att köra:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d pma.example.com

När du initierar certifikatinstallationsprocessen:

  • En uppmaning kommer att fråga om att ta emot e-postmeddelanden från EFF (Electronic Frontier Foundation).
  • Oavsett om du håller med (Y) eller inte håller med (N), kommer systemet automatiskt att installera och konfigurera ditt TLS-certifikat.
  • Konfigurationen omfattar att genomdriva HTTPS 301-omdirigeringar, lägga till ett Strict-Transport-Security-huvud och implementera OCSP-häftning.
  • Kom ihåg att ersätta e-post och domännamn i kommandot med dina exakta uppgifter.

När du har slutfört den här konfigurationen migrerar din webbadress från HTTP://pma.example.com till HTTPS://pma.example.com, vilket automatiskt omdirigerar all åtkomst till den tidigare HTTP-adressen till den säkra HTTPS-adressen.

Skapa ett Cron-jobb för SSL-förnyelse

Skapa ett cron-jobb som automatiskt förnyar dina certifikat för att effektivisera processen ytterligare. Certbot tillhandahåller ett skript för automatisk förnyelse för detta ändamål. Innan du ställer in det här jobbet, utför noggrant ett torrkörningstest för att bekräfta att allt fungerar korrekt med följande kommando:

sudo certbot renew --dry-run

För att schemalägga den automatiska förnyelsen, öppna crontab-filen genom att köra:

sudo crontab -e

Kontrollera regelbundet att certifikatet förnyas – minst en gång dagligen – för att säkerställa att ditt certifikat förblir giltigt. Om en förnyelse blir nödvändig kommer skriptet automatiskt att uppdatera certifikatet. Använd cron-syntaxen för att ställa in förnyelsen vid önskad tidpunkt.

00 00 */1 * * /usr/sbin/certbot-auto renew

Slutsats

Med phpMyAdmin framgångsrikt installerat och konfigurerat på ditt Debian-system kan du effektivt hantera dina MySQL- eller MariaDB-databaser genom ett användarvänligt webbgränssnitt. Regelbundna uppdateringar och säkerhetskonfigurationer säkerställer att ditt databashanteringsverktyg förblir säkert och uppdaterat. Njut av bekvämligheten och kraftfulla funktioner som phpMyAdmin erbjuder för att hantera dina databaser på Debian.

Joshua James
Följ mig
Senaste inläggen av Joshua James (se alla)

Lämna en kommentar