🩺 Диагноз: Ты снова тратишь час на то, что делается за 5 минут
Итак, у тебя есть свежий VPS. Ubuntu 22.04, чистый, как слеза. И задача — поднять WordPress. Казалось бы, дело нехитрое. Но ты уже третий раз гуглишь «установка WordPress на Ubuntu», читаешь четыре разных туториала с противоречивыми командами, и где-то на шаге с правами на папку wp-content всё ломается.
Или — классика жанра — сайт встал, но браузер говорит: «Ошибка установки соединения с базой данных WordPress». Поздравляю, ты в хорошей компании. Это случалось с каждым.
- Причины, по которым ручная установка — это боль
- Готовый bash-скрипт: ставит Nginx, PHP, MariaDB и WordPress одной командой
- Настройка SSL (HTTPS) — бесплатно, через Let’s Encrypt
- Автоматическая установка WordPress через WP-CLI (с нужными плагинами)
- Чеклист «что делать, если всё равно сломалось»
- Что делать после установки WordPress, чтобы не выстрелить себе в ногу
Обещание: после этой статьи у тебя будет один скрипт, который ты копируешь на сервер, запускаешь и уходишь пить кофе. WordPress поднимется сам. С базой, с Nginx, с SSL и с базовым набором плагинов.
💊 Почему ручная установка WordPress — это страдание
Давай без соплей — вот почему установка CMS WordPress вручную каждый раз превращается в квест:
1. Несоответствие версий PHP
Ubuntu по умолчанию суёт тебе PHP 8.1 или 8.3, а старый шаблон WordPress, который ты тащишь с прошлого проекта, дружит только с 7.4. Итог: белый экран смерти после установки WordPress.
2. Права на файлы выставлены криво
Классика. chmod 777 — это не решение, это приглашение для всех желающих. А правильная схема прав запоминается примерно на третий раз факапа.
3. Конфиг Nginx написан наугад
Скопировал с Stack Overflow, поменял домен — не работает. Потому что там был Apache-конфиг, а ты не заметил. Nginx и Apache — разные существа с разной логикой.
4. База данных создаётся вручную с опечатками
Пароль с пробелом, кодировка не utf8mb4, пользователь без нужных прав — и вот тебе ошибка установки соединения с базой данных WordPress прямо в момент установки. Привет, wp-config.php.
5. SSL настраивается отдельно и потом ломает редиректы
Certbot поставил, сертификат получил, а сайт всё равно открывается по HTTP. Или хуже — бесконечный редирект. Потому что в wp-config.php забыл прописать FORCE_SSL_ADMIN.
💉 Рецепт: Скрипт автоматической установки WordPress на Ubuntu VPS
Подготовка: что нужно до старта
Перед тем как запускать скрипт, проверь три вещи:
- Чистый VPS на Ubuntu 20.04 или 22.04 (рекомендую 22.04 LTS). Другие дистрибутивы — меняй менеджер пакетов, всё остальное то же самое.
- Root-доступ по SSH. Или sudo-пользователь — но тогда добавляй
sudoперед командами. - Домен, направленный на IP сервера. A-запись должна уже резолвиться. Проверь:
ping yourdomain.comдолжен отвечать с IP твоего VPS. Без этого Let’s Encrypt сертификат не выдаст.
- ОС: Ubuntu 20.04 / 22.04 LTS
- RAM: от 1 GB (рекомендую 2 GB, если планируешь больше 3 плагинов)
- Диск: от 20 GB SSD
- CPU: 1 vCPU минимум
- Открытые порты: 22, 80, 443
Шаг 1: Подключись к серверу и обнови систему
Открой терминал, подключись по SSH и первым делом обнови пакеты. Не пропускай этот шаг — старые пакеты это источник боли номер один.
ssh root@YOUR_SERVER_IP apt update && apt upgrade -y
Шаг 2: Создай скрипт установки
Скопируй блок ниже целиком. Это основной скрипт. Он делает всё: ставит Nginx, PHP 8.2, MariaDB, создаёт базу, скачивает WordPress, настраивает конфиг, выставляет права, ставит WP-CLI и разворачивает сайт.
Создай файл:
nano /root/install_wordpress.sh
Вставь содержимое (замени переменные в самом начале на свои):
#!/bin/bash
# =============================================
# Доктор IT Аптека — Скрипт установки WordPress
# Версия: 2.0 | Ubuntu 20.04 / 22.04
# =============================================
set -e # Стоп при любой ошибке
# ========== ПЕРЕМЕННЫЕ — МЕНЯЙ ЗДЕСЬ ==========
DOMAIN="yourdomain.com" # Твой домен (без www)
DB_NAME="wordpress_db" # Имя базы данных
DB_USER="wp_user" # Пользователь БД
DB_PASS="SuperSecretPass123!" # Пароль БД (поменяй!)
WP_ADMIN_USER="admin" # Логин администратора WP
WP_ADMIN_PASS="WpAdmin@2024!" # Пароль администратора WP (поменяй!)
WP_ADMIN_EMAIL="your@email.com" # Email администратора
WP_SITE_TITLE="Мой WordPress Сайт" # Название сайта
PHP_VERSION="8.2" # Версия PHP
WP_DIR="/var/www/${DOMAIN}" # Директория сайта
# ==============================================
echo "====== Доктор IT Аптека: Начало установки WordPress ======"
echo "Домен: $DOMAIN"
echo "PHP: $PHP_VERSION"
echo "Директория: $WP_DIR"
# ----- 1. Обновление системы -----
echo "[1/10] Обновление системы..."
apt update -qq && apt upgrade -y -qq
# ----- 2. Установка Nginx -----
echo "[2/10] Установка Nginx..."
apt install -y nginx
systemctl enable nginx
systemctl start nginx
# ----- 3. Установка PHP и нужных расширений -----
echo "[3/10] Установка PHP ${PHP_VERSION}..."
apt install -y software-properties-common
add-apt-repository -y ppa:ondrej/php
apt update -qq
apt install -y \
php${PHP_VERSION}-fpm \
php${PHP_VERSION}-<a class="wpil_keyword_link" href="https://it-apteka.com/tag/mysql/" target="_blank" rel="noopener" title="MySQL" data-wpil-keyword-link="linked" data-wpil-monitor-id="1117">mysql</a> \
php${PHP_VERSION}-curl \
php${PHP_VERSION}-gd \
php${PHP_VERSION}-mbstring \
php${PHP_VERSION}-xml \
php${PHP_VERSION}-zip \
php${PHP_VERSION}-bcmath \
php${PHP_VERSION}-intl \
php${PHP_VERSION}-imagick \
php${PHP_VERSION}-soap \
php${PHP_VERSION}-redis \
php${PHP_VERSION}-opcache
systemctl enable php${PHP_VERSION}-fpm
systemctl start php${PHP_VERSION}-fpm
# ----- 4. Настройка PHP для WordPress -----
echo "[4/10] Настройка PHP..."
PHP_INI="/etc/php/${PHP_VERSION}/fpm/php.ini"
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 64M/" $PHP_INI
sed -i "s/post_max_size = .*/post_max_size = 64M/" $PHP_INI
sed -i "s/memory_limit = .*/memory_limit = 256M/" $PHP_INI
sed -i "s/max_execution_time = .*/max_execution_time = 300/" $PHP_INI
sed -i "s/;date.timezone.*/date.timezone = Europe\/Moscow/" $PHP_INI
systemctl restart php${PHP_VERSION}-fpm
# ----- 5. Установка MariaDB -----
echo "[5/10] Установка MariaDB..."
apt install -y mariadb-server mariadb-client
systemctl enable mariadb
systemctl start mariadb
# ----- 6. Создание базы данных -----
echo "[6/10] Создание базы данных WordPress..."
mysql -u root <<EOF
CREATE DATABASE IF NOT EXISTS ${DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASS}';
GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';
FLUSH PRIVILEGES;
EOF
echo "База данных ${DB_NAME} создана."
# ----- 7. Скачивание WordPress -----
echo "[7/10] Скачивание WordPress..."
mkdir -p $WP_DIR
cd /tmp
wget -q https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
cp -a wordpress/. $WP_DIR/
rm -rf /tmp/wordpress /tmp/latest.tar.gz
# ----- 8. Настройка wp-config.php -----
echo "[8/10] Настройка wp-config.php..."
cp ${WP_DIR}/wp-config-sample.php ${WP_DIR}/wp-config.php
# Подставляем данные БД
sed -i "s/database_name_here/${DB_NAME}/" ${WP_DIR}/wp-config.php
sed -i "s/username_here/${DB_USER}/" ${WP_DIR}/wp-config.php
sed -i "s/password_here/${DB_PASS}/" ${WP_DIR}/wp-config.php
# Генерация уникальных ключей безопасности
SALT=$(curl -sL https://api.wordpress.org/secret-key/1.1/salt/)
# Удаляем старые заглушки и вставляем новые ключи
python3 -c "
import re, sys
content = open('${WP_DIR}/wp-config.php').read()
salt = '''${SALT}'''
content = re.sub(r'define\(.AUTH_KEY.+?\n.+?\n.+?\n.+?\n.+?\n.+?\n.+?\n.+?\n', salt + '\n', content, flags=re.DOTALL)
open('${WP_DIR}/wp-config.php', 'w').write(content)
" 2>/dev/null || true
# Добавляем HTTPS и таблицу префикс
cat >> ${WP_DIR}/wp-config.php <<'WPEOF'
/* Принудительный HTTPS */
define('FORCE_SSL_ADMIN', true);
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
/* Лимит памяти */
define('WP_MEMORY_LIMIT', '256M');
/* Отключение редактора файлов в админке (<a class="wpil_keyword_link" title="Безопасность" href="https://it-apteka.com/category/security/" target="_blank" rel="noopener" data-wpil-keyword-link="linked" data-wpil-monitor-id="1120">безопасность</a>) */
define('DISALLOW_FILE_EDIT', true);
WPEOF
# ----- 9. Права на файлы -----
echo "[9/10] Выставляем права..."
chown -R www-data:www-data $WP_DIR
find $WP_DIR -type d -exec chmod 755 {} \;
find $WP_DIR -type f -exec chmod 644 {} \;
# ----- 10. Конфиг <a href="https://it-apteka.com/kak-uskorit-sajt-na-wordpress-cherez-keshirovanie-v-nginx-recept-dlja-teh-kto-ustal-zhdat/" target="_blank" rel="noopener" data-wpil-monitor-id="1126">Nginx для WordPress</a> -----
echo "[10/10] Настройка Nginx..."
cat > /etc/nginx/sites-available/${DOMAIN} <<NGINXEOF
server {
listen 80;
listen [::]:80;
server_name ${DOMAIN} www.${DOMAIN};
root ${WP_DIR};
index index.php index.html index.htm;
# Логи
access_log /var/log/nginx/${DOMAIN}_access.log;
error_log /var/log/nginx/${DOMAIN}_error.log;
# Максимальный размер загрузки
client_max_body_size 64M;
# WordPress permalinks
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
# PHP обработка
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php${PHP_VERSION}-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
# Запрет доступа к .htaccess и скрытым файлам
location ~ /\.ht {
deny all;
}
# Кеширование статики
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|svg|webp)$ {
expires 30d;
add_header Cache-Control "public, immutable";
log_not_found off;
}
# Защита wp-config
location ~* wp-config.php {
deny all;
}
# Защита xmlrpc (если не используешь)
location = /xmlrpc.php {
deny all;
}
}
NGINXEOF
# Активируем сайт
ln -sf /etc/nginx/sites-available/${DOMAIN} /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
# Проверка конфига Nginx
nginx -t && systemctl reload nginx
echo ""
echo "====== Установка завершена! ======"
echo "Сайт временно доступен по: http://${DOMAIN}"
echo "Теперь запусти SSL-настройку (следующий шаг)."
echo "======================================="
Сохрани файл: Ctrl+X → Y → Enter
Шаг 3: Запусти скрипт
chmod +x /root/install_wordpress.sh bash /root/install_wordpress.sh
Скрипт работает около 3-5 минут. В конце увидишь сообщение «Установка завершена». Пока он работает — иди за кофе. Ты заслужил.
[СКРИНШОТ: терминал с прогрессом установки, шаги [1/10]…[10/10], финальное сообщение]Шаг 4: Настройка SSL (HTTPS) через Let’s Encrypt
Бесплатный сертификат. Certbot всё сделает сам — перепишет конфиг Nginx под HTTPS.
# Установка Certbot
apt install -y certbot python3-certbot-nginx
# Получение сертификата (замени domain.com на свой)
certbot --nginx -d yourdomain.com -d www.yourdomain.com \
--non-interactive \
--agree-tos \
--email your@email.com \
--redirect
# Проверка автообновления
systemctl status certbot.timer
После этой команды Nginx автоматически перенастроится на HTTPS, и сайт будет открываться только по защищённому протоколу. Сертификат обновляется автоматически каждые 60 дней.
Шаг 5: Установка WordPress через WP-CLI (без браузера)
WP-CLI — это командная строка для WordPress. Позволяет завершить установку без мастера в браузере, сразу установить нужные плагины и настроить сайт. По факту это самый быстрый способ.
# Скачиваем WP-CLI curl -sO 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 # Проверяем wp --info --allow-root
Теперь разворачиваем WordPress (замени переменные на свои — те же, что в скрипте выше):
# Переходим в директорию сайта
cd /var/www/yourdomain.com
# Завершаем установку WordPress через WP-CLI
wp core install \
--url="https://yourdomain.com" \
--title="Мой WordPress Сайт" \
--admin_user="admin" \
--admin_password="WpAdmin@2024!" \
--admin_email="your@email.com" \
--allow-root
echo "WordPress установлен!"
Готово. WordPress установлен. Без браузера, без мастера, без «after установки WordPress сайт пишет config».

