Menu

Докеризация Wordpress на Nginx и PHP-FPM под Ubuntu 16.04

Docker-Compose- это средство командной строки для определения и управления Multi-контейнером и docker-контейнерами как единой системой. Compose написан на Python и может быть установлен командой Python pip. Благодаря Compose , мы можем запустить несколько контейнеров docker с помощью одной команды. Это позволяет создать контейнер в качестве сервиса, который отлично подходит для разработки, тестирования и промежуточной среды.

В этой статье вы узнаете как использовать Docker-Compose. Мы развернем 'Wordpress' на базе nginx, MySQL и PHP- FPM. Каждая служба имеет свой собственный контейнер, и мы будем использовать изображения из докер-концентрирующего реестра.

Особенности: В Ubuntu 16.04 Права Root

Шаг 1.  Установка Докера

Мы начнем с нуля: устанавливаем Docker-Compose вручную с помощью команды apt.

Прежде чем мы начнем, следует установить последние обновления:

 sudo apt-get update
sudo apt-get upgrade 

Настройка репозитория Ubuntu доступна по умолчанию, поэтому мы можем продолжить его установку прямо сейчас:

 sudo apt-get install -y docker.io 

Когда установка завершится, запустите настройки и добавьте его в автоматический запуск при загрузке:

 systemctl start docker
systemctl enable docker 

Теперь проверьте установленные настройки с помощью команды ниже:

docker run hello-world 

Вы увидите приветствие от докера.

Шаг 2. Установка Docker-Compose

Docker-Compose – это скрипт, написанный на языке Python, он доступен на PyPI репозитории Python и может быть установлен с помощью 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 

Вы получили версию docker-compose.

Шаг 3. Установка WordPress

Теперь, docker и docker-compose установлены в системе. Мы развернем 'WordPress' на базе интерпретатора PHP с nginx в качестве веб-сервера, и mariadb в качестве базы данных, плюс контейнер, управляемый docker-compose. Каждое приложение (WordPress, nginx и MySQL) будет работать в своем собственном контейнере:

- Сервер nginx: мы используем официальный docker-образ, последнюю версию 'nginx: latest':

-Wordpress: предоставляет некоторые образы docker в докер-концентраторе, мы будем использовать WordPress 4.7 с PHP-FPM 7.0 .

- MySQL: мы будем использовать mariadb в официальном контейнере.

Поэтому нам нужны 3 docker-образа.

Мы не будем работать от root или обычного пользователя Linux. Создайте нового пользователя с помощью команды ниже (рекомендую придумать оригинальное имя пользователя, для примера выбираем пользователя в японском стиле santoku):

useradd -m -s /bin/bash santoku
passwd santoku

Теперь добавьте пользователя в докер-группы, чтобы он мог использовать команды настройки, и перезагрузите сервис докера:

usermod -a -G docker santoku
systemctl restart docker

Войдите в пользователя santoku и создайте новый каталог для проекта WordPress:

su -santoku
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 - это конфигурационный файл, который вы должны создать, начиная новый проект.

- nginx/: этот каталог, используемый для дополнительной конфигурации nginx'как виртуального хоста и т.д.

db-data/: каталог данных SQL из данных '/var/lib/mysql' не установлен в данные db-каталога.

- журналы: каталог приложения для nginx, mariadb и php-fpm.

- wordpress/: все файлы wordpress будут доступны в этом каталоге.

В директории nginx создайте новый файл для нашего WordPress виртуального хоста. Создайте новый файл в WordPress.conf:

vim nginx/wordpress.conf 

Вставьте конфигурацию ниже:

server {
    listen 80;
    server_name wp-santoku.co; root /var/www/html; index index.php; access_log /var/log/nginx/santoku-access.log; error_log /var/log/nginx/santoku-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 на хосте. Затем настройте объемы Docker: объем конфигурации виртуального хоста 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, подключаем том Docker для директории «/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 ,составьте каталог и запустите новые контейнеры, на основе созданного нами файла.

 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-адрес.

http://serverIP/

Вы можете увидеть страницу установки 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 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 

Все контейнеры доступны.

Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top