Давайте развернем 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. Ваш сайт будет работать быстро, как хорошо отлаженная машина, а вы сможете сосредоточиться на создании контента, а не на его доставке!