Kako instalirati WordPress na Ubuntu uz Nginx
|

Kako instalirati WordPress na Ubuntu uz Nginx

U ovom vodiču proći ćemo kroz cijeli proces — od potpuno svježeg Ubuntu poslužitelja do funkcionalne WordPress stranice. Korak po korak ćemo instalirati i konfigurirati Nginx kao web poslužitelj, PHP 8.3-FPM za obradu zahtjeva, MySQL za bazu podataka, te na kraju dodati besplatni Let’s Encrypt SSL certifikat.

0 Preduvjeti

Prije nego počnete

Provjerite imate li sve potrebno prije nego krenete s instalacijom:

PreduvjetDetalji
Ubuntu poslužitelj22.04 LTS ili 24.04 LTS (preporučuje se svježa instalacija)
Root / Sudo pristupKorisnik koji nije root, ali ima sudo privilegije
DomenaUsmjerena na IP adresu vašeg poslužitelja (A zapis)
RAM memorijaMinimalno 1 GB (preporučuje se 2 GB+ za produkciju)
ℹ️

Sve naredbe treba pokretati kao sudo korisnik, ne kao root. Koristite prefiks sudo gdje je naznačeno.

1 Ažuriranje sustava

Ažuriranje Ubuntua i paketa

Uvijek počnite s potpuno ažuriranim sustavom. Time osiguravate najnovije sigurnosne zakrpe i verzije paketa prije instalacije bilo čega novog.

# Osvježavanje popisa paketa
sudo apt update

# Nadogradnja svih instaliranih paketa
sudo apt upgrade -y

# Instalacija korisnih alata
sudo apt install -y curl wget unzip git

Ako je primijenjena nadogradnja kernela, restart poslužitelja je preporučen:

sudo reboot
💡

Nakon ponovnog pokretanja, spojite se ponovo putem SSH-a i nastavite s idućim korakom.

2 Web poslužitelj

Instalacija i konfiguracija Nginxa

Nginx je visokoučinkovit web poslužitelj koji efikasno poslužuje statičke datoteke i prosljeđuje PHP zahtjeve prema PHP-FPM procesu.

# Instalacija Nginxa
sudo apt install -y nginx

# Pokretanje Nginxa i aktivacija pri pokretanju sustava
sudo systemctl start nginx
sudo systemctl enable nginx

# Provjera statusa
sudo systemctl status nginx

Otvaranje porta u vatrozidu

# Dopuštanje HTTP i HTTPS prometa
sudo ufw allow 'Nginx Full'

# Aktivacija UFW vatrozida ako još nije aktivan
sudo ufw enable
sudo ufw status

Posjetite IP adresu vašeg poslužitelja u pregledniku — trebali biste vidjeti zadanu Nginx dobrodošlicu stranicu.

3 PHP

Instalacija PHP-FPM i ekstenzija

WordPress je napisan u PHP-u, pa nam je potreban PHP-FPM (FastCGI Process Manager) zajedno s ekstenzijama koje WordPress zahtijeva.

# Dodavanje PHP PPA repozitorija za najnoviju verziju PHP-a
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

# Instalacija PHP 8.3 i svih potrebnih WordPress ekstenzija
sudo apt install -y php8.3-fpm php8.3-mysql php8.3-xml \
  php8.3-mbstring php8.3-curl php8.3-zip php8.3-gd \
  php8.3-intl php8.3-bcmath php8.3-imagick

# Provjera instalacije
php -v

Podešavanje PHP-FPM postavki

Otvorite PHP konfiguracijsku datoteku kako biste povećali limite za prijenos i memoriju:

sudo nano /etc/php/8.3/fpm/php.ini

Pronađite i ažurirajte ove vrijednosti:

upload_max_filesize = 64M
post_max_size       = 64M
memory_limit        = 256M
max_execution_time  = 300
max_input_time      = 300
# Restart PHP-FPM za primjenu promjena
sudo systemctl restart php8.3-fpm
sudo systemctl enable php8.3-fpm
4 Poslužitelj baze podataka

Instalacija MySQL poslužitelja

