Pereiti prie pagrindinio turinio

WordPress diegimas VPS serveryje (AlmaLinux)

Šioje pamokoje apžvelgsime, kaip įdiegti "WordPress" turinio valdymo sistemą į savarankiškai administruojamą VPS serverį, kartu įdiegiant visus reikiamus komponentus svetainės veikimui:

Pamoka paruošta naudojant "AlmaLinux" operacinę sistemą (OS).

Pradžia

1. Atnaujinkite serverį

Prisijunkite prie serverio per SSH ir įdiekite atnaujinimus:

dnf update -y

Įdiekite pagrindinius įrankius:

dnf install -y curl wget tar unzip nano policycoreutils-python-utils

2. Įjunkite reikalingas repozitorijas

Įdiekite EPEL ir Remi repozitorijas:

dnf install -y epel-release
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Įjunkite CRB repozitoriją:

crb enable

Atnaujinkite paketų sąrašą:

dnf makecache

3. Įdiekite Nginx

Įdiekite Nginx:

dnf install -y nginx

Paleiskite Nginx ir įjunkite automatinį paleidimą po serverio perkrovimo:

systemctl enable --now nginx

Patikrinkite Nginx būseną:

systemctl status nginx

Jeigu naudojate firewalld, atidarykite HTTP ir HTTPS prievadus:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

4. Įdiekite MariaDB

Įdiekite MariaDB serverį:

dnf install -y mariadb-server

Paleiskite MariaDB ir įjunkite automatinį paleidimą:

systemctl enable --now mariadb

Patikrinkite MariaDB būseną:

systemctl status mariadb

Paleiskite pradinį MariaDB saugumo konfigūravimą:

mariadb-secure-installation

Pavydzys:

Enter current password for root: spauskite Enter
Switch to unix_socket authentication: n
Change the root password: y
Remove anonymous users: y
Disallow root login remotely: y
Remove test database and access to it: y
Reload privilege tables now: y

Jeigu komanda mariadb-secure-installation nėra randama, naudokite:

mysql_secure_installation

5. Sukurkite WordPress duomenų bazę

Pastaba: vietoje wpnaudotojas ir wplaptazodis - nurodykite savo norimą naudotoją ir slaptažodį.

Prisijunkite prie MariaDB:

mariadb -u root -p

Sukurkite WordPress duomenų bazę:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Sukurkite duomenų bazės naudotoją:

CREATE USER 'wpnaudotojas'@'localhost' IDENTIFIED BY 'wplaptazodis';

Suteikite naudotojui teises į WordPress duomenų bazę:

GRANT ALL PRIVILEGES ON wordpress.* TO 'wpnaudotojas'@'localhost';

Atnaujinkite teises:

FLUSH PRIVILEGES;

Uždarykite MariaDB administravimą:

exit;

6. Įdiekite PHP versiją ir reikalingus modulius

Pamokoje naudosime 8.3 PHP versiją.

Iš naujo nustatykite PHP modulį:

dnf module reset php -y

Įjunkite PHP 8.3 iš Remi repozitorijos:

dnf module enable php:remi-8.3 -y

Įdiekite PHP-FPM ir WordPress reikalingus PHP modulius:

dnf install -y php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-curl php-zip php-intl php-json php-opcache php-soap php-bcmath php-imagick

Patikrinkite PHP versiją:

php -v

7. Sukonfigūruokite PHP-FPM veikimui su Nginx

Atidarykite PHP-FPM konfigūracijos failą:

nano /etc/php-fpm.d/www.conf

Suraskite šias eilutes:

user = apache
group = apache

Ir pakeiskite jas į:

user = nginx
group = nginx

Taip pat suraskite eilutes:

listen.owner = nobody
listen.group = nobody
listen.mode = 0660

Jei nurodytos eilutės užkomentuotos (eilutės pradžioje matomos kabutės), aktyvuokite jas (kabutes nutrinkite) ir pakeiskite į:

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Išsaugokite failą.

Paleiskite PHP-FPM ir įjunkite automatinį paleidimą po serverio perkrovimo:

systemctl enable --now php-fpm

Perkraukite PHP-FPM:

systemctl restart php-fpm

Patikrinkite PHP-FPM būseną:

systemctl status php-fpm

8. Atsisiųskite WordPress

Svarbu: vietoje mano-svetaine.lt - nurodykite savo domeną.

Sukurkite svetainės katalogą:

mkdir -p /var/www/mano-svetaine.lt

Pereikite į laikiną katalogą:

cd /tmp

Atsisiųskite naujausią WordPress versiją:

wget https://wordpress.org/latest.tar.gz

Išskleiskite archyvą:

tar -xzf latest.tar.gz

Perkelkite WordPress failus į svetainės katalogą:

cp -a /tmp/wordpress/. /var/www/mano-svetaine.lt/

Nustatykite failų savininką:

chown -R nginx:nginx /var/www/mano-svetaine.lt

Nustatykite katalogų ir failų teises:

find /var/www/mano-svetaine.lt -type d -exec chmod 755 {} \;
find /var/www/mano-svetaine.lt -type f -exec chmod 644 {} \;

9. Sukurkite WordPress konfigūracijos failą

Pereikite į svetainės katalogą:

cd /var/www/mano-svetaine.lt

Sukurkite WordPress konfigūracijos failą iš pavyzdžio:

cp wp-config-sample.php wp-config.php

Atidarykite konfigūracijos failą:

nano wp-config.php

Raskite šias eilutes:

define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );

