Установка в Docker-Compose WordPress на Nginx и PHP под Ubuntu
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:
docker—compose ps
Если вы хотите увидеть выход журнала из контейнера, вы можете использовать команды ниже:
docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpress
Контейнер журналов:
Примечание: Если вы видите в контейнере журнала WordPress ошибку в соединении с MySQL, игнорируйте её.
Установим WordPress
Прежде чем приступить к этому этапу, давайте проверим доступные/открытые порты в системе. Убедитесь, что есть 3 открытых порта: порт 80, 3306 и порт 9000, для этого введите команду:
netstat -plntu
Результаты приведены ниже:
Теперь откройте веб-браузер и введите URL-адрес сервера или IP-адрес.
Вы можете увидеть страницу установки WordPress. Выберите свой язык и нажмите ‘продолжить’.
Заполните детали, такие как: название сайта, админа, пользователя, пароль, адрес электронной почты и нажмите кнопку ‘установить 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
Все контейнеры доступны.
0