Kuinka asentaa Linux, Nginx, MySQL, PHP (LEMP-pino) Ubuntulle
Johdanto
LEMP-ohjelmistopaketti palvelee dynaamisia verkkosivuja ja PHP:llä kirjoitettuja verkkosovelluksia. Se on lyhenne, joka kuvaa Linux-käyttöjärjestelmää, Nginx (lausutaan kuten “Engine-X”) -verkkopalvelinta. Taustalla oleva data tallennetaan MySQL-tietokantaan ja dynaaminen käsittely hoidetaan PHP:llä.
Tämä opas näyttää, kuinka LEMP-pino asennetaan Ubuntu-palvelimelle. Ubuntu-käyttöjärjestelmä huolehtii pinon Linux-osiosta. Kuvataan, kuinka saada loput komponenteista toimimaan.
Huomautus: Tämä opas on pääasiassa tarkoitettu Ubuntu 22.04 LTS:lle, jossa on PHP 8.1. Ubuntu 24.04 LTS -käyttäjien tulee säätää PHP-version viittaukset
php8.1-fpm:stäphp8.3-fpm:ksi kaikissa komennoissa. Muista myös päivittää kaikki PHP-FPM-sokettipolut Nginx-konfiguraatiossasi (esim. käytä/run/php/php8.3-fpm.sockUbuntulle 24.04).
Kuinka asentaa Linux, Nginx, MySQL, PHP (LEMP-pino) Ubuntulle
- Nginx-verkkopalvelimen asentaminen
- MySQL:n asentaminen
- PHP:n asentaminen
- Nginxin määrittäminen käyttämään PHP-prosessoria
- PHP:n testaaminen Nginxillä
- Testataan tietokantayhteyttä PHP:stä
Edellytykset
Käytä ei-root-sudo-käyttäjää Ubuntulla, jossa UFW-palomuuri on käytössä. Noudata alkuperäistä Ubuntu-palvelimen asennusopastamme tämän määrittämiseksi.
Vaihe 1 – Nginx-verkkopalvelimen asentaminen
Näyttääksesi verkkosivuja sivuston vierailijoille käytät Nginxiä, suorituskykyistä verkkopalvelinta. Saat tämän ohjelmiston käyttämällä APT-paketinhallintaa.
Päivitä palvelimesi pakettien hakemisto, ja asenna sitten Nginx:
sudo apt updateTämän jälkeen suorita apt install asentaaksesi Nginxin:
sudo apt install nginxKun sinulta kysytään, paina Y ja ENTER vahvistaaksesi, että haluat asentaa Nginx:in. Asennuksen valmistuttua Nginx-verkkopalvelin on aktiivinen ja toimii Ubuntu-palvelimellasi.
Varmista, että Nginx on käynnissä:
sudo systemctl status nginxSinun pitäisi nähdä tuloste, joka osoittaa, että Nginx on aktiivinen:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since...Ubuntussa Nginx on konfiguroitu käynnistymään asennuksen yhteydessä.
Salli HTTP-liikenne ufw-palomuurin kautta. Nginx rekisteröi useita UFW-sovellusprofiileja asennuksen yhteydessä. Tarkista käytettävissä olevat profiilit:
sudo ufw app listAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSHOta käyttöön tiukin profiili, joka sallii tarvittavan liikenteen. Koska SSL ei ole vielä määritetty, salli vain HTTP-liikenne portissa 80:
Ota tämä käyttöön suorittamalla seuraava:
sudo ufw allow 'Nginx HTTP'
Vahvista palomuurimuutos:
sudo ufw statusTämä tuloste näyttää, että HTTP-liikenne on nyt sallittua:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)Testataksesi Nginx-palvelimen verkkotunnustoiminnallisuuden, siirry osoitteeseen http://your_domain käyttäen suosikkiselaintasi.
Jos sinulla ei ole verkkotunnusta osoittamassa palvelimellesi etkä tiedä palvelimesi julkista IP-osoitetta, voit löytää sen suorittamalla jommankumman seuraavista komennoista:
ip addr showhostname -ITämä tulostaa muutamia IP-osoitteita. Voit kokeilla kutakin vuorotellen verkkoselaimessasi.
Vaihtoehtoisesti voit tarkistaa, mikä IP-osoite on käytettävissä, kun sitä katsotaan muista sijainneista internetissä:
curl -4 icanhazip.comKirjoita osoite, jonka näet verkkoselaimessasi, niin se ohjaa sinut Nginxin oletussivulle:
http://<server_domain_or_IP>Jos saat tämän sivun näkyviin, se tarkoittaa, että olet onnistuneesti asentanut Nginxin ja ottanut HTTP-liikenteen käyttöön verkkopalvelimellasi.
Vaihe 2 — MySQL:n asentaminen
Asenna MySQL tallentaaksesi ja hallitaksesi sivuston tietoja. MySQL on standarditietokannan hallintajärjestelmä PHP-ympäristöissä.
Käytä jälleen apt hankkiaksesi ja asentaaksesi tämän ohjelmiston:
sudo apt install mysql-serverKun sinua kehotetaan, vahvista asennus painamalla Y ja sitten ENTER.
Asennuksen jälkeen suorita suojausskripti poistaaksesi epävarmat oletusasetukset ja rajoittaaksesi tietokannan käyttöä:
sudo mysql_secure_installationSinulta kysytään, haluatko määrittää VALIDATE PASSWORD PLUGIN -liitännäisen.
Huom: Tämän ominaisuuden käyttöönotto on jonkin verran harkinnanvaraista. Jos se otetaan käyttöön, MySQL hylkää salasanat, jotka eivät täytä määriteltyjä kriteerejä, virheilmoituksella. On turvallista jättää tarkistus pois käytöstä, mutta sinun tulisi aina käyttää vahvoja ja yksilöllisiä salasanoja tietokantatunnuksissa.
Vastaa Y kylläksi tai mitä tahansa muuta jatkaaksesi ottamatta käyttöön:
VALIDATE PASSWORD COMPONENT 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 component?
Press y|Y for Yes, any other key for No: Jos vastaat ”kyllä”, sinua pyydetään valitsemaan salasanasuojauksen taso. Muista, että jos syötät 2 vahvimmalle tasolle, saat virheilmoituksia yrittäessäsi asettaa mitä tahansa salasanaa, joka ei sisällä numeroita, isoja ja pieniä kirjaimia sekä erikoismerkkejä:
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1Riippumatta siitä, päätätkö ottaa käyttöön VALIDATE PASSWORD PLUGIN -laajennuksen vai et, palvelimesi pyytää sinua valitsemaan ja vahvistamaan salasanan MySQL root -käyttäjälle. Tätä ei tule sekoittaa järjestelmän root -tiliin. Tietokannan root -käyttäjä on hallintakäyttäjä, jolla on täydet oikeudet tietokantajärjestelmään. Vaikka MySQL root -käyttäjän oletustodennusmenetelmä ei vaadi salasanaa, vaikka sellainen olisi asetettu, sinun tulisi määrittää vahva salasana tässä lisäturvatoimenpiteenä. Puhumme tästä kohta enemmän.
Jos otit käyttöön salasanan tarkistuksen, sinulle näytetään antamasi root-salasanan vahvuus, ja palvelimesi kysyy, haluatko jatkaa kyseisellä salasanalla. Jos olet tyytyväinen nykyiseen salasanaasi, paina kehotteessa Y "kyllä":
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : yLoput kysymyksistä voit hyväksyä painamalla Y ja painamalla ENTER-näppäintä jokaisessa kehotteessa. Tämä poistaa joitakin anonyymejä käyttäjiä ja testitietokannan, estää etäyhteydet root-käyttäjälle ja lataa nämä uudet säännöt, jotta MySQL huomioi tekemäsi muutokset välittömästi.
Kun olet valmis, testaa, pystytkö kirjautumaan MySQL-konsoliin:
sudo mysqlTämä yhdistää MySQL-palvelimeen hallinnollisena tietokannan käyttäjänä root, mikä päätellään sudo-komennon käytöstä tämän komennon suorittamisen yhteydessä. Sinun pitäisi saada seuraava tuloste:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28-0ubuntu4 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>Poistuaksesi MySQL-konsolista, kirjoita seuraava:
exitHuomaa, ettet tarvinnut salasanaa yhdistääksesi root-käyttäjänä, vaikka olisit määrittänyt sellaisen suorittaessasi mysql_secure_installation-skriptin. Tämä johtuu siitä, että Ubuntussa asennettaessa oletusautentikointimenetelmä hallinnolliselle MySQL-käyttäjälle on auth_socket, eikä salasanaa käyttävä menetelmä. Tämä saattaa aluksi vaikuttaa tietoturvaongelmalta, mutta se tekee tietokantapalvelimesta turvallisemman, koska ainoat käyttäjät, jotka saavat kirjautua MySQL:n root-käyttäjänä, ovat järjestelmän käyttäjiä, joilla on sudo-oikeudet, yhdistäessään konsolista tai sovelluksen kautta, joka käyttää samaa oikeustasoa. Käytännössä tämä tarkoittaa, ettet voi käyttää hallinnollista tietokantakäyttäjää root yhdistääksesi PHP-sovelluksestasi.
Turvallisuuden lisäämiseksi on parasta luoda jokaiselle tietokannalle erilliset käyttäjätilit, joille on määritetty rajoitetummat oikeudet, varsinkin jos aiot isännöidä useita tietokantoja palvelimellasi.
Huomautus: Tietyt vanhemmat MySQL:n PHP-kirjaston mysqlnd julkaisuversiona eivät tue caching_sha2_authentication -menetelmää, joka on MySQL 8:ssa luotujen käyttäjien oletusautentikointitapa. Tämän vuoksi, kun luot tietokantakäyttäjiä PHP-sovelluksia varten MySQL 8:ssa, sinun voi olla tarpeen varmistaa, että heidät on määritetty käyttämään mysql_native_password -menetelmää. Näytämme, miten se tehdään vaiheessa 6.
MySQL-palvelimesi on nyt asennettu ja suojattu. Seuraavaksi asennat PHP:n, LEMP-pinon viimeisen osan.
Vaihe 3 – PHP:n asentaminen
Asenna PHP koodin käsittelyä ja dynaamisen sisällön luomista varten. Nginx vaatii ulkoisen ohjelman PHP:n käsittelyyn.
PHP-FPM ("fastCGI-prosessinhallinta") käsittelee PHP-prosessointia tehokkaasti lisäturvaominaisuuksien avulla, tarjoten paremman suorituskyvyn PHP-pohjaisille verkkosivustoille. Asenna php-fpm ohjaamaan PHP-pyyntöjä Nginxistä, ja php-mysql mahdollistamaan PHP-MySQL-viestinnän. PHP:n ydinpaketit asennetaan automaattisesti riippuvuuksina.
Asentaaksesi php8.1-fpm ja php-mysql -paketit, suorita:
sudo apt install php8.1-fpm php-mysqlKun sinua kehotetaan, paina Y ja ENTER vahvistaaksesi asennuksen.
Varmista, että PHP-FPM on käynnissä:
sudo systemctl status php8.1-fpmSinun pitäisi nähdä tuloste, joka osoittaa, että PHP-FPM on aktiivinen:
● php8.1-fpm.service - The PHP 8.1 FastCGI Process Manager
Loaded: loaded
Active: active (running)Voit myös tarkistaa PHP-version:
php -vPHP 8.1.x (cli) (built: ...)
Copyright (c) The PHP Group
Zend Engine v4.1.xKonfiguroi Nginx käyttämään näitä PHP-komponentteja.
Vaihe 4 — Nginxin määrittäminen käyttämään PHP-prosessoria
Luo Nginx palvelinlohkoja (vastaavia kuin Apache virtual hosts) konfiguraation kapselointiin ja useiden verkkotunnusten isännöintiin yhdellä palvelimella. Tämä opas käyttää your_domain esimerkkiverkkotunnuksena.
Tieto: Lisätietoja Linux-Console.net -verkkotunnuksen määrittämisestä saat lukemalla johdantomme Linux-Console.net DNS:ään.
Ubuntussa 22.04 Nginx ottaa käyttöön yhden oletuspalvelinlohkon, joka palvelee dokumentteja hakemistosta /var/www/html. Useille sivustoille luo hakemistorakenne /var/www-hakemistoon kohdassa your_domain, jättäen /var/www/html oletustakaisinottokansioksi.
Luo juurisivuhakemisto your_domain seuraavasti:
sudo mkdir /var/www/your_domainSeuraavaksi määritä hakemiston omistajuus $USER -ympäristömuuttujalla, joka viittaa nykyiseen järjestelmän käyttäjääsi:
sudo chown -R $USER:$USER /var/www/your_domainAvaa sitten uusi kokoonpanotiedosto Nginx:n sites-available-hakemistossa käyttämällä haluamaasi komentorivieditoria. Tässä käytämme nano-editoria:
sudo nano /etc/nginx/sites-available/your_domainTämä luo uuden tyhjän tiedoston. Lisää seuraava peruskonfiguraatio:
server {
listen 80;
server_name your_domain www.your_domain;
root /var/www/your_domain;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}Näin kukin näistä direktiiveistä ja sijaintilohkoista toimii:
listen— Määrittää, mitä porttia Nginx kuuntelee. Tässä tapauksessa se kuuntelee porttia80, joka on HTTP:n oletusportti.root— Määrittää dokumenttijuurihakemiston, johon tämän verkkosivuston tarjoamat tiedostot tallennetaan.index— Määrittää, missä järjestyksessä Nginx priorisoi tämän verkkosivuston indekstitiedostot. On yleinen käytäntö luetellaindex.html-tiedostot korkeammalla prioriteetilla kuinindex.php-tiedostot, jotta PHP-sovelluksissa voidaan nopeasti määrittää huoltosivun aloitussivu. Voit säätää näitä asetuksia paremmin sovellustarpeidesi mukaan.server_name— Määrittää, mihin verkkotunnuksiin ja/tai IP-osoitteisiin tämä palvelinlohko vastaa. Suuntaa tämä direktiivi palvelimesi verkkotunnukseen tai julkiseen IP-osoitteeseen.location /— Ensimmäinen location-lohko sisältäätry_files-direktiivin, joka tarkistaa tiedostojen tai kansioiden olemassaolon, jotka vastaavat URL-pyyntöä. Jos Nginx ei löydä sopivaa resurssia, se palauttaa 404-virheen.location ~ \.php$— Tämä sijaintilohko käsittelee varsinaisen PHP:n prosessoinnin ohjaamalla Nginxin käyttämäänfastcgi-php.conf-konfiguraatiotiedostoa japhp8.1-fpm.sock-tiedostoa, joka määrittelee, mikä soketti on liitettyphp8.1-fpm-palveluun.location ~ /\.ht— Viimeinen location-lohko käsittelee.htaccess-tiedostoja, joita Nginx ei käsittele. Lisäämällädeny all-direktiivin, jos.htaccess-tiedostoja jostain syystä päätyy dokumenttijuureen, niitä ei toimiteta vierailijoille.
Kun olet valmis muokkaamaan, tallenna ja sulje tiedosto. Jos käytät nano-editoria, voit tehdä sen painamalla CTRL+X, sitten Y ja ENTER vahvistaaksesi.
Aktivoi kokoonpanosi liittämällä konfiguraatiotiedosto Nginxin sites-enabled-hakemistosta:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/Poista sitten oletuskonfiguraatiotiedoston linkitys hakemistosta /sites-enabled/:
sudo unlink /etc/nginx/sites-enabled/defaultHuomautus: Jos sinun joskus tarvitsee palauttaa oletusasetukset, voit tehdä sen luomalla symbolisen linkin uudelleen, kuten seuraavasti:
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/Tämä kertoo Nginxille käyttämään asetusta seuraavan kerran, kun se ladataan uudelleen. Voit testata asetuksesi syntaksivirheitä ajamalla seuraavan komennon:
sudo nginx -tJos havaitaan virheitä, palaa takaisin määritystiedostoosi tarkistaaksesi sen sisällön ennen jatkamista.
Kun olet valmis, lataa Nginx uudelleen muutosten soveltamiseksi:
sudo systemctl reload nginxUusi verkkosivustosi on nyt aktiivinen, mutta verkkosivuston juurihakemisto /var/www/your_domain on edelleen tyhjä. Luo kyseiseen sijaintiin index.html-tiedosto, jotta voit testata, että uusi palvelinlohko toimii odotetusti:
nano /var/www/your_domain/index.htmlSisällytä tämä sisältö tähän tiedostoon:
<html>
<head>
<title>your_domain website</title>
</head>
<body>
<h1>Hello World!</h1>
<p>This is the landing page of <strong>your_domain</strong>.</p>
</body>
</html>Siirry nyt selaimeesi ja käy palvelimesi verkkotunnuksessa tai IP-osoitteessa, joka on lueteltu server_name -direktiivissä palvelinlohkon konfiguraatiotiedostossa:
http://server_domain_or_IPSaat sivun, joka näyttää seuraavalta:
Jos saat tämän sivun, se tarkoittaa, että Nginx-palvelimesi lohko toimii odotetusti.
Voit jättää tämän tiedoston paikoilleen tilapäisenä aloitussivuna sovelluksellesi, kunnes luot sen tilalle index.php-tiedoston.
Varoitus: Lisääntyäsi index.php-tiedoston, varmista, että poistat tai nimeät uudelleen index.html-tiedoston dokumenttihakemistostasi. Jos molemmat tiedostot ovat olemassa, Nginx palvelee oletuksena index.html-tiedostoa, eikä PHP-sivusi näy—tämä on yleinen sekaannuksen lähde uusille käyttäjille.
LEMP-pino on nyt täysin määritetty. Seuraavassa vaiheessa luot PHP-skriptin testataksesi, että Nginx pystyy käsittelemään .php-tiedostoja uudessa verkkosivustossasi.
Vaihe 5 – PHP:n testaaminen Nginxillä
LEMP-pinotuksesi pitäisi olla nyt täysin valmis. Voit testata sitä varmistaaksesi, että Nginx pystyy siirtämään .php-tiedostot oikein PHP-prosessorillesi.
Voit tehdä tämän luomalla testin PHP-tiedoston dokumenttijuureen. Avaa uusi tiedosto nimeltä info.php dokumenttijuureesi haluamallasi tekstieditorilla:
nano /var/www/your_domain/info.phpLisää seuraavat rivit uuteen tiedostoon. Tämä on kelpaavaa PHP-koodia, joka palauttaa tietoa palvelimestasi:
<?php
phpinfo();Kun olet valmis, tallenna tiedosto ja sulje se.
Voit nyt käyttää tätä sivua verkkoselaimessasi siirtymällä siihen verkkotunnukseen tai julkiseen IP-osoitteeseen, jonka määrittelit Nginx-asetustiedostossasi, ja lisäämällä siihen /info.php:
http://server_domain_or_IP/info.phpSaat verkkosivun, joka sisältää yksityiskohtaista tietoa palvelimestasi:
Kun olet tarkistanut kyseisen sivun kautta PHP-palvelintasi koskevat tiedot, on parasta poistaa luomasi tiedosto, sillä se sisältää arkaluonteista tietoa PHP-ympäristöstäsi ja Ubuntu-palvelimestasi. Voit käyttää tiedoston poistamiseen komentoa rm:
sudo rm /var/www/your_domain/info.phpVoit aina luoda tämän tiedoston uudelleen, jos tarvitset sitä myöhemmin.
Vaihe 6 — Tietokantayhteyden testaaminen PHP:stä (Valinnainen)
Jos haluat testata, pystyykö PHP yhdistämään MySQL:ään ja suorittamaan tietokantakyselyjä, voit luoda testitaulukon esimerkkitiedoilla ja kysellä sen sisältöä PHP-skriptistä. Ennen sitä sinun tulee luoda testitietokanta ja uusi MySQL-käyttäjä, joka on asianmukaisesti määritetty sen käyttämiseen.
Huomautus: Tietyt vanhemmat luovutukset natiivista MySQL PHP -kirjastosta mysqlnd eivät tue caching_sha2_authentication -menetelmää, joka on MySQL 8:n oletusautentikointitapa. Saatat joutua varmistamaan, että ne on määritetty käyttämään mysql_native_password sen sijaan.
Luomme tietokannan nimeltä example_database ja käyttäjän nimeltä example_user, mutta voit korvata nämä nimet eri arvoilla.
Ensiksi yhdistä MySQL-konsoliin käyttäen root-tiliä:
sudo mysqlLuo uusi tietokanta suorittamalla seuraava komento MySQL-konsolissasi:
CREATE DATABASE example_database;Nyt voit luoda uuden käyttäjän ja myöntää hänelle täydet oikeudet luomassasi mukautetussa tietokannassa.
Seuraava komento luo uuden käyttäjän nimeltä example_user, käyttäen mysql_native_password-menetelmää oletusautentikointina. Määrittelemme tämän käyttäjän salasanaksi password, mutta sinun tulisi korvata tämä arvo omalla turvallisella salasanallasi.
CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';Nyt meidän täytyy antaa tälle käyttäjälle oikeudet example_database-tietokantaan:
GRANT ALL ON example_database.* TO 'example_user'@'%';Tämä antaa käyttäjälle example_user täydet oikeudet tietokantaan example_database, samalla kun estetään tätä käyttäjää luomasta tai muokkaamasta muita tietokantoja palvelimellasi.
Poistu nyt MySQL-kuoresta seuraavalla komennolla:
exitVoit testata, onko uudella käyttäjällä oikeat käyttöoikeudet kirjaantumalla MySQL-konsoliin uudelleen, tällä kertaa käyttäen mukautettuja käyttäjätunnuksia. Huomaa tämän komennon -p-valitsin, joka pyytää sinua antamaan salasanan, jota käytettiin example_user-käyttäjän luomisen yhteydessä:
mysql -u example_user -pKirjautumisen jälkeen MySQL-konsoliin varmista, että sinulla on pääsy example_database-tietokantaan:
SHOW DATABASES;Tämä palauttaa seuraavan tulosteen:
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)Seuraavaksi luomme testitaulukon nimeltä todo_list. MySQL-konsolista suorita seuraava lauseke:
CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);Lisää muutama sisältörivi testitauluun. Saatat haluta toistaa seuraavan komennon muutaman kerran käyttäen erilaisia arvoja:
INSERT INTO example_database.todo_list (content) VALUES ("My first important item");Varmistaaksesi, että tiedot tallennettiin onnistuneesti tauluusi, suorita:
SELECT * FROM example_database.todo_list;Tulosteesi tulisi näkyä seuraavasti:
+---------+--------------------------+
| item_id | content |
+---------+--------------------------+
| 1 | My first important item |
| 2 | My second important item |
| 3 | My third important item |
| 4 | and this one more thing |
+---------+--------------------------+
4 rows in set (0.000 sec)Varmistettuasi, että testitaulussasi on voimassa olevat tiedot, voit poistua MySQL-konsolista:
exitNyt voit luoda PHP-skriptin, joka yhdistää MySQL:ään ja kysyy sisältösi. Luo uusi PHP-tiedosto mukautettuun verkkohakemistoosi käyttämällä suosikkieditoriäsi. Käytämme siihen nano:
nano /var/www/your_domain/todo_list.phpSeuraava PHP-skripti yhdistää MySQL-tietokantaan ja kysyy todo_list-taulun sisällön, näyttäen tulokset listana. Jos tietokantayhteydessä ilmenee ongelma, se heittää poikkeuksen.
Lisää seuraava sisältö todo_list.php -skriptiisi:
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";
try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>TODO</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "<li>" . $row['content'] . "</li>";
}
echo "</ol>";
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
Tallenna ja sulje tiedosto, kun olet lopettanut muokkaamisen.
Voit nyt käyttää tätä sivua verkkoselaimessasi vierailemalla verkkosivustollesi määritellyllä verkkotunnuksella tai julkisella IP-osoitteella, ja lisäämällä perään /todo_list.php:
http://server_domain_or_IP/todo_list.phpSinun pitäisi nähdä sivu, joka näyttää seuraavalta ja esittää testitauluusi lisäämäsi sisällön:
Tämä tarkoittaa, että PHP-ympäristösi on valmis muodostamaan yhteyden ja vuorovaikuttamaan MySQL-palvelimesi kanssa.
Usein Kysytyt Kysymykset
Mihin LEMP-pinoa käytetään?
LEMP-pino isännöi dynaamisia PHP-pohjaisia verkkosivustoja ja sovelluksia, kuten WordPressiä, Laravelia, Magentoa, Drupal- ja räätälöityjä PHP-projekteja. Se on erityisen tehokas suuriliikenteisille sivustoille, jotka vaativat tehokasta samanaikaisten yhteyksien hallintaa.
Mikä on ero LEMP- ja LAMP-pinojen välillä?
LEMP käyttää Nginxiä, joka käsittelee yhteyksiä asynkronisesti tapahtumapohjaisen arkkitehtuurin avulla—tehokasta samanaikaisille käyttäjille. LAMP käyttää Apachea, joka perinteisesti luo säikeen jokaista pyyntöä kohden (vaikka nykyaikainen Apache tukee myös tapahtumapohjaisia tiloja). LEMP tarjoaa yleensä paremman suorituskyvyn staattiselle sisällölle ja korkean samanaikaisuuden tilanteissa, kun taas LAMP tarjoaa helpomman .htaccess-konfiguraation ja laajemman moduulituen.
Mitä Ubuntu-versiota minun pitäisi käyttää LEMP:ille?
Ubuntu 22.04 LTS on tämän oppaan ensisijainen kohde, ja se sisältää PHP 8.1:n, MySQL 8.0:n ja Nginxin pitkäaikaisella tuella. Ubuntu 24.04 LTS (uusin julkaisu) sisältää oletuksena PHP 8.3:n, ja se toimii tämän oppaan kanssa säätämällä PHP-FPM:n socket-polkuja ja versioita vastaavasti.
Kuinka asennan LEMP-pinon Ubuntu 24.04:lle?
Seuraa näitä keskeisiä vaiheita:
- Asenna Nginx:
sudo apt install nginx - Asenna MySQL:
sudo apt install mysql-server - Suorita MySQL-turvallisuusskripti:
sudo mysql_secure_installation - Asenna PHP-FPM:
sudo apt install php-fpm php-mysql - Määritä Nginx-palvelinlohko PHP-FPM-integraatiolla
- Testaa
info.php-tiedoston ja tietokantayhteyden kanssa
Katso täydellinen läpikäynti kohdissa 1–6 yllä.
Minkä version PHP:tä minun pitäisi asentaa Nginxillä ja MySQL:llä?
Käytä parhaan yhteensopivuuden saavuttamiseksi Ubuntusi version oletus-PHP:tä:
- Ubuntu 22.04: PHP 8.1 (asennettu käyttäen
php8.1-fpm) - Ubuntu 24.04: PHP 8.3 (säädä komennot versiolle
php8.3-fpm)
Molemmat versiot toimivat erinomaisesti Nginxin ja MySQL 8.0:n kanssa, tukevat nykyaikaisia kehyksiä ja saavat aktiivisia tietoturvapäivityksiä.
Kuinka määritän Nginxin käsittelemään PHP-tiedostoja?
Lisää Nginx-palvelimesi asetuksiin location ~ \.php$ -lohko, joka ohjaa PHP-pyynnöt PHP-FPM:lle Unix-soketin kautta:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}Säädä liitännän polku PHP-versiosi mukaan, testaa komennolla sudo nginx -t ja lataa uudelleen komennolla sudo systemctl reload nginx.
Miksi saan “502 Bad Gateway” -virheen sen jälkeen, kun olen asentanut PHP-FPM:n?
502-virheet tarkoittavat, että Nginx ei pysty kommunikoimaan PHP-FPM:n kanssa. Yleisiä syitä:
- PHP-FPM ei käynnissä: Tarkista komennolla
sudo systemctl status php8.1-fpmja käynnistä tarvittaessa - Väärä sokettipolku: Varmista, että
/run/php/php8.1-fpm.sockon olemassa ja vastaa Nginx-konfiguraatiotasi - Oikeusongelma: Varmista, että Nginx-käyttäjä (www-data) voi käyttää socketia
- PHP-FPM:n määritysongelma: Tarkista lokit kohdasta
/var/log/php8.1-fpm.log
Ratkaisu: Käynnistä molemmat palvelut uudelleen:
sudo systemctl restart php8.1-fpm nginxKuinka varmistan MySQL:n asennuksen jälkeen?
Suorita sisäänrakennettu turvallisuusskripti:
sudo mysql_secure_installationSeuraa ohjeita:
- Ota salasanasuojauslaajennus käyttöön
- Aseta vahva root-salasana
- Poista nimettömät käyttäjät
- Poista etäkäyttäjän root-kirjautuminen käytöstä
- Poista testitietokanta
- Lataa käyttöoikeudet uudelleen
Sovellustietokantoja varten luo omat käyttäjät, joilla on rajatut oikeudet, sen sijaan että käyttäisit root-tiliä.
Voinko pyörittää useita verkkosivustoja yhdellä LEMP-palvelimella?
Kyllä, luo erilliset Nginx-palvelinlohkot jokaiselle verkkotunnukselle:
- Luo hakemisto:
sudo mkdir -p /var/www/second_domain - Luo palvelinlohko:
sudo nano /etc/nginx/sites-available/second_domain - Määritä ainutlaatuisilla
server_namejaroot-direktiiveillä - Ota käyttöön:
sudo ln -s /etc/nginx/sites-available/second_domain /etc/nginx/sites-enabled/ - Testaa ja lataa uudelleen:
sudo nginx -t && sudo systemctl reload nginx
Jokaisella sivustolla voi olla omat PHP-asetukset ja tietokantakäyttäjät.
Kuinka päivitän PHP:n uuteen versioon?
Ubuntu-paketin päivitykset käsittelevät pienet versiot automaattisesti. Suurten versioiden päivitysten osalta:
Lisää Ondřejin PHP PPA (luotettu kolmannen osapuolen arkisto):
sudo add-apt-repository ppa:ondrej/php sudo apt updateAsenna uusi PHP-FPM-versio:
sudo apt install php8.3-fpm php8.3-mysql -yPäivitä Nginx-konfiguraation sokketin polku kohtaan
/run/php/php8.3-fpm.sockTestaa ja lataa Nginx uudelleen
Valinnaisesti poista vanha versio:
sudo apt purge php8.1-fpm
Testaa aina testiympäristössä ennen tuotantojärjestelmien päivittämistä.
Yleisimpien ongelmien vianmääritys
502 Huono yhdyskäytävävirhe
Yleisin LEMP-pinon ongelma ilmenee, kun Nginx ei pysty kommunikoimaan PHP-FPM:n kanssa:
Tarkista PHP-FPM:n tila:
sudo systemctl status php8.1-fpmTarkista sokkelipolku:
ls -la /run/php/Odotetun lähtötuloksen pitäisi näyttää php8.1-fpm.sock-tiedosto.
Yleiset korjaukset:
- Käynnistä PHP-FPM uudelleen:
sudo systemctl restart php8.1-fpm - Tarkista, että Nginx-palvelimen lohkon socket-polku vastaa todellista PHP-FPM-socketia
- Varmista tiedostojen käyttöoikeudet:
sudo chown www-data:www-data /run/php/php8.1-fpm.sock
Luvan kiellon virheet
Korjaa verkkohakemiston käyttöoikeudet:
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domainMySQL-yhteysongelmat
Nollaa MySQL root-salasana:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
FLUSH PRIVILEGES;
EXIT;Tarkista MySQL-palvelu:
sudo systemctl status mysqlPHP ei käsittele
Tarkista PHP-modulit:
php -m | grep -E 'mysql|fpm'Tarkista PHP-FPM-konfiguraatio:
sudo nginx -t
sudo php-fpm8.1 -tVianmääritys 404-virheet:
- Varmista, että
index.phpon lueteltu Nginxinindex-direktiivissä - Tarkista, onko tiedosto olemassa:
ls -la /var/www/your_domain/ - Tarkista Nginxin virhelokit:
sudo tail -f /var/log/nginx/error.log
Johtopäätös
Tässä oppaassa rakensit joustavan perustan PHP-verkkosivustojen ja -sovellusten tarjoamiseksi kävijöillesi käyttämällä Nginxiä verkkopalvelimena ja MySQL:ää tietokantajärjestelmänä. Voit tehdä tämän myös Apache-verkkopalvelimella; tutustu ohjeeseemme Linux-, Apache-, MySQL- ja PHP-pino (LAMP) asentamisesta Ubuntuun. Voit myös suojata sivustosi Let's Encryptillä, joka tarjoaa ilmaisia ja luotettuja varmenteita. Opettele tekemään tämä oppaamme avulla Let's Encryptille Apachelle.
Kiitos, että opiskelet Linux-Console.net-yhteisön kanssa.



