Установка WordPress, Nginx, PHP, MariaDB, PhpMyAdmin, Docker-Compose на Ubuntu

Автор Itworkroom

Установка WordPress, Nginx, PHP, MariaDB, PhpMyAdmin, Docker-Compose на Ubuntu

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.
Docker-Compose — это средство командной строки для определения и управления Multi-контейнером и docker-контейнерами как единой системой. Compose написан на Python и может быть установлен командой Python pip. Благодаря Compose, мы можем запустить несколько контейнеров docker с помощью одной команды. Это позволяет создать контейнер в качестве сервиса, который отлично подходит для разработки, тестирования и промежуточной среды.
Вы узнаете, как создать контейнер из docker образов и управлять всеми контейнеров с Docker-Compose. Мы развернем CMS WordPress в nginx, PHP, MariaDB, PhpMyAdmin. Каждая служба имеет свой собственный контейнер, и мы будем использовать образы из докер-реестра.

Установка Докера (Docker)
Установим последние обновления на ОС:

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
В целях безопасности, мы не будем работать через docker-root, а создадим нового пользователя:

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

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

usermod -a -G docker dockerman
systemctl restart docker

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

su — dockerman
mkdir -p www-compose
cd www-compose/
touch docker-compose.yml
mkdir -p nginx/
mkdir -p logs/nginx/
mkdir -p www/
mkdir -p db-data/

docker-compose.yml — это конфигурационный файл, в котором описываем какие контейнеры запускать, их настройки и связи между контейнерами.

— nginx/: каталог используемый для дополнительной конфигурации nginx, как виртуального хоста и т. д.
db-data/: каталог данных для файлов БД.
— журналы: каталог приложения для nginx, mariadb и php.
— wordpress/: все wordpress файлы будут доступны в этом каталоге.

Далее в директории nginx создайте новый файл для нашего WordPress виртуального хоста. Создайте новый файл в vi nginx/nginx.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 www: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
— ./www:/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=password
links:
— mysql
restart: always

Прикручиваем phpmyadmin для управления СУБД в пользовательском юзерфрендли интерфейсе, вешаем PMA на порт 8080:

pma:
image: phpmyadmin/phpmyadmin
restart: always
links:
— mysql:mysql
ports:
— 8080:80
environment:
PMA_HOST=mysql
MYSQL_USERNAME=root
MYSQL_ROOT_PASSWORD:password

После добавления составных частей в docker-compose.yml — файла, сохраните его и выйдите из редактора. Конфигурация docker-compose готова. У Вас должен получиться файл с таким содержимым:

version: ‘3’

services:

nginx:
image: nginx:latest
ports:
— ’80:80′
volumes:
— ./nginx:/etc/nginx/conf.d
— ./logs/nginx:/var/log/nginx
— ./www:/var/www/html
links:
— wordpress
restart: always

mysql:
image: mariadb
ports:
— ‘3306:3306’
volumes:
— ./db-data:/var/lib/mysql
environment:
— MYSQL_ROOT_PASSWORD=aqwe123
restart: always

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=password
links:
— mysql
restart: always

pma:
image: phpmyadmin/phpmyadmin
restart: always
links:
— mysql:mysql
ports:
— 8080:80
environment:
— PMA_HOST=mysql
— MYSQL_USERNAME=root
— MYSQL_ROOT_PASSWORD:password

Запуск 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, игнорируйте её.

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

netstat -plntu

Теперь откройте веб-браузер и введите URL-адрес сервера или IP-адрес.
http://serverIP/
Вы должны увидеть страницу установки WordPress. Выберите свой язык и нажмите ‘продолжить’.
Если у Вас не открылась страница установки, посмотрите логи nginx, а также файл hosts на ПК с которого вы пытаете открыть сайт.
Заполните детали, такие как: название сайта, админа, пользователя, пароль, адрес электронной почты и нажмите кнопку ‘установить WordPress’. Вы будете перенаправлены на панель администратора WordPress.
WordPress установлен с помощью docker-compose.

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

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

docker-compose exec wordpress bash
ls -lah

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *