В этом посте будет описана простая установка WordPress на Ubuntu.
Операционная система на базе ядра Linux может быть и любая другая, например Debian.
А в качестве сервера может выступать любая «домашняя железяка», например неттоп или старый ноутбук/ПК. Wordpress по этой статье можно установить и на UBUNTU на бесплатном VPS сервере от Oracle (мой пост на Пикабу по регистрации Always Free VPS от Oracle был здесь).
И если вдруг «страшные рассказы» о том, как Oracle нарушает условия Always Free и всех «банит» через 30 дней использования сервиса, написанные в комментариях под тем постом, коснуться и меня, то запилю пост об этом. Пока у меня всё работает, как часы )))
Включая мой блог на этой VPS.
Предпосылкой написания этой статьи стало то, что некоторое время назад я начал серию публикация на Pikabu посвящённую тематике умного дома. Со временем некоторые статьи стали содержать код (команды Linux, YML-файлы…), который в публикациях не имеет нужной разметки и особенно важной в yaml-файлах — табуляции. Поэтому решил себе завести блог для таких публикаций - HUNY Blog. Ну, а в этой статье поделюсь, как это можно сделать легко и непринуждённо на своём примере. )))
Почему я просто не завёл блог на WordPress.com, а решил установить WordPress на Ubuntu на своём бесплатном сервере:
- нельзя использовать свои темы (шаблоны) для сайтов без тарифа Bussines (1 499 рублей в месяц);
- дизайн бесплатных шаблонов сильно ограничен, а в Personal и Premium (250 и 550 рублей в месяц) очень убогие шаблоны, без возможности гибкой настройки;
- в бесплатной версии не нашёл возможность использовать сервисы аналитики Гугл и Яндекс, а так же инструменты SEO;
- плагины (даже простые) в бесплатной версии не подключить;
Перечислять можно и дальше, но суть проста — практически за каждую простую услугу там нужно платить.
Традиционно для самостоятельной установки WordPress (и развёртывания других веб-приложений и динамических сайтов) используются популярные наборы компонентов LAMP (Linux, Apache HTTP Server, MySQL, PHP) и его вариация LEMP. (в которой веб-сервер Apache заменяется на Nginx). В LEMP Apache заменяется легким, но мощным Nginx, который может обеспечить более предсказуемую производительность при высоких нагрузках. Но я выбрал альтернативный и по моему мнению наиболее простой способ установки, немного отличающийся от традиционных — установка WordPress с помощью Docker Compose и LinuxServer SWAG.
SWAG — Secure Web Application Gateway (ранее известный как letsencrypt, не имеющий отношения к Let’s Encrypt ™) настраивает веб-сервер Nginx и обратный прокси-сервер с поддержкой php и встроенным клиентом certbot, который автоматизирует процессы генерации и обновления бесплатных сертификатов SSL-сервера (Let’s Encrypt и ZeroSSL). Он также содержит fail2ban для предотвращения вторжений.
Преимущества данного способа для меня были очевидны и состоят из нескольких ключевых пунктов:
- Простота. Фактически мы разворачиваем готовый контейнер «в пару кликов» и сайт на WordPress у нас готов,. Перед этим буквально небольшая подготовка системы Lunux (Ubuntu) в плане установки Docker, Docker Compose и Portainer
- Установка WordPress на Ubuntu с HTTPS. Здесь у нас готовый автоматический процесс генерации и обновления бесплатных сертификатов SSL-сервера.
- Бесплатный бэкап WordPress. Можно использовать для этого плагины WordPress, но в Jetpack от WordPress — эта функция платная. «UpdraftPlus — Backup/Restore» в бесплатной версии позволяет делать это только вручную. Есть ещё много разных плагинов для бэкапа, например BackupBuddy…, но я в дальнейшем автоматизирую этот процесс средствами Linux, docker — rsync и/или rclone.
- Возможна установка двух, трёх…. WordPress сайтов в один контейнер на одном сервере.
Итак, у вас должна быть предварительно подготовлено:
- Установлена операционная система Linux (Ubuntu, Debian или другая);
- Установлен Docker, Docker Compose и Portainer;
- Опционально есть доменное имя для вашего блога. Если ещё нет, то в качестве альтернативы для теста можете бесплатно создать домен на duckdns.org. Нам это нужно будет для того, что бы входить на сайт не по IP адресу, и получить сертификат для HTTPS.
В дальнейшем вы сможете зарегистрировать и привязать свой полноценный домен второго уровня для своего сайта или блога в сервисе регистрации доменов, например у российского регистратора доменных имен — REG.RU (Мой промо-код ECA7-B285-57FC-20C2 даст скидку 5% на заказ домена). :-)
Далее будем использовать docker-compose для создания и запуска своих образов и контейнеров, а именно LinuxServer / SWAG и WordPress. Вот содержание docker-compose.yml для этого:
version: '3.3'
services:
swag:
image: linuxserver/swag
container_name: swag
cap_add:
- NET_ADMIN
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Samara
- URL=ВашДомен.duckdns.org # change for your domain
- VALIDATION=http
- EMAIL=mail@mail.ru # optional
- EXTRA_DOMAINS=ВашДомен.duckdns.org # change for your domain
volumes:
- ./config:/config
ports:
- 443:443
- 80:80
restart: unless-stopped
db_pikabu: # change name for every new site wordpress
image: mysql:5.7
container_name: db_pikabu # change name for every new site wordpress
restart: always
ports:
- 3315:3306 # change port for every new site wordpress
volumes:
- ./config/www/pikabu/mysql:/var/lib/mysql # change directory for every new site wordpress
environment:
MYSQL_DATABASE: wordpress
MYSQL_ROOT_PASSWORD: Pikabu1234 # change this password for you
wordpress_pikabu: # change name for every new site wordpress
image: wordpress:latest
container_name: wordpress_pikabu # change name for every new site wordpress
restart: always
ports:
- 7000:80 # change port for every new site wordpress
volumes:
- ./config/www/pikabu/config/php.conf.uploads.ini:/usr/local/etc/php/conf.d/uploads.ini # change directory for every new site wordpress
- ./config/www/pikabu/wordpress:/var/www/html # change directory for every new site wordpress
environment:
WORDPRESS_DB_HOST: db_pikabu # change optional
WORDPRESS_DB_NAME: wordpress # change optional
WORDPRESS_DB_USER: root # change optional
WORDPRESS_DB_PASSWORD: Pikabu1234 # change this password for you
depends_on:
- db_pikabu # change name for every new site wordpress
ВАЖНО СОБЛЮДАТЬ ТАБУЛЯЦИЮ (ОТСТУПЫ)!!! При создании docker-compose.yml, но Пикабу не поддерживает «форматирование текста с отступами». Для удобного копирования форматированного текста, когда приступите непосредственно к установке WopdPress можете перейти на эту страницу, где код отформатирован с отступами.
Где стоит хэштег «# change ….» — укажите свои данные !
Итак, создаём файл docker-compose.yml в удобном для вас месте и удобным для вас способом. Я покажу пример для Ubuntu 20.04 на VPS Oracle (конечно же это полная аналогия и для других вариантов).
Создам его по пути /home/ubuntu
# echo "version: '3.3'
services:" >/home/ubuntu/docker-compose.yml
Вы можете командой echo сразу отправить весь текст (содержание файла выше), либо открыть файл командой nano и вставить содержимое:
# sudo nano /home/ubuntu/docker-compose.yml
После этого сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.
Либо, всё то же самое можно сделать через WinSCP
Для создания и редактирования таких файлов рекомендую использовать Notepad++ вместо «блокнота»:
После создания и сохранения файла, переходим в терминале в папку, где у нас лежит docker-compose.yml командой # cd (в Ubuntu 20.04 на VPS Oracle мы по умолчанию находимся в ней) и запускаем контейнеры:
# docker-compose up -d
Если вы ставили Ubuntu 20.04 на бесплатный VPS сервер от Oracle, то необходимо открыть порт 80 и 443 в Oracle. Как это сделать написано в конце этого поста.
Для «домашней» Ubuntu или Debian на сервере или десктопе тоже нужно открыть порты 80 и 443 для Let’s Encrypt, пробросив их на вашу машину в роутере (см. инструкцию к нему)
После этого проверяем в Portainer, что контейнеры swag, wordpress_pikabu и db_pikabu успешно запустились:
Открываем (для редактирования, удобным вам способом) файл с настройками Nginx — default.
(В папке, где у вас был файл docker-compose.yml — появилась папка config)
В моём примере файл default расположен по пути /home/ubuntu/config/nginx/site-confs
# sudo nano /home/ubuntu/config/nginx/site-confs/default
ALT+T — очищаем всё содержимое файла default, и вставляем следующее:
# redirect all traffic to https
server {
listen 80 default_server;
listen [::]:80 default_server;
return 301 https://$host$request_uri;
}
# main server block for site 1
server {
listen 443 ssl;
#listen [::]:443 ssl;
root /config/www/pikabu/wordpress; # change directory for every new site
index index.html index.htm index.php;
server_name ВашДомен.duckdns.org; # change for your domain
# enable subfolder method reverse proxy confs
include /config/nginx/proxy-confs/*.subfolder.conf;
# all ssl related config moved to ssl.conf
include /config/nginx/ssl.conf;
client_max_body_size 128m; # change opcional, default 0
location / {
try_files $uri $uri/ /index.html /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}
После этого сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.
Где стоит хэштег «# change ….» — укажите свои данные !
ВашДомен.duckdns.org и директорию /config/www/pikabu/wordpress, где вместо pikabu указываете папку в которой создали wordpress на предыдущем этапе.
Перезапускаем в Portainer контейнер swag
После этого заходим в браузере на свой почти созданный сайт по адресу HTTPS://ВашДомен, где у вас должно появится окно «пятиминутной установки WordPress». Выбираем язык:
Заполняем поля для своего сайта:
Если появится такая ошибка, то просто перезапустите в Portainer контейнеры wordpress и db
Входим со своими учётными данными и настаиваем свой сайт на wordpress как вам угодно… А пока на главной странице сайта вас встретит вот такая страничка, с вашим названием сайта конечно же)))
Я же по прежнему буду вести тему «умного дома» в своём профиле на Пикабу, а вот если нужно будет показать какой-либо форматированный код (команды Linux, YML-файлы…), буду публиковать его уже на своём блоге — https://huny.blog )))
Всем пока и Бобра ;-)