LEMP paigaldamine Ubuntule: Nginx, PHP-FPM, MySQL
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 bashSkripti 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.