Как настроить WordPress с помощью Ansible за 10 минут: быстрый гайд
Введение
В этой статье мы покажем, как развернуть полноценный WordPress‑сайт за 10 минут, используя Ansible. Автоматизируем установку LEMP‑стека, настройку базы, безопасность и деплой.
Подготовка окружения: LEMP‑стек
Перед запуском плейбука необходимо подготовить сервер Ubuntu 20.04 (или 22.04). Установим Nginx, PHP‑8.1, MariaDB и необходимые расширения.
sudo apt update && sudo apt install -y nginx php-fpm php-mysql mariadb-server После установки убедитесь, что сервисы запущены:
sudo systemctl enable --now nginx php7.4-fpm mariadb Плейбук Ansible для WordPress
Структура проекта
Создаём каталог wp-ansible со следующей структурой:
wp-ansible/ ├── inventory/ │ └── hosts.yml ├── playbooks/ │ └── site.yml ├── roles/ │ ├── lemp/ │ └── wordpress/ └── group_vars/ └── all.yml Основной playbook (site.yml)
- hosts: webservers become: true vars_files: -../group_vars/all.yml roles: - lemp - wordpress Роли и переменные
Роль lemp
Роль отвечает за установку и настройку Nginx, PHP и MariaDB.
# roles/lemp/tasks/main.yml - name: Install Nginx apt: name: nginx state: present - name: Install PHP and extensions apt: name: - php-fpm - php-mysql - php-xml state: present - name: Install MariaDB server apt: name: mariadb-server state: present Роль wordpress
Скачиваем ядро, настраиваем wp-config.php и создаём виртуальный хост.
# roles/wordpress/tasks/main.yml - name: Download WordPress get_url: url: https://wordpress.org/latest.tar.gz dest: /tmp/wordpress.tar.gz - name: Extract archive unarchive: src: /tmp/wordpress.tar.gz dest: /var/www/ remote_src: yes - name: Set correct permissions file: path: /var/www/wordpress owner: www-data group: www-data recurse: yes - name: Create wp-config.php from template template: src: wp-config.php.j2 dest: /var/www/wordpress/wp-config.php owner: www-data mode: '0644' Настройка безопасности
Для защиты сайта добавляем Fail2Ban, ограничиваем доступ к wp‑admin и включаем SSL через Let’s Encrypt.
- Установить
ufwи разрешить только 80/443. - Настроить
fail2banдля защиты от brute‑force. - Включить HTTP‑Strict‑Transport‑Security (HSTS) в конфигурации Nginx.
Более подробные рекомендации по защите найдёте в статье Защита WordPress от DDoS: GRE‑туннель Cloudflare в 7 шагах.
Деплой и проверка
Запускаем Ansible:
ansible-playbook -i inventory/hosts.yml playbooks/site.yml После завершения откройте https://your-domain.com. Если всё настроено, вы увидите страницу установки WordPress.
Для ускорения работы можно включить кэширование и шардировать статический контент. Читайте Domain sharding в WordPress и MySQL кэширование WordPress для глубокой оптимизации.
Заключение
С помощью Ansible вы получаете воспроизводимый процесс установки WordPress, который укладывается в 10‑минутный тайм‑фрейм. Дальнейшую масштабируемость обеспечивают роли, переменные и возможность интеграции с CI/CD.
📚 Читайте также:
❓ Часто задаваемые вопросы
Как указать параметры базы данных в Ansible?
Параметры базы задаются в файле group_vars/all.yml и передаются в шаблон wp-config.php.j2 через переменные Ansible.
Можно ли использовать Ansible для обновления WordPress?
Да, создайте отдельную роль, которая скачивает новую версию, сохраняет текущие файлы и выполняет миграцию базы, затем вызывайте её из плейбука.
Как добавить SSL‑сертификат в автоматический процесс?
В роли lemp используйте модуль acme_certificate для получения сертификата от Let’s Encrypt и настройте Nginx‑блок с HTTPS.
Где найти рекомендации по оптимизации MySQL для WordPress?
Подробные советы по кэшированию и настройке MariaDB/MySQL описаны в статье MariaDB 11.4 и WordPress: новые возможности оптимизации сайта.