Hur man installerar Linux, Nginx, MySQL, PHP (LEMP) Stack på Ubuntu 23.04
För att hämta Ubuntu Server 23.04 klicka här
Introduktion
LEMP-mjukvarustacken är en grupp programvara som kan användas för att betjäna dynamiska webbsidor och webbapplikationer skrivna i PHP. Detta är en förkortning som beskriver ett L inux operativsystem, med en Nginx (uttalas som ” Engine -X”) webbserver. Backend-datan lagras i M ySQL-databasen och den dynamiska behandlingen hanteras av P HP.
Den här guiden visar hur man installerar en LEMP-stack på en Ubuntu 23.04-server. Operativsystemet Ubuntu tar hand om Linux-delen av stacken. Vi kommer att beskriva hur du får igång resten av komponenterna.
Förutsättningar
För att slutföra denna handledning måste du ha en Ubuntu 23.04-server med ett icke-root- sudo aktiverat användarkonto och en grundläggande brandvägg.
Steg 1 — Installera Nginx och uppdatera brandväggen
För att visa webbsidor för webbplatsbesökare kommer du att använda Nginx, en högpresterande webbserver. Du kommer att använda APT-pakethanteraren för att skaffa denna programvara.
Eftersom det här är första gången du använder apt i den här sessionen, börja med att uppdatera din servers paketindex:
sudo apt update
Installera sedan Nginx med:
sudo apt install nginx
För att tillåta trafik på port 80 i brandväggen, använd Apacheprofilen:
sudo ufw allow 'Nginx HTTP'
http://din_servers_ip
Nedan är ett exempel på Nginx standardwebbsida:
Om du kan se den här sidan är din webbserver korrekt installerad och tillgänglig via din brandvägg.
Steg 2 — Installera MySQL
Nu när du har en webbserver igång måste du installera databassystemet för att kunna lagra och hantera data för din webbplats. MySQL är ett populärt databashanteringssystem som används inom PHP-miljöer.
Återigen, använd apt för att skaffa och installera denna programvara:
sudo apt install mysql-server
När du uppmanas, bekräfta installationen genom att skriva Y och sedan ENTER.
Öppna mysql, skapa root användare och lösenord och sedan exit för att gå ur mysql.
Kom ihåg att välja ett starkt lösenord här för root där vi har ”ditt_lösenord”:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'ditt_lösenord';
exit;
När installationen är klar rekommenderar vi att du kör ett säkerhetsskript som kommer förinstallerat med MySQL. Detta skript tar bort vissa osäkra standardinställningar och låser åtkomst till ditt databassystem. Starta det interaktiva skriptet genom att köra:
sudo mysql_secure_installation
Fyll i lösenordet för root som du skapade tidigare.
Detta kommer att fråga om du vill konfigurera VALIDATE PASSWORD PLUGIN.
Svara Y ja, eller något annat för att fortsätta utan att aktivera, jag brukar svara nej.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
Nästa fråga gäller om du vill byta lösenordet för root, svara nej.
För resten av frågorna, tryck Y och tryck på ENTER tangenten vid varje prompt. Detta kommer att ta bort några anonyma användare och testdatabasen, inaktivera fjärrinloggningar för root och ladda dessa nya regler så att MySQL omedelbart lagrar de ändringar du har gjort.
När du är klar, testa om du kan logga in på MySQL-konsolen som root med lösenordet du skapade genom att skriva:
mysql -u root -p
För att avsluta MySQL-konsolen, skriv:
exit;
Steg 3 — Installera PHP
Du har Nginx installerat för att publisera ditt innehåll och MySQL installerat för att lagra och hantera dina data. Nu kan du installera PHP för att bearbeta kod och generera dynamiskt innehåll för webbservern.
Medan Apache bäddar in PHP-tolken i varje begäran, kräver Nginx ett externt program för att hantera PHP-bearbetning och fungera som en brygga mellan PHP-tolken själv och webbservern. Detta möjliggör bättre övergripande prestanda på de flesta PHP-baserade webbplatser, men det kräver ytterligare konfiguration. Du måste installera php8.1-fpm, som står för ”PHP fastCGI process manager” och använder den aktuella versionen av PHP (i skrivande stund), för att berätta för Nginx att skicka PHP-förfrågningar till denna programvara för bearbetning. Dessutom behöver du php-mysql, en PHP-modul som gör att PHP kan kommunicera med MySQL-baserade databaser. Core PHP-paket kommer automatiskt att installeras som beroenden.
För att installera paketen php8.1-fpm och php-mysql, kör:
sudo apt install php8.1-fpm php-mysql
Du har nu dina PHP-komponenter installerade. Därefter konfigurerar du Nginx för att använda dem.
Steg 4 — Konfigurera Nginx för att använda PHP-processorn
När vi använder Nginx webbserver kan vi skapa serverblock (liknande virtuella värdar i Apache) för att kapsla in konfigurationsdetaljer och vara värd för mer än en domän på en enda server. I den här guiden kommer vi att använda din_domän som ett exempel på domännamn.
På Ubuntu 22.04 har Nginx ett serverblock aktiverat som standard och är konfigurerat att publisera dokument från en katalog på /var/www/html. Även om detta fungerar bra för en enda webbplats kan det bli svårt att hantera om du är värd för flera webbplatser. Istället för att modifiera /var/www/html skapar vi en katalogstruktur inom /var/www för din_domän -webbplatsen, och lämnar /var/www/html på plats som standardkatalog som ska visas om en klientförfrågan inte matchar någon annan webbplats.
Skapa rotwebbkatalogen för din_domän enligt följande:
sudo mkdir /var/www/din_domän
Tilldela sedan äganderätten till katalogen med $USER miljövariabeln, som refererar till din nuvarande systemanvändare:
sudo chown -R $USER:$USER /var/www/din_domän
Öppna sedan en ny konfigurationsfil i Nginxs sites-availablekatalog med hjälp av din föredragna kommandoradsredigerare. Här kommer vi att använda nano:
sudo nano /etc/nginx/sites-available/your_domain
Detta skapar en ny tom fil. Infoga följande konfiguration
/etc/nginx/sites-available/din_domän
server {
listen 80;
server_name din_domän www.din_domän;
root /var/www/din_domän;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Spara och stäng filen när du är klar. Om du använder nano gör du det genom att trycka på CTRL+X, sedan Y och ENTER.
Aktivera din konfiguration genom att länka till konfigurationsfilen från Nginx sites-enabled katalog:
sudo ln -s /etc/nginx/sites-available/din_domän /etc/nginx/sites-enabled/
Ta sedan bort länken till standardkonfigurationsfilen från /sites-enabled/katalogen:
sudo unlink /etc/nginx/sites-enabled/default
Detta kommer att berätta för Nginx att använda konfigurationen nästa gång den laddas om. Du kan testa din konfiguration för syntaxfel genom att köra följande:
sudo nginx -t
Om några fel rapporteras, gå tillbaka till din konfigurationsfil för att granska dess innehåll innan du fortsätter.
När du är redo laddar du om Nginx för att tillämpa ändringarna:
sudo systemctl reload nginx
Din nya webbplats är nu aktiv, men webbroten är fortfarande tom. Skapa en fil på den platsen för att testa att den virtuella värden fungerar som förväntat: /var/www/din_domän index.html
nano /var/www/din_domän/index.html
Inkludera följande innehåll i den här filen:
/var/www/din_domän/index.html
<html>
<head>
<title>din_domän website</title>
</head>
<body>
<h1>Hello World!</h1>
<p>This is the landing page of<strong>din_domän</strong>.</p>
</body>
</html>
Spara och stäng filen, gå sedan till din webbläsare och fyll i serverns domännamn eller IP-adress:
http://server_domän_eller_IP
Din webbsida bör återspegla innehållet i filen du just redigerade:
Hello World!
This is the landing page of din_domän.
Om du får den här sidan betyder det att ditt Nginx-serverblock fungerar som förväntat.
Du kan lämna den här filen på plats som en tillfällig målsida för din applikation tills du konfigurerar en index.php fil för att ersätta den. När du har gjort det, kom ihåg att ta bort eller byta namn på index.html filen från din dokumentrot, eftersom index.html som standard skulle ha företräde framför index.php.
Din LEMP-stack är nu helt konfigurerad. I nästa steg skapar du ett PHP-skript för att testa att Nginx faktiskt kan hantera .php filer på din nykonfigurerade webbplats.
Steg 5 — Testa PHP med Nginx
Din LEMP-stack bör nu vara helt inställd. Du kan testa det för att verifiera att Nginx korrekt kan lämna .php över filer till din PHP-processor.
Du kan göra detta genom att skapa en PHP-testfil i din dokumentrot. Öppna en ny fil som heter info.php i din dokumentrot i din föredragna textredigerare:
sudo nano /var/www/din_domän/info.php
Detta öppnar en tom fil. Lägg till följande text, som är giltig PHP-kod, inuti filen:
<?php phpinfo();
När du är klar, spara och stäng filen.
För att testa det här skriptet, gå till din webbläsare och fyll i din servers domännamn eller IP-adress, följt av skriptnamnet, som i det här fallet är info.php:
http://server_domän_eller_IP/info.php
Här är ett exempel på PHP-standardwebbsidan:
Den här sidan ger information om din server utifrån PHP. Det är användbart för felsökning och för att säkerställa att dina inställningar tillämpas korrekt.
Om du ser den här sidan i din webbläsare fungerar din PHP-installation som förväntat.
Efter att ha kontrollerat relevant information om din PHP-server via den sidan, är det bäst att ta bort filen du skapade eftersom den innehåller känslig information om din PHP-miljö och din Ubuntu-server. Använd rm för att göra det:
sudo rm /var/www/din_domän/info.php
Du kan alltid återskapa den här sidan om du behöver komma åt informationen igen senare.
0 kommentarer