Wolkra

Дастурҳо

Чӣ тавр WordPress-ро дар VPS насб кардан мумкин аст

WordPress-ро дар VPS бо Caddy, PHP-FPM ва MariaDB дар Ubuntu 24.04 насб кунед: пойгоҳи додаҳо, HTTPS-и худкор, WP-CLI, кэш, нусхаҳои эҳтиётӣ ва навсозиҳо, қадам ба қадам.

Навсозӣ: 5 дақиқа хондан

Барои кор фармудани WordPress дар VPS веб-сервер (дар ин ҷо Caddy), PHP-FPM бо васеъшавиҳои лозимии WordPress ва MariaDB-ро насб кунед; пойгоҳи додаҳо ва корбар созед; WordPress-ро бо WP-CLI боргирӣ кунед; ва доменро ба сервер равона кунед, то Caddy HTTPS-ро фаъол созад. Дар Ubuntu 24.04 тамоми танзим тақрибан 20 дақиқа вақт мегирад.

Агар хоҳед аз кори дастӣ гузаред, барномаи якклика WordPress дар Wolkra ҳамин стекро худкор насб мекунад. Ин дастур нишон медиҳад, ки дар зери он чӣ рух медиҳад, то шумо онро худатон идора ва ислоҳ карда тавонед.

Пеш аз оғоз

  • Сервер бо Ubuntu 24.04 (Debian 12 бо ҳамин қадамҳо кор мекунад), 2 GB хотира тавсия дода мешавад.
  • Қадамҳои аввал иҷро шудаанд: навсозиҳо, корбари sudo, калидҳои SSH.
  • Домен бо сабти A (ва AAAA, агар IPv6 истифода баред), ки ба сервер равона шудааст. Дар ин дастур: blog.example.com.
  • Портҳои 80 ва 443 дар UFW ва дар ҳар firewall-и абрӣ кушодаанд.
bash
sudo ufw allow 80,443/tcp

1. PHP ва MariaDB-ро насб кунед

bash
sudo apt update
sudo apt install -y mariadb-server \
  php-fpm php-mysql php-curl php-gd php-intl php-mbstring \
  php-xml php-zip php-imagick php-bcmath unzip

Ubuntu 24.04 PHP 8.3 ва Debian 12 PHP 8.2-ро насб мекунад. Санҷед, ки кадомаш дар шумост:

bash
php -v
ls /run/php/

Номи socket-ро, масалан php8.3-fpm.sock, қайд кунед. Он дар қадами 5 лозим мешавад.

2. MariaDB-ро ҳифз кунед ва пойгоҳи додаҳо созед

bash
sudo mariadb-secure-installation

Қиматҳои пешфарзро қабул кунед: аутентификатсияи unix socket-ро барои root нигоҳ доред, корбарони беном ва пойгоҳи додаҳои озмоиширо нест кунед.

Барои WordPress пойгоҳи додаҳо ва корбар созед:

bash
DBPASS=$(openssl rand -hex 20)
echo "Database password: $DBPASS"
sudo mariadb <<SQL
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp'@'localhost' IDENTIFIED BY '$DBPASS';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'localhost';
FLUSH PRIVILEGES;
SQL

Паролро нигоҳ доред; ба зудӣ WP-CLI ба он ниёз дорад.

3. Caddy-ро насб кунед

Caddy анбори расмии Debian/Ubuntu дорад:

bash
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | \
  sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
  sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy

4. WP-CLI-ро насб кунед ва WordPress-ро боргирӣ намоед

bash
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Феҳристи сайтро созед ва онро ба корбари PHP супоред:

bash
sudo mkdir -p /var/www/blog
sudo chown www-data:www-data /var/www/blog
cd /var/www/blog
sudo -u www-data wp core download
sudo -u www-data wp config create \
  --dbname=wordpress --dbuser=wp --dbpass="$DBPASS" --dbhost=localhost
sudo -u www-data wp core install \
  --url=https://blog.example.com \
  --title="My Blog" \
  --admin_user=admin_$(openssl rand -hex 3) \
  --admin_email="<почтаи_шумо>" \
  --prompt=admin_password

Номи корбари маъмурие, ки пешбинӣ кардан душвор аст, ҳамлаҳои тахминиро мушкилтар мекунад. --prompt паролро мепурсад, то он дар таърихи shell-и шумо намонад.

