Оглавление

Давайте развернем WordPress в Docker на Ubuntu, используя Nginx в качестве веб-сервера, MariaDB в качестве базы данных и Redis для кэширования. Мы воспользуемся docker-compose, чтобы упростить процесс управления множеством контейнеров. Приготовьтесь к веселой и продуктивной настройке!

Перед началом работы

Прежде чем погрузиться в мир контейнеров, убедитесь, что Docker и Docker Compose установлены на вашем сервере Ubuntu. Проверьте их наличие, выполнив:

docker --version
docker-compose --version

Если они не установлены, не волнуйтесь! Просто выполните следующие команды:

sudo apt update
sudo apt install docker.io -y
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Теперь вы готовы к настоящей DevOps магии!

Шаг 1: Создание файла docker-compose.yml

Создайте файл docker-compose.yml в вашем рабочем каталоге. Этот файл будет содержать все необходимые инструкции для запуска четырех сервисов: WordPress, Nginx, MariaDB и Redis. Откройте текстовый редактор и добавьте следующий код:

version: '3.1'

services:
  wordpress:
    image: wordpress:php7.4-fpm
    volumes:
      - wordpress_data:/var/www/html
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    depends_on:
      - db
      - redis

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
      - wordpress_data:/var/www/html:ro
    depends_on:
      - wordpress

  db:
    image: mariadb
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  redis:
    image: redis:alpine

volumes:
  wordpress_data:
  db_data:

В этом файле мы определяем четыре сервиса и два тома:

  • wordpress: Контейнер с PHP-FPM для обработки PHP-скриптов WordPress.
  • nginx: Веб-сервер, который будет обслуживать статические файлы и перенаправлять запросы PHP в контейнер WordPress.
  • db: Сервис базы данных MariaDB.
  • redis: Контейнер Redis для кэширования объектов WordPress.

Шаг 2: Создание конфигурации Nginx

Создайте файл nginx.conf с указанными выше настройками. Этот файл настраивает Nginx на прослушивание порта 80 и обработку запросов к WordPress. Пример конфигурации может выглядеть так:

server {
    listen 80;
    server_name localhost;

    root /var/www/html;

    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass wordpress:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Шаг 3: Запуск контейнеров

Теперь, когда все готово, из папки, содержащей ваш docker-compose.yml, запустите контейнеры:

sudo docker-compose up -d

Опция -d запускает контейнеры в фоновом режиме, чтобы вы могли продолжать свои дела, не отвлекаясь на консоль.

Шаг 4: Проверка работоспособности

Откройте веб-браузер и перейдите по адресу http://localhost. Вы должны увидеть начальный экран установки WordPress. Если этого не произошло, не стесняйтесь проверить логи контейнеров, чтобы выяснить, что пошло не так:

sudo docker-compose logs

Шаг 5: Настройка Redis для WordPress

Чтобы использовать Redis для кэширования, вам нужно установить плагин. В админке WordPress перейдите в раздел Плагины. Найдите и установите плагин Redis Object Cache. После установки и активации плагина перейдите в его настройки и укажите хост Redis, который в нашем случае будет redis, так как мы использовали это имя в docker-compose.yml.

Дополнительные рекомендации

  • Безопасность: Используйте сложные пароли и обязательно измените их в docker-compose.yml перед развертыванием в продакшн.
  • Резервное копирование: Регулярно выполняйте резервное копирование ваших томов Docker, чтобы предотвратить потерю данных.
  • Обновления: Регулярно обновляйте образы Docker и следите за обновлениями WordPress, чтобы ваш сайт был защищен от уязвимостей.

Следуя этим инструкциям, вы сможете успешно развернуть WordPress на сервере Ubuntu с использованием Docker, Nginx, MariaDB и Redis. Ваш сайт будет работать быстро, как хорошо отлаженная машина, а вы сможете сосредоточиться на создании контента, а не на его доставке!