WordPress pohranjuje sav sadržaj — objave, stranice, korisnike i postavke — u MySQL bazu podataka.

# Instalacija MySQL poslužitelja
sudo apt install -y mysql-server

# Pokretanje i aktivacija MySQLa pri pokretanju sustava
sudo systemctl start mysql
sudo systemctl enable mysql

# Pokretanje sigurnosne skripte
sudo mysql_secure_installation
⚠️

Skripta mysql_secure_installation postavit će vam nekoliko pitanja. Odgovorite Da na sva: postavite jaku root lozinku, uklonite anonimne korisnike, onemogućite udaljenu root prijavu i uklonite testnu bazu podataka.

5 Postavljanje baze podataka

Kreiranje WordPress baze podataka i korisnika

Prijavite se u MySQL i kreirajte namjensku bazu podataka i korisnika za WordPress. Nikada ne koristite root račun za vašu WordPress stranicu.

sudo mysql -u root -p

Unutar MySQL sučelja pokrenite ove SQL naredbe:

-- Kreiranje baze podataka
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Kreiranje namjenskog korisnika (koristite jaku lozinku!)
CREATE USER 'wp_korisnik'@'localhost' IDENTIFIED BY 'VasaJakaLozinka123!';

-- Dodjela svih privilegija na WordPress bazi
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_korisnik'@'localhost';

-- Primjena promjena i izlaz
FLUSH PRIVILEGES;
EXIT;
💡

Zapišite naziv baze (wordpress_db), korisničko ime (wp_korisnik) i lozinku — trebat će vam u idućim koracima.

6 WordPress

Preuzimanje i raspakivanje WordPressa

Preuzmite najnoviji WordPress paket izravno s službene stranice i premjestite ga u direktorij web poslužitelja.

# Prebacivanje u privremeni direktorij i preuzimanje WordPressa
cd /tmp
wget https://wordpress.org/latest.tar.gz

# Raspakivanje arhive
tar -xzf latest.tar.gz

# Premještanje u web root (zamijenite vasadomena.hr)
sudo mv wordpress /var/www/vasadomena.hr

# Kreiranje direktorija za prijenos datoteka
sudo mkdir -p /var/www/vasadomena.hr/wp-content/uploads
7 Konfiguracija

Konfiguracija wp-config.php datoteke

Kreirajte wp-config.php iz primjerne datoteke i unesite podatke o bazi podataka.

# Kopiranje primjerne konfiguracije
sudo cp /var/www/vasadomena.hr/wp-config-sample.php \
        /var/www/vasadomena.hr/wp-config.php

# Otvaranje za uređivanje
sudo nano /var/www/vasadomena.hr/wp-config.php

Ažurirajte ove redove s podacima vaše baze podataka:

define( 'DB_NAME',     'wordpress_db' );
define( 'DB_USER',     'wp_korisnik' );
define( 'DB_PASSWORD', 'VasaJakaLozinka123!' );
define( 'DB_HOST',     'localhost' );
define( 'DB_CHARSET',  'utf8mb4' );

Generiranje tajnih ključeva

Zamijenite privremene tajne ključeve svježim s WordPress.org API-ja:

# Dohvaćanje novih tajnih ključeva
curl -s https://api.wordpress.org/secret-key/1.1/salt/

Kopirajte izlaz i zamijenite odgovarajuće retke u wp-config.php. Spremite i zatvorite datoteku.

8 Nginx virtualni host

Kreiranje Nginx server bloka

Kreirajte namjensku Nginx konfiguracijsku datoteku koja govori poslužitelju kako obrađivati zahtjeve za vašu domenu.

sudo nano /etc/nginx/sites-available/vasadomena.hr

Zalijepite ovaj kompletan server blok:

