LEMP uzstādīšana Ubuntu: Nginx, PHP-FPM, MySQL

02 Apr 2026 Autors: Inga Vītola

Palaist serverī ar vienu komandu (vispirms pārbaudiet skripta saturu zemāk):

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

…vai ar wget:

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

Skripta saturs ustanovit-lemp-ubuntu.sh:

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

# 1. Sistēmas atjaunināšana
sudo apt-get update
sudo apt-get upgrade -y

# 2. Nginx, MySQL, PHP-FPM un paplašinājumi CMS vajadzībām
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. Vietnes sakne un testa 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 (pēdiņas 'EOF' — Nginx mainīgos neaiztiekam)
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. Vietnes aktivizācija
sudo ln -sf /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo nginx -t && sudo systemctl reload nginx
echo "LEMP ir gatavs: atveriet http://example.com"

LEMP ir Linux, Nginx, MySQL un PHP kopums — tipiska vide PHP vietnēm (WordPress, Laravel, pašrakstīti projekti). Zemāk ir gatava komandu secība Ubuntu 22.04/24.04. Viss process aizņem 10–15 minūtes.

Kas nepieciešams iepriekš

  • VPS ar Ubuntu 22.04 vai 24.04 un SSH piekļuvi.
  • Lietotājs ar sudo tiesībām (nestrādājiet pastāvīgi kā root).
  • Domēns, kura A ieraksts norāda uz servera IP (ražošanas vietnei).

Vispirms atjauniniet sistēmu:

sudo apt update && sudo apt upgrade -y

1. solis. Nginx uzstādīšana

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

Pārbaudiet statusu un atveriet portus ugunsmūrī:

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

Atveriet servera IP pārlūkā — jāparādās lapai «Welcome to nginx».

2. solis. MySQL uzstādīšana

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

Palaidiet interaktīvo datubāzes servera aizsardzību:

sudo mysql_secure_installation

Šeit iestatiet root paroli, dzēsiet anonīmos lietotājus, aizliedziet attālinātu root pieteikšanos un dzēsiet testa datubāzi. Pēc tam izveidojiet datubāzi un atsevišķu lietotāju vietnei:

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;

3. solis. PHP-FPM uzstādīšana

Nginx pats PHP neapstrādā — tas nodod pieprasījumus PHP-FPM procesam caur soketu.

sudo apt install php-fpm php-mysql -y

Pārbaudiet versiju un servisa nosaukumu (Ubuntu 24.04 tas ir php8.3-fpm):

php -v
systemctl status php8.3-fpm

Noderīgs paplašinājumu komplekts CMS vajadzībām:

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

4. solis. Server block konfigurācija

Izveidojiet vietnes sakni un testa failu:

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

Atveriet konfigurāciju /etc/nginx/sites-available/example.com redaktorā:

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

Faila saturs:

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;
    }
}

Vai arī izveidojiet konfigurāciju uzreiz ar vienu komandu — nokopējiet un ielīmējiet konsolē (pēdiņas 'EOF' ir svarīgas, lai Nginx mainīgie $uri paliktu neskarti):

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

Aktivizējiet vietni un pārlādējiet Nginx:

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

5. solis. PHP pārbaude

Atveriet http://example.com — redzēsiet phpinfo() lapu ar PHP versiju un pievienotajiem moduļiem. Pārliecinieties, ka sarakstā ir mysqli vai pdo_mysql. Pēc pārbaudes noteikti dzēsiet testa failu — tas atklāj servera konfigurāciju:

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

Ātra komponentu pārbaude

Komponents Pārbaudes komanda Gaidāmais rezultāts
Nginx sudo nginx -t syntax is ok
PHP-FPM systemctl is-active php8.3-fpm active
MySQL mysqladmin -u root -p status Uptime: …
PHP sokets ls /run/php/ php8.3-fpm.sock

Biežākie jautājumi

Kāpēc vietne rāda PHP kodu kā tekstu? Nginx nenodod pieprasījumu PHP-FPM. Pārbaudiet bloku location ~ \.php$ un soketa ceļu direktīvā fastcgi_pass.

Kļūda 502 Bad Gateway — ko darīt? Parasti PHP-FPM nav palaists vai norādīts nepareizs sokets. Izpildiet systemctl status php8.3-fpm un salīdziniet .sock faila nosaukumu ar konfigurāciju.

Kā uzzināt PHP versiju savā Ubuntu? Ar komandu php -v. Ubuntu 22.04 pēc noklusējuma ir PHP 8.1, bet 24.04 — PHP 8.3. Servisa un soketa nosaukums ir atkarīgs no versijas.

Vai MySQL vietā var uzstādīt MariaDB? Jā. MariaDB ir savietojama un tiek uzstādīta ar apt install mariadb-server. Klienta komandas un SQL sintakse ir identiskas.

LEMP labi strādā arī nelielā serverī, taču ražošanas slodzei izvēlieties NVMe disku un pietiekamu RAM apjomu. Gatavus tarifus skatiet lapā VPS serveru noma, bet noslogotām vietnēm noderēs WordPress VPS.

Inga Vītola