LEMP paigaldamine Ubuntule: Nginx, PHP-FPM, MySQL

02 Apr 2026 Autor: Inga Vītola

Käivita serveris ühe käsuga (kontrolli enne skripti sisu allpool):

curl -sSL https://cp.lv/scripts/ustanovit-lemp-ubuntu.sh | sudo bash

…või wgetiga:

wget -qO- https://cp.lv/scripts/ustanovit-lemp-ubuntu.sh | sudo bash

Skripti sisu ustanovit-lemp-ubuntu.sh:

#!/usr/bin/env bash
set -e
export DEBIAN_FRONTEND=noninteractive

# 1. Update the system
sudo apt-get update
sudo apt-get upgrade -y

# 2. Nginx, MySQL, PHP-FPM and the extensions a CMS needs
sudo apt-get install -y nginx mysql-server php-fpm php-mysql \
  php-cli php-curl php-gd php-mbstring php-xml php-zip
sudo systemctl enable --now nginx mysql

# 3. Site root and a test index.php
sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com
echo "<?php phpinfo();" | sudo tee /var/www/example.com/index.php > /dev/null

# 4. server block (quoted 'EOF' leaves Nginx variables alone)
sudo tee /etc/nginx/sites-available/example.com > /dev/null << 'EOF'
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

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

# 5. Enable the site
sudo ln -sf /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo nginx -t && sudo systemctl reload nginx
echo "LEMP is ready: open http://example.com"

LEMP on Linuxi, Nginxi, MySQL-i ja PHP kooslus: tüüpiline keskkond PHP-saitidele (WordPress, Laravel, oma projektid). Allpool on valmis käsujada Ubuntu 22.04/24.04 jaoks. Kogu protsess võtab 10–15 minutit.

Mida on eelnevalt vaja

  • VPS Ubuntu 22.04 või 24.04-ga ja SSH-ligipääsuga.
  • sudo õigustega kasutaja (ära tööta pidevalt root-kasutajana).
  • Domeen, mille A-kirje osutab serveri IP-le (töötava saidi jaoks).

Kõigepealt uuenda süsteem:

sudo apt update && sudo apt upgrade -y

Samm 1. Nginxi paigaldamine

sudo apt install nginx -y
sudo systemctl enable --now nginx

Kontrolli olekut ja ava tulemüüris pordid:

sudo systemctl status nginx
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable

Ava serveri IP brauseris — ilmuma peaks leht «Welcome to nginx».

Samm 2. MySQL-i paigaldamine

sudo apt install mysql-server -y
sudo systemctl enable --now mysql

Käivita andmebaasiserveri interaktiivne turvaskript:

sudo mysql_secure_installation

Määra siin root-parool, eemalda anonüümsed kasutajad, keela root-kasutaja kaugsisselogimine ja kustuta testandmebaas. Loo saidi jaoks andmebaas ja eraldi kasutaja:

sudo mysql
CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Samm 3. PHP-FPM-i paigaldamine

Nginx ei oska PHP-d ise töödelda — ta annab päringud pistiku kaudu edasi PHP-FPM protsessile.

sudo apt install php-fpm php-mysql -y

Kontrolli versiooni ja teenuse nime (Ubuntu 24.04-s on see php8.3-fpm):

php -v
systemctl status php8.3-fpm

Kasulik laienduste komplekt CMS-i jaoks:

sudo apt install php-cli php-curl php-gd php-mbstring php-xml php-zip -y

Samm 4. Server block’i seadistamine

Loo saidi juurkaust ja testfail:

sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com
echo "<?php phpinfo();" | sudo tee /var/www/example.com/index.php

Ava konfiguratsioonifail /etc/nginx/sites-available/example.com redaktoris:

sudo nano /etc/nginx/sites-available/example.com

Faili sisu:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

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

Või kirjuta kogu konfiguratsioon ühe käsuga — kopeeri see ja kleebi konsooli (jutumärgid 'EOF' on olulised, et Nginxi muutujad $uri jääksid nii, nagu nad on):

sudo tee /etc/nginx/sites-available/example.com > /dev/null << 'EOF'
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

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

Aktiveeri sait ja lae Nginx uuesti:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Samm 5. PHP kontrollimine

Ava http://example.com — näed phpinfo() lehte PHP versiooni ja laaditud moodulitega. Veendu, et loendis on mysqli või pdo_mysql. Pärast kontrolli kustuta testfail kindlasti ära: see paljastab serveri konfiguratsiooni.

sudo rm /var/www/example.com/index.php

Komponentide kiirkontroll

Komponent Kontrollkäsk Oodatav tulemus
Nginx sudo nginx -t syntax is ok
PHP-FPM systemctl is-active php8.3-fpm active
MySQL mysqladmin -u root -p status Uptime: …
PHP pistik ls /run/php/ php8.3-fpm.sock

Korduma kippuvad küsimused

Miks väljastab sait PHP koodi tekstina? Nginx ei anna päringut PHP-FPM-ile edasi. Kontrolli plokki location ~ \.php$ ja pistiku teed real fastcgi_pass.

Mida teha vea 502 Bad Gateway korral? Tavaliselt ei tööta PHP-FPM või on määratud vale pistik. Käivita systemctl status php8.3-fpm ja võrdle .sock-faili nime konfiguratsiooniga.

Kuidas teada saada PHP versiooni oma Ubuntus? Käsuga php -v. Ubuntu 22.04-s on vaikimisi PHP 8.1, Ubuntu 24.04-s PHP 8.3. Teenuse ja pistiku nimi sõltub versioonist.

Kas MySQL-i asemel saab kasutada MariaDB-d? Jah. MariaDB on ühilduv ja paigaldub käsuga apt install mariadb-server. Kliendikäsud ja SQL on identsed.

LEMP töötab hästi ka väikeses serveris, aga päris liikluse jaoks vali NVMe-ketas ja piisav mälumaht. Valmis paketid on lehel VPS-i rent, koormatud saitidele sobib WordPressi VPS.

Inga Vītola