Pakeiskite jas taip:

define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpnaudotojas' );
define( 'DB_PASSWORD', 'wplaptazodis' );
define( 'DB_HOST', 'localhost' );

Pastaba: wplaptazodis pakeiskite į tą, kurį naudojote kurdami MariaDB naudotoją.

Sugeneruokite WordPress saugos raktus:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

Gautą rezultatą įklijuokite į wp-config.php vietoje esamų saugos raktų eilučių.

Išsaugokite failą.

10. Sukurkite Nginx konfigūraciją

Svarbu: vietoje mano-svetaine.lt - nurodykite savo domeną.

Sukurkite Nginx konfigūracijos failą:

nano /etc/nginx/conf.d/mano-svetaine.lt.conf

Įrašykite konfigūraciją:

server {
listen 80;
server_name mano-svetaine.lt www.mano-svetaine.lt;

root /var/www/mano-svetaine.lt;
index index.php index.html index.htm;

access_log /var/log/nginx/mano-svetaine.lt.access.log;
error_log /var/log/nginx/mano-svetaine.lt.error.log;

client_max_body_size 64M;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}

location ~ /\. {
deny all;
}
}

Patikrinkite Nginx konfigūraciją:

nginx -t

Jeigu klaidų nėra, perkraukite Nginx:

systemctl reload nginx

11. Sutvarkykite SELinux teises

Patikrinkite SELinux būseną:

getenforce

Jeigu matote Enforcing, pritaikykite reikalingas teises WordPress katalogui:

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/mano-svetaine.lt(/.*)?"
restorecon -Rv /var/www/mano-svetaine.lt

Leiskite prieigą Nginx ir PHP-FPM prie duomenų bazės:

setsebool -P httpd_can_network_connect_db 1

Leiskite WordPress atlikti išorinius HTTP/HTTPS prisijungimus, reikalingus atnaujinimams ir įskiepių diegimui:

setsebool -P httpd_can_network_connect 1

12. Įdiekite Let’s Encrypt SSL sertifikatą

Svarbu: vietoje mano-svetaine.lt - nurodykite savo domeną. Taip pat domenas turi būti nukreiptas į VPS serverį.

Įdiekite Certbot ir Nginx įskiepį:

dnf install -y certbot python3-certbot-nginx

Išduokite SSL sertifikatą domenui:

certbot --nginx -d mano-svetaine.lt -d www.mano-svetaine.lt

Vykdykite Certbot pateikiamus klausimus ekrane.

Patikrinkite automatinio sertifikato atnaujinimo laikmatį:

systemctl list-timers | grep certbot

Atlikite bandomąjį sertifikato atnaujinimą:

certbot renew --dry-run

13. Užbaikite WordPress diegimą naršyklėje

Naršyklėje atidarykite:

https://mano-svetaine.lt

Pasirinkite kalbą ir įveskite:

  • svetainės pavadinimą;

  • administratoriaus naudotojo vardą;

  • nustatykite slaptažodį;

  • administratoriaus el. pašto adresą.

Baigę diegimą prisijunkite prie WordPress administravimo dalies:

https://mano-svetaine.lt/wp-admin

14. Patikrinimas

Patikrinkite įdiegtų servisų būseną:

Patikrinkite Nginx:

systemctl status nginx

Patikrinkite PHP-FPM:

systemctl status php-fpm

Patikrinkite MariaDB:

systemctl status mariadb

Patikrinkite, ar svetainė pasiekiama saugiu HTTPS ryšiu:

https://mano-svetaine.lt

Dažniausios problemos

Nginx rodo 403 Forbidden

Patikrinkite failų savininką:

ls -la /var/www/mano-svetaine.lt

Pritaikykite teises iš naujo:

chown -R nginx:nginx /var/www/mano-svetaine.lt
find /var/www/mano-svetaine.lt -type d -exec chmod 755 {} \;
find /var/www/mano-svetaine.lt -type f -exec chmod 644 {} \;

Jeigu SELinux įjungtas, pakartokite:

restorecon -Rv /var/www/mano-svetaine.lt

Rodomas PHP failo atsisiuntimas vietoje svetainės

Patikrinkite, ar veikia PHP-FPM:

systemctl status php-fpm

Patikrinkite Nginx konfigūraciją:

nginx -t

Perkraukite servisus:

systemctl restart php-fpm
systemctl reload nginx

WordPress negali prisijungti prie duomenų bazės

Patikrinkite wp-config.php duomenis:

nano /var/www/mano-svetaine.lt/wp-config.php

Patikrinkite, ar MariaDB veikia:

systemctl status mariadb

Pabandykite prisijungti su WordPress duomenų bazės naudotoju:

mariadb -u wpnaudotojas -p wordpress

Jeigu prisijungti nepavyksta, patikrinkite duomenų bazės naudotoją ir slaptažodį.

Jeigu nepavyksta išduoti SSL sertifikato

Patikrinkite, ar domenas nukreiptas į serverio IP adresą:

dig +short mano-svetaine.lt
dig +short www.mano-svetaine.lt

Patikrinkite, ar 80 ir 443 prievadai yra atidaryti:

firewall-cmd --list-services

Patikrinkite Nginx konfigūraciją:

nginx -t

Pastaba: serveryje talpinamus failus galite patogiai atsisiųsti, įkelti ir redaguoti kompiuteryje naudodami FTP programą. Plačiau pamokoje: Failų įkėlimas, FTP programos

Ar gavote atsakymą į savo klausimą?