Докеризация Wordpress с помощью Nginx и PHP-FPM в Ubuntu 16.04
Это руководство существует для этих версий ОС
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 16.04 (Xenial Xerus)
На этой странице
- Шаг 1. Установите Docker
- Шаг 2. Установите Docker-Compose
- Шаг 3. Настройка Wordpress
- Шаг 4. Настройка Docker-Compose
- Шаг 5. Запустите Docker-compose
- Шаг 6. Установите Wordpress
- Шаг 7. Доступ к контейнеру Docker
- Справочник
Docker-Compose — это инструмент командной строки для определения многоконтейнерных контейнеров Docker и управления ими, как если бы они были одной службой. Compose написан на python и может быть установлен с помощью команды Python pip. С помощью compose мы можем запускать несколько контейнеров докеров с помощью одной команды. Это позволяет вам создать контейнер как услугу, отлично подходящую для вашей среды разработки, тестирования и подготовки.
В этом уроке я шаг за шагом проведу вас по использованию docker-compose. Мы развернем Wordpress с Nginx, MySQL и PHP-FPM. У каждого сервиса есть свой контейнер, и мы будем использовать образы из реестра Docker Hub. Я покажу вам, как создавать контейнеры из образов докеров и управлять всеми контейнерами с помощью docker-compose.
Предпосылка
- Убунту 16.04
- Привилегии root
Шаг 1 — Установите Докер
Мы начнем с нуля, установив docker и docker compose вручную с помощью команды apt.
Прежде чем мы начнем, обновите репозиторий Ubuntu и установите последние обновления:
sudo apt-get update
sudo apt-get upgrade
По умолчанию docker доступен в репозитории Ubuntu, поэтому мы можем сразу продолжить его установку:
sudo apt-get install -y docker.io
Когда установка будет завершена, запустите docker и добавьте его для автоматического запуска при загрузке:
systemctl start docker
systemctl enable docker
Теперь проверьте установку докера с помощью следующей команды:
docker run hello-world
Вы увидите hello-world из докера.
Шаг 2 — Установите Docker-Compose
Docker-compose — это скрипт, написанный на python, он доступен в репозитории python PyPI и может быть установлен с помощью python pip. Поэтому нам нужно сначала установить python и python pip в нашей системе.
Установите python и python-pip:
sudo apt-get install -y python python-pip
Затем установите docker-compose с помощью команды pip:
pip install docker-compose
дождитесь окончания процесса установки. Затем проверьте установку с помощью команды docker-compose:
docker-compose -v
Вы получите версию для создания докеров.
Шаг 3 - Настройка Wordpress
Теперь в системе установлены docker и docker-compose. На этом этапе мы покажем вам, как создать и настроить среду создания докеров для нашего проекта WordPress.
Мы развернем PHP-приложение Wordpress с Nginx в качестве веб-сервера и MariaDB для базы данных MySQL в виде док-контейнеров, управляемых docker-compose. Каждое приложение (Wordpress, Nginx и MySQL) будет работать в своем собственном контейнере, вы можете увидеть список ниже:
- Nginx: мы используем официальный образ докера, последняя версия nginx: последняя.
- Wordpress: Wordpress предоставляет несколько образов докеров на docker-hub, и мы будем использовать WordPress 4.7 с PHP-FPM 7.0.
- MySQL: мы будем использовать официальный контейнер MariaDB последней версии.
Итак, нам нужно 3 образа докера из реестра докер-хаба.
Мы не будем запускать docker от имени пользователя root, мы будем использовать обычного пользователя Linux. Поэтому просто создайте нового пользователя с помощью приведенной ниже команды (не стесняйтесь использовать здесь другое имя пользователя, просто убедитесь, что пользователь еще не существует. Если вы выберете другое имя, обязательно измените его во всех командах, которые следуют в этом руководстве):
useradd -m -s /bin/bash hakase
passwd hakase
Теперь добавьте пользователя в группу docker, чтобы пользователь мог использовать команду docker, и перезапустите службу docker:
usermod -a -G docker hakase
systemctl restart docker
Войдите под пользователем hakase и создайте новый каталог для проекта WordPress:
su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/
Затем создайте новый файл с именем docker-compose.yml и создайте новый каталог для проекта. Просто введите команды ниже:
touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/
Список файлов и каталогов проекта:
- docker-compose.yml: это файл конфигурации docker-compose, вы должны создать его при запуске нового проекта docker-compose.
- nginx/: этот каталог используется для нашей дополнительной конфигурации nginx, такой как виртуальный хост и т. д.
- db-data/: том/каталог для данных mysql. SQL из data /var/lib/mysql монтируется в каталог db-data.
- logs/: каталог для журнала приложений, nginx, mariadb и php-fpm.
- wordpress/: все файлы wordpress будут доступны в этом каталоге.
В каталоге nginx создайте новый файл конфигурации для нашего виртуального хоста WordPress.
Создайте новый файл wordpress.conf:
vim nginx/wordpress.conf
Вставьте конфигурацию ниже:
server {
listen 80;
server_name wp-hakase.co;
root /var/www/html;
index index.php;
access_log /var/log/nginx/hakase-access.log;
error_log /var/log/nginx/hakase-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Сохраните файл и выйдите из vim.
Шаг 4. Настройте Docker-Compose
На этом этапе мы начнем редактировать файл docker-compose.yml. Если вы хотите запустить проект docker-compose, убедитесь, что вы сначала создали файл docker-compose.yml, как мы делаем это ниже.
Отредактируйте docker-compose.yml с помощью vim:
vim docker-compose.yml
Определите ваши сервисы, в первой строке мы определим Nginx. Мы используем официальный образ докера Nginx, последнюю версию, и настраиваем сопоставление портов для порта 80 на контейнере с портом 80 на хосте. Затем настройте тома докера, том для нашей конфигурации виртуального хоста Nginx, том для файлов журнала Nginx и том корневого веб-каталога /var/www/html. Контейнер Nginx связан с контейнером WordPress.
Вставьте конфигурацию ниже:
nginx:
image: nginx:latest
ports:
- '80:80'
volumes:
- ./nginx:/etc/nginx/conf.d
- ./logs/nginx:/var/log/nginx
- ./wordpress:/var/www/html
links:
- wordpress
restart: always
Затем определите сервер MySQL. Мы используем образ MariaDB последней версии. Настройте сопоставление портов для контейнера на порту 3306 и настройте корневой пароль MySQL с помощью переменной среды MYSQL_ROOT_PASSWORD. Наконец, настройте том контейнера для каталога данных MySQL.
Вставьте конфигурацию ниже:
mysql:
image: mariadb
ports:
- '3306:3306'
volumes:
- ./db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=aqwe123
restart: always
Затем мы настроим службу WordPress, используя образ докера WordPress 4.7 с установленным PHP-FPM 7.0. Настройте порт для PHP-fpm на порту 9000, включите том докера для веб-каталога /var/www/html в хост-каталог wordpress, настройте базу данных, определив переменную среды WordPress, и свяжите службу WordPress с mysql.
Вставьте конфигурацию ниже:
wordpress:
image: wordpress:4.7.1-php7.0-fpm
ports:
- '9000:9000'
volumes:
- ./wordpress:/var/www/html
environment:
- WORDPRESS_DB_NAME=wpdb
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PASSWORD=aqwe123
links:
- mysql
restart: always
После добавления трех частей в файл docker-compose.yml сохраните файл и выйдите из редактора vim.
Наша конфигурация docker-compose готова.
Шаг 5 — Запустите Docker-compose
Начните создавать новые контейнеры с помощью docker compose. Перейдите в каталог wordpress-compose и запустите новые контейнеры на основе нашего файла компоновки.
cd ~/wordpress-compose/
docker-compose up -d
Вы можете увидеть результаты команды. Было создано три контейнера. Давайте проверим статус контейнера с опцией ps:
docker-compose ps
Ниже приведен результат:
Если вы хотите увидеть вывод журнала из контейнера, вы можете использовать команды ниже:
docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpress
Журналы контейнера:
Примечание.
Если вы видите в журнале контейнера WordPress сообщение об отказе в подключении к MySQL, игнорируйте его.
Шаг 6 - Установите Wordpress
Прежде чем мы сделаем этот шаг, давайте проверим доступные порты/открытые порты в системе. Убедитесь, что у вас открыто 3 порта: порт 80, порт 3306 и порт 9000.
netstat -plntu
Результаты ниже:
Теперь откройте веб-браузер и введите URL-адрес или IP-адрес сервера.
Вы можете увидеть страницу установки WordPress. Выберите свой язык и нажмите «Продолжить».
Заполните данные своего веб-сайта, такие как название сайта, имя пользователя и пароль администратора, адрес электронной почты, а затем нажмите «Установить Wordpress».
Вы будете перенаправлены на панель администратора Wordpress.
А это пример моего поста в WordPress, привет, мир.
Wordpress был установлен с помощью docker-compose.
Шаг 7. Доступ к контейнеру Docker
Это дополнительный шаг к тому, как получить доступ к контейнеру с помощью docker-compose. Проверяем, что все контейнеры доступны и показываем их статус:
docker-compose ps
У нас уже есть 3 контейнера, теперь мы можем попробовать войти в каждый контейнер. Войдите в первый контейнер Nginx с помощью команды docker-compose.
docker-compose exec nginx bash
nginx: имя службы в файле docker-compose docker-compose.yml
bash: выполнить команду оболочки bash
Теперь проверьте нашу конфигурацию виртуального хоста WordPress.
cat /etc/nginx/conf.d/wordpress.conf
Файлы доступны в контейнере.
Затем попробуйте войти в контейнер mysql, а затем войти в оболочку mysql с нашим паролем в файле компоновки.
docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL ROOT PASSWORD
Посмотреть список баз:
show databases;
Вы увидите нашу базу данных WordPress.
В контейнере WordPress вы увидите все файлы WordPress.
docker-compose exec wordpress bash
ls -lah
Доступ ко всем контейнерам.
Ссылка
- https://github.com/yuzukiseo/hakase-labs