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