Установка в Docker-Compose WordPress на Nginx и PHP под Ubuntu

Автор Itworkroom

Ubuntu, Docker-Compose, WordPress, Nginx, PHP, MariaDB, PhpMyAdmin

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.

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

Вы узнаете, как создать контейнер из docker образов и управлять всеми контейнеров с Docker-Compose. Мы развернем CMS WordPress в nginx, PHP, MariaDB, PhpMyAdmin. Каждая служба имеет свой собственный контейнер, и мы будем использовать образы из докер-реестра.

Установка Докера

Установим последние обновления на ОС:

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

Установка Docker-Compose

Docker-Compose – это программа, написанная на языке Python, он доступен репозитории 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

Установка WordPress в nginx, PHP, MariaDB, PhpMyAdmin

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

useradd -m -s /bin/bash dockerman

passwd dockerman

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

usermod -a -G docker dockerman
systemctl restart docker

Войдите в ОС под созданным пользователем dockerman и создайте каталоги которые будут использоваться в нашем проекте и новый файл под названием Docker-Compose.yml

su — dockerman

mkdir -p wordpress-compose

cd wordpress-compose/

 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/: каталог данных для файлов БД.

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

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

Далее в директории nginx создайте новый файл для нашего WordPress виртуального хоста. Создайте новый файл вvi nginx/wordpress.conf, с следующим содержимым:

server {

    listen 80;

    server_name site.com;

    root /var/www/html;

    index index.php;

    access_log /var/log/nginx/site-access.log;

    error_log /var/log/nginx/site-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;

    }

}

Сохраните файл и выйдите из редактора

Настройка Docker-Compose

Мы используем Nginx последней версии. Настроим сопоставление портов для порта 80 на контейнере в порт 80 на хосте. Также настроим для докера: конфигурацию виртуального хоста Nginx, файлы журнала Nginx и корневой веб-каталога «/var/www/html. Также укажем что контейнер Nginx связан с WordPress контейнером.

Редактируем файлdocker-compose.yml (командой vi docker-compose.yml):

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 и root пароль MySQL с переменной средой «MYSQL_ROOT_PASSWORD». Также настроим контейнер для каталога данных MySQL. Для этого, вставьте в конфигурационный docker-compose.yml текст:

 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, для этого, вставьте в конфигурационный docker-compose.yml текст:

 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 -файл, сохраните файл и выйдите из редактора.

Конфигурация docker-compose готова.

Запуск docker-compose

Начните создание новых контейнеров с docker-compose. Перейдите на WordPress, составьте каталог и запустите новые контейнеры, на основе созданного нами файла.

cd ~/wordpress-compose/

docker-compose up -d

Вы можете увидеть результаты выполнения команды. Были созданы три контейнеры. Давайте проверим состояние контейнера с параметром ps:

dockercompose ps

Если вы хотите увидеть выход журнала из контейнера, вы можете использовать команды ниже:

docker-compose logs nginx

docker-compose logs mysql

docker-compose logs wordpress

Контейнер журналов:

Примечание: Если вы видите в контейнере журнала WordPress ошибку в соединении с MySQL, игнорируйте её.

Установим WordPress

Прежде чем приступить к этому этапу, давайте проверим доступные/открытые порты в системе. Убедитесь, что есть 3 открытых порта: порт 80, 3306 и порт 9000, для этого введите команду:

netstat -plntu                                                        

Результаты приведены ниже:

Теперь откройте веб-браузер и введите URL-адрес сервера или IP-адрес.

http://serverIP/

Вы можете увидеть страницу установки WordPress. Выберите свой язык и нажмите ‘продолжить’.

Заполните детали, такие как: название сайта, админа, пользователя, пароль, адрес электронной почты и нажмите кнопку ‘установить WordPress’. Вы будете перенаправлены на панель администратора WordPress.

WordPress установлен с помощью docker-compose.

Доступ в контейнеры docker

Чтобы убедиться, что все контейнеры доступны и проверить их состояние введите команду:

dockercompose 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 ‘ контейнере, вы увидите все файлы CMS WordPress.

docker-compose exec wordpress bash

ls -lah

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

Добавить комментарий

Ваш адрес email не будет опубликован.