server {
    listen 80;
    listen [::]:80;

    server_name vasadomena.hr www.vasadomena.hr;
    root        /var/www/vasadomena.hr;
    index       index.php index.html index.htm;

    # WordPress lijepi permalinkovi
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # Prosljeđivanje PHP zahtjeva prema PHP-FPM
    location ~ \.php$ {
        include        snippets/fastcgi-php.conf;
        fastcgi_pass   unix:/run/php/php8.3-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # Blokiranje pristupa skrivenim datotekama
    location ~ /\. {
        deny all;
    }

    # Predmemoriranje statičnih resursa
    location ~* \.(jpg|jpeg|gif|png|svg|ico|css|js|woff2?)$ {
        expires    30d;
        add_header Cache-Control "public, no-transform";
    }

    client_max_body_size 64M;
}
# Aktivacija stranice kreiranjem simboličke veze
sudo ln -s /etc/nginx/sites-available/vasadomena.hr \
           /etc/nginx/sites-enabled/

# Provjera sintakse konfiguracije
sudo nginx -t

# Ponovno učitavanje Nginxa
sudo systemctl reload nginx
9 Dozvole datoteka

Postavljanje ispravnih dozvola datoteka

WordPress treba ispravno vlasništvo i dozvole kako bi mogao pisati u direktorije poput wp-content/uploads.

# Dodjela vlasništva Nginx korisniku
sudo chown -R www-data:www-data /var/www/vasadomena.hr

# Direktoriji: 755
sudo find /var/www/vasadomena.hr -type d -exec chmod 755 {} \;

# Datoteke: 644
sudo find /var/www/vasadomena.hr -type f -exec chmod 644 {} \;

# Zaštita wp-config.php datoteke
sudo chmod 600 /var/www/vasadomena.hr/wp-config.php
⚠️

Nikada ne postavljajte dozvole na 777 na produkcijskom poslužitelju — to je ozbiljan sigurnosni rizik koji daje pristup pisanju svim korisnicima.

10 SSL / HTTPS

Aktivacija SSL-a s Let’s Encrypt (Certbot)

Svaka stranica trebala bi koristiti HTTPS. Let’s Encrypt pruža besplatne certifikate, a Certbot automatizira cijeli proces instalacije i obnavljanja.

# Instalacija Certbota i Nginx dodatka
sudo apt install -y certbot python3-certbot-nginx

# Dohvaćanje i instalacija certifikata (zamijenite s vašom domenom)
sudo certbot --nginx -d vasadomena.hr -d www.vasadomena.hr

# Testiranje automatskog obnavljanja
sudo certbot renew --dry-run

Certbot automatski ažurira vašu Nginx konfiguraciju za preusmjeravanje HTTP → HTTPS. Vaša stranica bit će dostupna na https://vasadomena.hr.

💡

Certbot instalira sistemski timer koji automatski obnavlja certifikat prije isteka. Nakon početne postavke nije potrebna nikakva ručna akcija.

11 Dovršetak instalacije

Dovršetak WordPress čarobnjaka za postavljanje

Teški dio je gotov! Otvorite preglednik i idite na:

https://vasadomena.hr/wp-admin/install.php

Čarobnjak za postavljanje provest će vas kroz završne korake:

  1. Odaberite jezik (Hrvatski je dostupan)
  2. Unesite naziv stranice i admin e-mail adresu
  3. Kreirajte sigurno admin korisničko ime i lozinku
  4. Kliknite “Instaliraj WordPress”

Nakon toga prijavite se u upravljačku ploču na https://vasadomena.hr/wp-admin. Vaša WordPress stranica je živa! 🎉

Preporučeni koraci nakon instalacije

  • Instalirajte dodatak za predmemoriranje (npr. W3 Total Cache ili LiteSpeed Cache)
  • Omogućite automatska ažuriranja za WordPress i dodatke
  • Postavite automatske dnevne sigurnosne kopije baze podataka
  • Instalirajte sigurnosni dodatak poput Wordfence
  • Idite na Postavke → Permalinkovi i odaberite čistu URL strukturu
  • Promijenite zadani URL za prijavu kako biste smanjili napade grubom silom
ℹ️

Ako vidite grešku 502 Bad Gateway, provjerite odgovara li putanja PHP-FPM socketa u Nginx konfiguraciji instaliranoj verziji. Pokrenite ls /run/php/ kako biste potvrdili ispravno ime socketa.

Povezani članci