WordPress ir pasaulē populārākā satura pārvaldības sistēma (CMS), ko izmanto aptuveni 43% visu mājas lapu. Lai gan WordPress var uzstādīt uz koplietošanas (shared) hostinga un ir ne mazums gatavu platformu, kas piedāvā WordPress hostingu ar vienu klikšķi, VPS (virtuālais privātais serveris) sniedz pilnu kontroli pār servera konfigurāciju, labāku veiktspēju, drošību un neatkarību no ārēju servisu darbības un kaimiņiem (citām lapām) uz servera.
Šajā pamācībā soli pa solim apskatīsim pilnu WordPress uzstādīšanas procesu uz VPS — no servera sagatavošanas līdz darbojošamai mājas lapai ar SSL sertifikātu.
1. Priekšnosacījumi
Pirms sākat, pārliecinieties, ka jums ir:
- VPS serveris ar Ubuntu vai Debian operētājsistēmu
- SSH piekļuve serverim (ar root vai sudo lietotāju)
- Domēna vārds — piemēram, coding.lv
- Piekļuve DNS iestatījumiem pie domēna reģistratora
- Minimālās prasības: 1 GB RAM, 1 CPU kodols, diska vieta atkarībā galvenokārt no tā, cik daudz bilžu vai video vēlies ievietot mājas lapā, bet 20GB būtu pilnīgi pietiekami sākumam, vairumam VPS jau lētākajā plānā ir vairāk.
Ieteicamie VPS resursi
| Apmeklējumi/mēn. | RAM | CPU | Disks |
|---|---|---|---|
| Līdz 10 000 | 1 GB | 1 kodols | 20 GB SSD |
| 10 000 – 50 000 | 2 GB | 2 kodoli | 40 GB SSD |
| 50 000 – 200 000 | 4 GB | 2–4 kodoli | 80 GB SSD |
| 200 000+ | 8+ GB | 4+ kodoli | 160+ GB SSD |
Populāri VPS pakalpojumu sniedzēji:
- Hetzner — lieliska cenas un kvalitātes attiecība, serveri Eiropā
- DigitalOcean — vienkārša saskarne, laba dokumentācija
- Linode (Akamai) — uzticams, ilggadējs pakalpojumu sniedzējs
- Vultr — daudz servera atrašanās vietu
- OVH — lēti serveri Eiropā
2. DNS konfigurēšana
Pirms sākat servera uzstādīšanu, konfigurējiet DNS ierakstus pie sava domēna reģistratora. DNS izmaiņas var aizņemt līdz 24–48 stundām (bet parasti ātrāk), tāpēc šo soli veiciet pirmām kārtām.
Nepieciešamie DNS ieraksti
| Tips | Nosaukums | Vērtība | TTL |
|---|---|---|---|
| A | @ | 123.456.78.90 (jūsu servera IP) | 3600 |
| A | www | 123.456.78.90 (jūsu servera IP) | 3600 |
| AAAA | @ | jūsu IPv6 adrese (ja pieejama) | 3600 |
A ieraksts ar nosaukumu @ norāda galveno domēnu (piem., coding.lv) uz jūsu servera IP adresi. Ieraksts ar www nodrošina, ka www.coding.lv arī norāda uz to pašu serveri. Ja vēlaties wordpress uzinstalēt uz apakšdomēna, piemēram blog.coding.lv, tad @ vietā liekam blog.
DNS pārbaude
Pēc ierakstu izveides pārbaudiet vai tie darbojas izmantojot vietni https://www.dnswatch.info/ vai arī komandrindā:
dig coding.lv +short
dig www.coding.lv +short
Abām komandām jāatgriež jūsu servera IP adrese. Ja tā nav, DNS ieraksti vēl nav izplatījušies — pagaidiet un mēģiniet vēlāk.
3. Servera sākotnējā sagatavošana
Pieslēdzieties serverim, parasti izveidojot VPS sākotnēji tiek piešķirts root (galvenā servera administratora, kuram atļauts viss) logins.
ssh root@123.456.78.90
Atjauniniet sistēmu
apt update && apt upgrade -y
Izveidojiet jaunu lietotāju
Nav ieteicams pastāvīgi strādāt kā root. Izveidojiet jaunu lietotāju ar sudo tiesībām:
adduser webadmin
usermod -aG sudo webadmin
Konfigurējiet SSH drošību
Rediģējiet SSH konfigurāciju:
nano /etc/ssh/sshd_config
Ieteicamās izmaiņas:
# Aizliegt root pieteikšanos ar paroli
PermitRootLogin prohibit-password
# Atļaut tikai konkrētu lietotāju
AllowUsers webadmin
Pārstartējiet SSH:
systemctl restart sshd
Uzstādiet ugunsmūri
apt install ufw -y
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
Šī konfigurācija atļauj tikai SSH (22), HTTP (80) un HTTPS (443) savienojumus.
4. Nginx instalēšana un konfigurēšana
Instalējiet Nginx
apt install nginx -y
systemctl enable nginx
systemctl start nginx
Pārbaudiet — atverot pārlūkprogrammā servera IP adresi, jāparādās Nginx sveiciena lapai.
Izveidojiet Nginx konfigurāciju jūsu domēnam
nano /etc/nginx/sites-available/coding.lv
Ievadiet šādu sākotnējo konfigurāciju (SSL pievienosim vēlāk):
server {
listen 80;
listen [::]:80;
server_name coding.lv www.coding.lv;
root /var/www/coding.lv;
index index.php index.html;
# Logošana
access_log /var/log/nginx/coding.lv.access.log;
error_log /var/log/nginx/coding.lv.error.log;
# Maksimālais augšupielādes izmērs
client_max_body_size 64M;
# Galvenā atrašanās vieta
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP apstrāde
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;
}
# Bloķēt piekļuvi slēptajiem failiem
location ~ /\. {
deny all;
}
# Bloķēt piekļuvi wp-config.php
location ~* /wp-config\.php {
deny all;
}
# Statisko failu kešošana
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
Aktivizējiet konfigurāciju
# Izveidojiet simbolisko saiti
ln -s /etc/nginx/sites-available/coding.lv /etc/nginx/sites-enabled/
# Noņemiet noklusējuma konfigurāciju
rm /etc/nginx/sites-enabled/default
# Pārbaudiet konfigurācijas sintaksi
nginx -t
# Pārstartējiet Nginx
systemctl reload nginx
Izveidojiet mājas lapas direktoriju
mkdir -p /var/www/coding.lv
chown -R www-data:www-data /var/www/coding.lv
5. PHP instalēšana un konfigurēšana
Instalējiet PHP un nepieciešamās paplašinājumus
WordPress prasa PHP ar vairākām paplašinājumiem:
apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring \
php8.3-xml php8.3-zip php8.3-intl php8.3-imagick php8.3-bcmath \
php8.3-soap php8.3-opcache php8.3-redis -y
Ja PHP 8.3 nav pieejams jūsu sistēmā, pievienojiet Ondrej PPA repozitoriju:
apt install software-properties-common -y
add-apt-repository ppa:ondrej/php -y
apt update
Debian gadījumā:
apt install apt-transport-https lsb-release ca-certificates curl -y
curl -sSL https://packages.sury.org/php/apt.gpg -o /usr/share/keyrings/deb.sury.org-php.gpg
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/sury-php.list
apt update
Konfigurējiet PHP
Rediģējiet PHP konfigurāciju:
nano /etc/php/8.3/fpm/php.ini
Mainiet šādus iestatījumus:
; Maksimālais augšupielādes faila izmērs
upload_max_filesize = 64M
; Maksimālais POST pieprasījuma izmērs
post_max_size = 64M
; Maksimālais atmiņas limits
memory_limit = 256M
; Maksimālais izpildes laiks
max_execution_time = 300
; Maksimālais ievades mainīgo skaits
max_input_vars = 3000
; Laika josla
date.timezone = Europe/Riga
Konfigurējiet PHP-FPM
Optimizējiet PHP-FPM procesu pārvaldību:
nano /etc/php/8.3/fpm/pool.d/www.conf
Svarīgākie iestatījumi:
; Procesu pārvaldības režīms
pm = dynamic
; Maksimālais procesu skaits
pm.max_children = 10
; Sākotnējais procesu skaits
pm.start_servers = 3
; Minimālais gaidošo procesu skaits
pm.min_spare_servers = 2
; Maksimālais gaidošo procesu skaits
pm.max_spare_servers = 5
; Cik pieprasījumu process apstrādā pirms restarta
pm.max_requests = 500
Pārstartējiet PHP-FPM
systemctl restart php8.3-fpm
systemctl enable php8.3-fpm
PHP pārbaude
Izveidojiet pārbaudes failu:
echo "<?php phpinfo(); ?>" > /var/www/coding.lv/info.php
Atveriet pārlūkprogrammā https://coding.lv/info.php — jāparādās PHP informācijas lapai. Pēc pārbaudes izdzēsiet šo failu:
rm /var/www/coding.lv/info.php
6. MariaDB (MySQL) instalēšana un konfigurēšana
Instalējiet MariaDB
apt install mariadb-server mariadb-client -y
systemctl enable mariadb
systemctl start mariadb
Drošības konfigurācija
Palaidiet drošības skriptu:
mysql_secure_installation
Atbildiet uz jautājumiem:
- Enter current password for root — nospiediet Enter (paroles vēl nav)
- Switch to unix_socket authentication — Y
- Change the root password — Y (iestatiet stipru paroli)
- Remove anonymous users — Y
- Disallow root login remotely — Y
- Remove test database — Y
- Reload privilege tables — Y
Izveidojiet datubāzi un lietotāju WordPress
Piesakieties MariaDB:
mysql -u root -p
Izpildiet šīs SQL komandas (aizstājiet stipra_parole_123 ar savu paroli):
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'stipra_parole_123';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Pierakstiet šos datus — tie būs nepieciešami WordPress instalācijā:
- Datubāzes nosaukums: wordpress
- Lietotājs: wpuser
- Parole: jūsu izvēlētā parole
- Serveris: localhost
7. WordPress lejupielāde un uzstādīšana
Lejupielādējiet WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
Pārvietojiet failus
cp -a /tmp/wordpress/. /var/www/coding.lv/
chown -R www-data:www-data /var/www/coding.lv
chmod -R 755 /var/www/coding.lv
Konfigurējiet wp-config.php
Izveidojiet konfigurācijas failu no parauga:
cd /var/www/coding.lv
cp wp-config-sample.php wp-config.php
nano wp-config.php
Atrodiet un mainiet datubāzes iestatījumus:
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'stipra_parole_123' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
Drošības atslēgas
Aizstājiet noklusējuma drošības atslēgas ar unikālām. Ģenerējiet tās šeit:
https://api.wordpress.org/secret-key/1.1/salt/
Kopējiet rezultātu un aizstājiet atbilstošās rindas wp-config.php failā.
Papildu iestatījumi wp-config.php
Pievienojiet šīs rindas pirms komentāra /* That's all, stop editing! */:
/* Failu sistēmas metode */
define( 'FS_METHOD', 'direct' );
/* Atmiņas limits */
define( 'WP_MEMORY_LIMIT', '256M' );
/* Automātiskās saglabāšanas intervāls (sekundēs) */
define( 'AUTOSAVE_INTERVAL', 120 );
/* Ierobežot rakstu versiju skaitu */
define( 'WP_POST_REVISIONS', 5 );
/* Atkritumu tukšošana (dienas) */
define( 'EMPTY_TRASH_DAYS', 14 );
8. SSL sertifikāta uzstādīšana (Let's Encrypt)
SSL sertifikāts nodrošina šifrētu savienojumu (HTTPS) starp serveri un apmeklētāju. Let's Encrypt piedāvā bezmaksas SSL sertifikātus.
Instalējiet Certbot
apt install certbot python3-certbot-nginx -y
Iegūstiet sertifikātu
Pārliecinieties, ka DNS ieraksti jau norāda uz serveri, tad palaidiet:
certbot --nginx -d coding.lv -d www.coding.lv
Certbot jautās:
- E-pasta adresi — norādiet derīgu adresi sertifikāta paziņojumiem
- Piekrišanu noteikumiem — piekrītiet (A)
- Vai pāradresēt HTTP uz HTTPS — izvēlieties 2 (Redirect) — ieteicams
Certbot automātiski:
- Iegūs SSL sertifikātu
- Modificēs Nginx konfigurāciju, pievienojot SSL iestatījumus
- Iestatīs HTTP → HTTPS pāradresēšanu
Automātiska sertifikāta atjaunināšana
Let's Encrypt sertifikāti ir derīgi 90 dienas. Certbot automātiski iestata atjaunināšanas uzdevumu, bet pārbaudiet to:
certbot renew --dry-run
Ja tests ir veiksmīgs, sertifikāts automātiski atjaunosies pirms termiņa beigām.
Pilnā Nginx konfigurācija ar SSL
Pēc Certbot darbības jūsu Nginx konfigurācija izskatīsies apmēram šādi:
server {
listen 80;
listen [::]:80;
server_name coding.lv www.coding.lv;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name coding.lv www.coding.lv;
root /var/www/coding.lv;
index index.php index.html;
# SSL sertifikāti (Certbot iestatīti)
ssl_certificate /etc/letsencrypt/live/coding.lv/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/coding.lv/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# Drošības galvenes
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Logošana
access_log /var/log/nginx/coding.lv.access.log;
error_log /var/log/nginx/coding.lv.error.log;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
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;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
location ~ /\. {
deny all;
}
location ~* /wp-config\.php {
deny all;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# Bloķēt piekļuvi wp-includes
location ~* /wp-includes/.*\.php$ {
deny all;
}
# Bloķēt piekļuvi uploads PHP failiem
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
}
9. WordPress instalācijas pabeigšana
Atveriet pārlūkprogrammā https://coding.lv — jāparādās WordPress instalācijas vednim.
- Izvēlieties valodu — Latviešu
- Ievadiet mājas lapas nosaukumu
- Izveidojiet administratora kontu — lietotājvārds, e-pasts, stipra parole
- Nelietojiet "admin" kā lietotājvārdu — tas ir pirmais, ko uzbrucēji mēģina
- Noklikšķiniet "Instalēt WordPress"
Piesakieties administrācijas panelī: https://coding.lv/wp-admin
10. WordPress drošības uzlabojumi
Failu atļaujas
Iestatiet pareizas failu atļaujas:
# Direktorijas — 755
find /var/www/coding.lv -type d -exec chmod 755 {} \;
# Faili — 644
find /var/www/coding.lv -type f -exec chmod 644 {} \;
# wp-config.php — stingrākas atļaujas
chmod 600 /var/www/coding.lv/wp-config.php
Aizliegt PHP izpildi uploads mapē
Izveidojiet failu /var/www/coding.lv/wp-content/uploads/.htaccess vai pārliecinieties, ka Nginx konfigurācijā ir attiecīgais bloks (jau pievienots iepriekš).
Ieteicamie drošības spraudņi
| Spraudnis | Funkcija |
|---|---|
| Wordfence | Ugunsmūris, ļaunprogrammatūras skenēšana, pieteikšanās aizsardzība |
| Limit Login Attempts | Ierobežo neveiksmīgus pieteikšanās mēģinājumus |
| Two Factor | Divfaktoru autentifikācija |
| UpdraftPlus | Automātiska dublēšana uz mākonī |
Papildu drošības iestatījumi wp-config.php
/* Aizliegt failu rediģēšanu no admin paneļa */
define( 'DISALLOW_FILE_EDIT', true );
/* Piespiest SSL administrācijai */
define( 'FORCE_SSL_ADMIN', true );
11. Veiktspējas optimizācija
Nginx FastCGI kešošana
Pievienojiet FastCGI kešu, lai Nginx saglabātu PHP atbilžu kopijas un atdotu tās bez PHP apstrādes. Pievienojiet pirms server bloka:
fastcgi_cache_path /var/cache/nginx/wordpress levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
Un server blokā, PHP location sadaļā pievienojiet:
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
Gzip saspiešana
Rediģējiet /etc/nginx/nginx.conf un pievienojiet http blokā:
gzip on;
gzip_vary on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
PHP OPcache
Pārbaudiet, vai OPcache ir ieslēgts:
nano /etc/php/8.3/fpm/conf.d/10-opcache.ini
Ieteicamie iestatījumi:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.save_comments=1
Ieteicamie veiktspējas spraudņi
- W3 Total Cache vai WP Super Cache — lapas kešošana
- Autoptimize — CSS/JS minimizācija un apvienošana
- Imagify vai Smush — attēlu saspiešana
- Redis Object Cache — objektu kešošana ar Redis
12. Automātiskā servera dublēšana
Papildus WordPress spraudņiem, veidojiet arī servera līmeņa dublējumkopijas:
nano /opt/backup-wordpress.sh
#!/bin/bash
DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/opt/backups"
mkdir -p $BACKUP_DIR
# WordPress failu dublējums
tar -czf $BACKUP_DIR/wp-files-$DATE.tar.gz /var/www/coding.lv
# Datubāzes dublējums
mysqldump -u wpuser -p'stipra_parole_123' wordpress | gzip > $BACKUP_DIR/wp-db-$DATE.sql.gz
# Dzēst vecākus par 14 dienām
find $BACKUP_DIR -name "wp-*" -mtime +14 -delete
echo "WordPress backup pabeigts: $DATE"
chmod +x /opt/backup-wordpress.sh
Pievienojiet cron uzdevumu (katru dienu plkst. 3:00):
crontab -e
0 3 * * * /opt/backup-wordpress.sh >> /opt/backups/backup.log 2>&1
13. WordPress atjaunināšana
Regulāri atjauniniet WordPress kodolu, tēmas un spraudņus:
Izmantojot WP-CLI
WP-CLI ir komandrindas rīks WordPress pārvaldībai. Instalējiet to:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp
Noderīgas WP-CLI komandas:
| Komanda | Apraksts |
|---|---|
wp core update |
Atjaunina WordPress kodolu |
wp plugin update --all |
Atjaunina visus spraudņus |
wp theme update --all |
Atjaunina visas tēmas |
wp db optimize |
Optimizē datubāzi |
wp cache flush |
Iztīra kešu |
wp plugin list |
Parāda instalēto spraudņu sarakstu |
wp user list |
Parāda lietotāju sarakstu |
Svarīgi: WP-CLI komandas jāizpilda kā www-data lietotājs:
sudo -u www-data wp core update --path=/var/www/coding.lv
14. Biežāk pieļautās kļūdas
- Servera palaišana kā root — PHP-FPM jādarbojas kā www-data, nevis root
- Nepareizas failu atļaujas — pārāk atļaujoši iestatījumi (777) ir drošības risks
- Nav SSL sertifikāta — gan drošības, gan SEO iemeslu dēļ HTTPS ir obligāts
- Nav dublējumkopiju — viena kļūda vai uzbrukums var izdzēst visu
- Neaktuāli spraudņi — novecojuši spraudņi ir galvenais uzbrukumu vektors
- Pārāk daudz spraudņu — katrs spraudnis palēnina lapu. Izmantojiet tikai nepieciešamos
- Nav konfigurēts ugunsmūris — atstāj serveri neaizsargātu
- Vājas paroles — WordPress admin un datubāzes paroles jābūt stiprām un unikālām
- Nav mainīts SSH ports — noklusējuma 22. ports ir biežs automātisku uzbrukumu mērķis
Kopsavilkums
WordPress uzstādīšana uz VPS prasa vairāk darba nekā koplietojamais hostings, bet sniedz pilnu kontroli un labāku veiktspēju. Galvenie soļi:
- Konfigurējiet DNS — norādiet domēnu uz servera IP
- Sagatavojiet serveri — atjauniniet sistēmu, izveidojiet lietotāju, konfigurējiet ugunsmūri
- Instalējiet Nginx — tīmekļa serveris ar optimālu konfigurāciju
- Instalējiet PHP — ar visām nepieciešamajām paplašinājumiem
- Instalējiet MariaDB — izveidojiet datubāzi un lietotāju
- Lejupielādējiet WordPress — konfigurējiet wp-config.php
- Instalējiet SSL sertifikātu — ar Let's Encrypt un Certbot
- Pabeigiet instalāciju — caur pārlūkprogrammu
- Nodrošiniet drošību — failu atļaujas, drošības spraudņi, regulāri atjauninājumi
- Optimizējiet veiktspēju — kešošana, Gzip, OPcache
Noderīgas saites:
- WordPress.org — oficiālā WordPress mājas lapa
- WordPress Developer Resources — izstrādātāju dokumentācija
- WP-CLI — komandrindas rīks WordPress pārvaldībai
- Nginx dokumentācija — servera konfigurācijas ceļvedis
- Let's Encrypt — bezmaksas SSL sertifikāti
- PHP dokumentācija — oficiālā PHP dokumentācija
Laboja mad, labots 7x












