Как настроить 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: новые возможности оптимизации сайта.