Šioje pamokoje apžvelgsime, kaip įdiegti "WordPress" turinio valdymo sistemą į savarankiškai administruojamą VPS serverį, kartu įdiegiant visus reikiamus komponentus svetainės veikimui:
Nginx (web serveris)
MariaDB (duom. bazių valdymas)
PHP-FPM (PHP palaikymas)
Let’s Encrypt (SSL sertifikatas)
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
