Поиск по сайту:

Докеризация Wordpress с помощью Nginx и PHP-FPM в Ubuntu 16.04


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 16.04 (Xenial Xerus)

На этой странице

  1. Шаг 1. Установите Docker
  2. Шаг 2. Установите Docker-Compose
  3. Шаг 3. Настройка Wordpress
  4. Шаг 4. Настройка Docker-Compose
  5. Шаг 5. Запустите Docker-compose
  6. Шаг 6. Установите Wordpress
  7. Шаг 7. Доступ к контейнеру Docker
  8. Справочник

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