Шаг 6: Установка базовых плагинов через WP-CLI
Лечим сразу и эту боль. Вот набор плагинов, который я ставлю на каждый новый WordPress:
cd /var/www/yourdomain.com # Безопасность wp plugin install wordfence --activate --allow-root # SEO wp plugin install wordpress-seo --activate --allow-root # Кеширование (ускоряет сайт) wp plugin install w3-total-cache --activate --allow-root # Резервные копии wp plugin install updraftplus --activate --allow-root # Оптимизация изображений wp plugin install smush --activate --allow-root # Защита от спама wp plugin install akismet --activate --allow-root # Список установленных плагинов wp plugin list --allow-root
Шаг 7: Установка шаблона WordPress через WP-CLI
Установка шаблона WordPress вручную через FTP — это 2010 год. Делаем как взрослые люди:
cd /var/www/yourdomain.com # <a href="https://it-apteka.com/qwen3-coder-next-besplatnyj-ii-dlja-kodinga-lokalno-ustanovka-cli-i-sravnenie-agentov-2026/" title="Qwen3 Coder Next: бесплатный ИИ для кодинга локально — установка, CLI и сравнение агентов 2026" target="_blank" rel="noopener" data-wpil-monitor-id="1103">Установка популярного бесплатного</a> шаблона Astra wp theme install astra --activate --allow-root # Или установка шаблона OceanWP # wp theme install oceanwp --activate --allow-root # Или установка шаблона по URL (для платных шаблонов) # wp theme install https://example.com/my-theme.zip --activate --allow-root # Список тем wp theme list --allow-root
Шаг 8: Финальная проверка и настройка постоянных ссылок
cd /var/www/yourdomain.com # Устанавливаем структуру постоянных ссылок (ЧПУ) wp rewrite structure '/%postname%/' --allow-root wp rewrite flush --allow-root # Устанавливаем часовой пояс wp option update timezone_string 'Europe/Moscow' --allow-root # Отключаем комментарии по умолчанию (опционально) wp option update default_comment_status closed --allow-root # Проверяем общее состояние wp core verify-checksums --allow-root wp plugin verify-checksums --all --allow-root echo "Всё готово! Открывай https://yourdomain.com"[СКРИНШОТ: WordPress admin панель сразу после установки, чистый вид с установленными плагинами]
🔧 После установки WordPress: что делать обязательно
Сайт поднят. Но расслабляться рано. Вот минимальный чеклист, который отделяет нормальный продакшн от «сайта, которого взломают через месяц».
Безопасность
cd /var/www/yourdomain.com # Смена префикса таблиц БД (если не сделал при установке) # Делать только на пустом сайте! wp search-replace 'wp_' 'xk7_' --<a class="wpil_keyword_link" href="https://it-apteka.com/category/networks/" target="_blank" rel="noopener" title="Сети" data-wpil-keyword-link="linked" data-wpil-monitor-id="1118">network</a> --all-tables --allow-root # Отключение XML-RPC (если не используешь Jetpack) wp plugin install disable-xml-rpc --activate --allow-root # Обновить все плагины и темы wp plugin update --all --allow-root wp theme update --all --allow-root
Настройка автоматического резервного копирования
# Создаём скрипт бэкапа
cat > /root/wp_backup.sh <<'BACKUPEOF'
#!/bin/bash
DOMAIN="yourdomain.com"
WP_DIR="/var/www/${DOMAIN}"
BACKUP_DIR="/root/backups/${DOMAIN}"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="wordpress_db"
DB_USER="wp_user"
DB_PASS="SuperSecretPass123!"
mkdir -p $BACKUP_DIR
# Бэкап базы данных
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > ${BACKUP_DIR}/db_${DATE}.sql.gz
# Бэкап файлов (только uploads и wp-content)
tar -czf ${BACKUP_DIR}/files_${DATE}.tar.gz ${WP_DIR}/wp-content/
# Удаляем бэкапы старше 7 дней
find $BACKUP_DIR -name "*.gz" -mtime +7 -delete
echo "Бэкап завершён: ${DATE}"
BACKUPEOF
chmod +x /root/wp_backup.sh
# Добавляем в cron — каждую ночь в 3:00
(crontab -l 2>/dev/null; echo "0 3 * * * /root/wp_backup.sh >> /var/log/wp_backup.log 2>&1") | crontab -
echo "Бэкап настроен. Запускается каждую ночь в 3:00."
Мониторинг сервера (минимальный)
# Установка htop для мониторинга ресурсов apt install -y htop # Проверка текущего состояния сервисов systemctl status nginx systemctl status php8.2-fpm systemctl status mariadb # Проверка логов на ошибки tail -50 /var/log/nginx/yourdomain.com_error.log tail -50 /var/log/php8.2-fpm.log
🚨 Осложнения: Что делать, если сломалось
Ошибка 1: «Ошибка установки соединения с базой данных WordPress»
Это самая популярная боль после установки WordPress. Лечится по алгоритму:
# Шаг 1: Проверь, запущена ли MariaDB systemctl status mariadb # Если не запущена: systemctl start mariadb # Шаг 2: Проверь правильность данных в wp-config.php grep -E "DB_NAME|DB_USER|DB_PASSWORD|DB_HOST" /var/www/yourdomain.com/wp-config.php # Шаг 3: Проверь, существует ли база и пользователь mysql -u root -e "SHOW DATABASES;" mysql -u root -e "SELECT User, Host FROM mysql.user;" # Шаг 4: Пересоздай пользователя БД если что-то не так mysql -u root <<EOF DROP USER IF EXISTS 'wp_user'@'localhost'; CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'SuperSecretPass123!'; GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost'; FLUSH PRIVILEGES; EOF
Ошибка 2: Nginx возвращает 502 Bad Gateway
# Проверь, запущен ли PHP-FPM systemctl status php8.2-fpm # Перезапусти если надо systemctl restart php8.2-fpm # Убедись, что сокет существует ls -la /var/run/php/php8.2-fpm.sock # Проверь логи Nginx tail -20 /var/log/nginx/error.log
Ошибка 3: После установки WordPress сайт пишет «config» или показывает мастер установки заново
# Значит wp-config.php не создан или сломан ls -la /var/www/yourdomain.com/wp-config.php # Если файла нет — скопируй из sample cp /var/www/yourdomain.com/wp-config-sample.php /var/www/yourdomain.com/wp-config.php # И пропиши данные БД вручную nano /var/www/yourdomain.com/wp-config.php # Меняй: database_name_here, username_here, password_here # Убедись в правах chown www-data:www-data /var/www/yourdomain.com/wp-config.php chmod 644 /var/www/yourdomain.com/wp-config.php
Ошибка 4: Certbot не выдаёт сертификат
# Проверь DNS <a href="https://it-apteka.com/nastrojka-ntp-na-mikrotik-klient-i-server-shpargalka-dlja-ros-6-i-7/" title="Настройка NTP на MikroTik: клиент и сервер — шпаргалка для ROS 6 и 7" target="_blank" rel="noopener" data-wpil-monitor-id="1101">— домен должен резолвиться в IP сервера</a> dig +short yourdomain.com curl ifconfig.me # IP сервера # Оба значения должны совпадать! # Проверь, что порт 80 открыт ufw status ufw allow 80 ufw allow 443 # Попробуй получить сертификат заново certbot --nginx -d yourdomain.com -d www.yourdomain.com
Ошибка 5: WordPress работает медленно
# Включаем OPcache в PHP
echo "opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60" >> /etc/php/8.2/fpm/conf.d/10-opcache.ini
systemctl restart php8.2-fpm
# Проверяем через WP-CLI
wp eval 'echo "OPcache: " . (function_exists("opcache_get_status") ? "работает" : "не работает");' --allow-root
- Проверь логи:
tail -50 /var/log/nginx/error.log - Проверь логи PHP:
tail -50 /var/log/php8.2-fpm.log - Проверь логи WordPress: включи WP_DEBUG в wp-config.php
- Убедись, что все сервисы запущены: nginx, php-fpm, mariadb
- Проверь права на файлы: владелец должен быть www-data
- Сравни данные в wp-config.php с реальными данными в MySQL
Включение режима отладки WordPress
# Добавляем в wp-config.php (только на время отладки, потом убери!) sed -i "s/define( 'WP_DEBUG', false );/define( 'WP_DEBUG', true );\ndefine( 'WP_DEBUG_LOG', true );\ndefine( 'WP_DEBUG_DISPLAY', false );/" /var/www/yourdomain.com/wp-config.php # Смотрим лог ошибок WordPress tail -f /var/www/yourdomain.com/wp-content/debug.log[MEM: мем «Я не знаю, что происходит, но оно работает» — кот за рулём машины]
💻 Бонус: Установка WordPress локально (для разработки)
Если тебе нужна установка WordPress на компьютере для разработки — не мучайся с XAMPP. Используй Docker.
# Установи Docker (если нет)
curl -fsSL https://get.docker.com | sh
# Создай папку проекта
mkdir wp-local && cd wp-local
# Создай docker-compose.yml
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wp_user
MYSQL_PASSWORD: wp_pass
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:php8.2-apache
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: wp_pass
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp-content:/var/www/html/wp-content
depends_on:
- db
volumes:
db_data:
EOF
# Запускаем
docker compose up -d
echo "WordPress локально доступен по: http://localhost:8080"
Через 30 секунд открывай http://localhost:8080 — WordPress готов к настройке локально. Все файлы темы и плагинов лежат в папке ./wp-content — редактируй прямо с хоста.
✅ Прогноз: Что мы сделали и что получили
Давай подобьём итог. Если ты прошёл по всем шагам, у тебя сейчас есть:
| Что сделали | Результат |
|---|---|
| Установили Nginx | Быстрый веб-сервер, настроенный под WordPress |
| Установили PHP 8.2 с расширениями | Все нужные модули для WordPress работают |
| Создали MariaDB и базу данных | Правильные права, utf8mb4, нет «ошибки соединения с БД» |
| Скачали и настроили WordPress | Правильный wp-config.php, настроены права файлов |
| Настроили SSL через Let’s Encrypt | HTTPS работает, сертификат обновляется автоматически |
| Установили плагины через WP-CLI | SEO, безопасность, кеш, бэкапы — всё на месте |
| Настроили автобэкап | Ежедневный бэкап БД и файлов в /root/backups/ |
Весь этот стек — это стандарт продакшн-установки WordPress на VPS. Не «как-нибудь работает», а нормально, с SSL, с правами, с бэкапами.
Что делать дальше
- Зайди в
https://yourdomain.com/wp-adminи провери, что всё работает - Смени пароль администратора если поставил дефолтный
- Настрой Wordfence — он сам подскажет что нужно сделать
- Выбери и активируй тему, настрой её
- Добавь сайт в Google Search Console
Есть вопросы? Что-то не сработало? Пиши в комментарии — я отвечаю своим коллегам по страданиям.
Подпишись на Telegram-канал IT-Аптека — там новые рецепты без воды: скрипты, конфиги, разборы факапов. Один пост в день. Никакого мотивационного контента.

Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.
Подписаться на IT-Аптеку →



