Барои кор фармудани 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-и абрӣ кушодаанд.
sudo ufw allow 80,443/tcp
1. PHP ва MariaDB-ро насб кунед
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-ро насб мекунад. Санҷед, ки кадомаш дар шумост:
php -v
ls /run/php/
Номи socket-ро, масалан php8.3-fpm.sock, қайд кунед. Он дар қадами 5 лозим мешавад.
2. MariaDB-ро ҳифз кунед ва пойгоҳи додаҳо созед
sudo mariadb-secure-installation
Қиматҳои пешфарзро қабул кунед: аутентификатсияи unix socket-ро барои root нигоҳ доред, корбарони беном ва пойгоҳи додаҳои озмоиширо нест кунед.
Барои WordPress пойгоҳи додаҳо ва корбар созед:
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 дорад:
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-ро боргирӣ намоед
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 супоред:
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-ро бо ин иваз кунед:
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-и худро истифода баред. Баъд:
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-ро созед (версияро мувофиқ кунед):
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 120
opcache.enable = 1
opcache.memory_consumption = 128
sudo systemctl restart php8.3-fpm
OPcache PHP-и компилятсияшударо дар хотира нигоҳ медорад ва бузургтарин афзоиши ройгони суръат аст.
7. Кэш илова кунед
Барои аксари блогҳо плагини кэши саҳифа кофист. Барои сайтҳои серкортар Redis-ро ҳамчун кэши объектҳо илова кунед:
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-ро истифода баред:
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 тавассути плагинҳои кӯҳна рух медиҳанд. Ҳар ҳафта навсозӣ кунед ё онро худкор созед:
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.
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 бо плагин воридшавии дуомиларо фаъол кунед.
- Таҳрири файлҳоро дар панели идора хомӯш кунед:
sudo -u www-data wp config set DISALLOW_FILE_EDIT true --raw
- Кӯшишҳои воридшавиро бо плагин ё Fail2ban маҳдуд кунед.
12. Почтаро боэътимод фиристед
WordPress барқарорсозии парол, огоҳиҳои шарҳҳо ва мактубҳои фармоишро бо нобаёнӣ тавассути mail()-и PHP мефиристад, ки аксар вақт ба спам меафтад. Плагини SMTP ва провайдери дурусти почтаро истифода баред ва сабтҳои SPF ва DKIM-ро барои домени худ тибқи тавсифи провайдер илова кунед. Агар сервер худаш почта фиристад, DNS-и баръаксро барои IP-и он дар консол ба номи хости сервер муқаррар кунед; ба суроғаҳои IP нигаред.
13. Санҷед, ки ҳама чиз кор мекунад
Санҷиши зуди саломатӣ пас аз танзим:
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 ва нусхаи файлҳо, ки берун аз сервер нигоҳ дошта мешаванд, кофӣ аст.