LEMP uzstādīšana Ubuntu: Nginx, PHP-FPM, MySQL
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 bashSkripta 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
sudotiesī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.