5. Caddy-ро танзим кунед

/etc/caddy/Caddyfile-ро бо ин иваз кунед:

text
blog.example.com {
    root * /var/www/blog
    encode zstd gzip
    php_fastcgi unix//run/php/php8.3-fpm.sock
    file_server

    @blocked path /xmlrpc.php /wp-config.php /.git/* /.env
    respond @blocked 404

    header {
        Strict-Transport-Security "max-age=31536000"
        X-Content-Type-Options "nosniff"
        Referrer-Policy "strict-origin-when-cross-origin"
    }
}

Номи socket-и PHP-и худро истифода баред. Баъд:

bash
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

Caddy ҳангоми дархости аввал сертификат мегирад. https://blog.example.com/wp-admin/-ро кушоед ва ворид шавед. Имкониятҳои бештар дар дастур оид ба прокси-и баръакси Caddy оварда шудаанд.

6. PHP-ро танзим кунед

Қиматҳои пешфарз барои боргузории медиа хурданд. /etc/php/8.3/fpm/conf.d/99-wordpress.ini-ро созед (версияро мувофиқ кунед):

ini
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 120
opcache.enable = 1
opcache.memory_consumption = 128
bash
sudo systemctl restart php8.3-fpm

OPcache PHP-и компилятсияшударо дар хотира нигоҳ медорад ва бузургтарин афзоиши ройгони суръат аст.

7. Кэш илова кунед

Барои аксари блогҳо плагини кэши саҳифа кофист. Барои сайтҳои серкортар Redis-ро ҳамчун кэши объектҳо илова кунед:

bash
sudo apt install -y redis-server php-redis
sudo systemctl restart php8.3-fpm
cd /var/www/blog
sudo -u www-data wp plugin install redis-cache --activate
sudo -u www-data wp redis enable

Redis бо нобаёнӣ танҳо дар localhost гӯш медиҳад. Ҳамин тавр нигоҳ доред.

8. Cron-и WordPress-ро аз система иҷро кунед

WordPress вазифаҳои банақшагирифташударо ҳангоми дидани саҳифаҳо оғоз мекунад, ки дар сайтҳои ором боэътимод нест ва дар сайтҳои серкор исрофкорона аст. Ба ҷои он вазифаи воқеии cron-ро истифода баред:

bash
sudo -u www-data wp config set DISABLE_WP_CRON true --raw
echo '*/5 * * * * www-data cd /var/www/blog && /usr/local/bin/wp cron event run --due-now --quiet' | \
  sudo tee /etc/cron.d/wordpress

9. Навсозиро фаромӯш накунед

Аксари рахнаҳои WordPress тавассути плагинҳои кӯҳна рух медиҳанд. Ҳар ҳафта навсозӣ кунед ё онро худкор созед:

bash
cd /var/www/blog
sudo -u www-data wp core update
sudo -u www-data wp plugin update --all
sudo -u www-data wp theme update --all

Плагинҳо ва мавзӯъҳоеро, ки истифода намебаред, нест кунед. Ҳар яки онҳо коде аст, ки метавонад рахна дошта бошад.

10. Нусхаи эҳтиётӣ гиред

Ба шумо ду чиз лозим аст: пойгоҳи додаҳо ва wp-content.

bash
sudo mkdir -p /var/backups/blog
cd /var/www/blog
sudo -u www-data wp db export - | gzip | sudo tee /var/backups/blog/db-$(date +%F).sql.gz >/dev/null
sudo tar czf /var/backups/blog/files-$(date +%F).tar.gz -C /var/www/blog wp-content

Инро барои ҳар шаб ба нақша гиред ва ба ҷои дигар нусхабардорӣ кунед. Дар Wolkra нусхаҳои эҳтиётии худкори ҳаррӯзаи серверро (20% нархи сервер, 7 нуқтаи барқарорсозӣ) илова кунед ва пеш аз навсозиҳои калон snapshot гиред. Ба дастур оид ба стратегияи нусхабардорӣ нигаред.

11. Асосҳоро мустаҳкам кунед

  • SSH-ро танҳо бо калидҳо нигоҳ доред ва системаро навсозӣ кунед (ҳифз кардани сервери Ubuntu).
  • Барои маъмурони WordPress бо плагин воридшавии дуомиларо фаъол кунед.
  • Таҳрири файлҳоро дар панели идора хомӯш кунед:
bash
sudo -u www-data wp config set DISALLOW_FILE_EDIT true --raw
  • Кӯшишҳои воридшавиро бо плагин ё Fail2ban маҳдуд кунед.

12. Почтаро боэътимод фиристед

WordPress барқарорсозии парол, огоҳиҳои шарҳҳо ва мактубҳои фармоишро бо нобаёнӣ тавассути mail()-и PHP мефиристад, ки аксар вақт ба спам меафтад. Плагини SMTP ва провайдери дурусти почтаро истифода баред ва сабтҳои SPF ва DKIM-ро барои домени худ тибқи тавсифи провайдер илова кунед. Агар сервер худаш почта фиристад, DNS-и баръаксро барои IP-и он дар консол ба номи хости сервер муқаррар кунед; ба суроғаҳои IP нигаред.

13. Санҷед, ки ҳама чиз кор мекунад

Санҷиши зуди саломатӣ пас аз танзим:

bash
curl -I https://blog.example.com
sudo -u www-data wp --path=/var/www/blog core verify-checksums
sudo -u www-data wp --path=/var/www/blog cron event list
systemctl status caddy php8.3-fpm mariadb --no-pager

verify-checksums файлҳои асосиро бо нашри расмӣ муқоиса мекунад ва инчунин роҳи зуди ошкор кардани тағйироти беиҷозат дар оянда аст.

Андоза ва афзоиш

Чанд ҳафта хотира ва CPU-ро дар графикҳои консол назорат кунед. Агар коргарони PHP намерасанд, pm.max_children-ро дар /etc/php/8.3/fpm/pool.d/www.conf зиёд кунед ё серверро ба тарифи калонтар гузаронед. Трафик дар ҳар тарифи Wolkra ҳисоб карда намешавад, бинобар ин моҳи серкор ҳисобро баланд намекунад. Барои маълумоти бештар дар бораи кор фармудани сайтҳо бо ин роҳ ба хостинги WordPress нигаред.

Саволҳои маъмул

Оё барои WordPress VPS аз хостинги муштарак беҳтар аст?

VPS ба шумо захираҳои худатон, назорати пурра бар PHP ва кэш медиҳад ва дар ҳамон ҳисоб ҳамсояҳои пурсадо нестанд. Аммо навсозиҳо ва амниятро, ки хостинги муштарак барои шумо иҷро мекунад, худатон ба дӯш мегиред.

WordPress дар VPS чӣ қадар хотира лозим дорад?

Як сайт бо пойгоҳи додаҳо бо эҳтиёт дар 1 GB кор мекунад. 2 GB бароҳаттар аст ва мағозаҳои серкор бо WooCommerce аксар вақт 4 GB мехоҳанд.

Чаро ба ҷои Nginx ё Apache Caddy-ро истифода барем?

Caddy сертификатҳои HTTPS-ро худаш мегирад ва нав мекунад ва танҳо чанд сатри танзимот лозим дорад. Nginx ва Apache ҳамин қадар хуб кор мекунанд, вале танзими бештар талаб мекунанд.

Оё WordPress-ро пешакӣ насбшуда гирифтан мумкин аст?

Бале. Барномаи якклика WordPress-и Wolkra Caddy, PHP, MariaDB ва WP-CLI-ро барои шумо танзим мекунад ва чанд дақиқа пас аз оғози сервер омода аст.

Аз WordPress чӣ тавр нусхаи эҳтиётӣ гирам?

Ҳам аз пойгоҳи додаҳо ва ҳам аз папкаи wp-content нусха гиред. Содироти шабонаи пойгоҳи додаҳо бо WP-CLI ва нусхаи файлҳо, ки берун аз сервер нигоҳ дошта мешаванд, кофӣ аст.

Сервер дар Франкфурт оғоз кунед

Ҳисоб созед, тавозунро пур кунед ва серверро аз €3.49 дар як моҳ иҷро кунед, танҳо барои соатҳое, ки истифода мебаред, пардохт карда. Трафики ҳисобнашаванда дар ҳар тариф.