В прошлый раз я описал как приспособил остатки ноутбука в некий «сервер», установил на него Debian с web-сервером и ssh, а также MariaDB и phpMyAdmin. Так же попробовал установить ftp и настроить шифрование его трафика. В комментариях меня упрекали, совершенно справедливо, в использовании устаревшего протокола, полностью соглашаюсь и всем советую использовать как альтернативу sftp.
Первая статья получилась как первый блин... ну вы поняли. Но нужно закончить то, что я начал. В этой статье я опишу как я получил доменное имя, настроил свой роутер, настроил виртуальные хосты, защитил трафик будущего сайта бесплатным сертификатом и установил WordPress.
Все началось с провайдера, у Ростелекома получил статический ip-адрес. Процедура проходила через звонок в техподдержку и спустя сутки я стал счастливым или не очень счастливым обладателем «белой статики». Теперь пора настроить все остальное.
Регистрация доменного имени
Для начала зарегистрируюсь на reg.ru и получу доменное имя. Поехали!
После регистрации подбираю для себя доменное имя:
![](https://habrastorage.org/getpro/habr/upload_files/511/ddb/6c7/511ddb6c7e945052c5e49c25ebbdd2fc.png)
Покупаю его и заполняю анкету:
![](https://habrastorage.org/getpro/habr/upload_files/5b1/1e6/178/5b11e6178328298c17cc457449bfb86a.png)
![](https://habrastorage.org/getpro/habr/upload_files/b54/261/fa3/b54261fa3bb951a1ddcc0a967026d8b6.png)
Готово!
![](https://habrastorage.org/getpro/habr/upload_files/989/126/bd7/989126bd704a54afe786f89e08651e7d.png)
Теперь нужно, чтобы это доменное имя было привязано к моему ip-адресу. Все делается очень просто в личном кабинете. Смена происходит почти моментально. Погнали:
![](https://habrastorage.org/getpro/habr/upload_files/bab/4e0/094/bab4e009480f07ebbcd7dc29e6871c88.png)
![](https://habrastorage.org/getpro/habr/upload_files/ec0/c77/d4a/ec0c77d4a981c34b648738d59cff9c84.png)
![](https://habrastorage.org/getpro/habr/upload_files/c9f/88f/07b/c9f88f07b06be9d96eee5c32b6d6c945.png)
Проверяю с помощью простой команды:
$ ping notabene.site
![](https://habrastorage.org/getpro/habr/upload_files/15c/343/e62/15c343e62480bc23f61c6960830d8200.png)
Настройка Firewall
Поскольку «сервер» у меня за роутером (TP-Link TL-WR1043ND v2) под управлением OpenWRT, я воспользуюсь его firewall’ом и проброшу нужные порты. Настраивается просто:
Логинюсь и попадаю на главную страницу:
![](https://habrastorage.org/getpro/habr/upload_files/48f/5be/946/48f5be946b2358ac772dd2a593b68ae8.png)
Перехожу в настройки Firewall:
![](https://habrastorage.org/getpro/habr/upload_files/66b/f67/7c3/66bf677c3991dbd4da80ab1dd73e5b2e.png)
![](https://habrastorage.org/getpro/habr/upload_files/592/4d6/fa0/5924d6fa0c38451690db139fc1073a53.png)
HTTP:
![HTTP HTTP](https://habrastorage.org/getpro/habr/upload_files/dd6/ba6/16b/dd6ba616b51837deb13ac215f1a555f2.png)
HTTPS:
![HTTPS HTTPS](https://habrastorage.org/getpro/habr/upload_files/547/e1b/ef2/547e1bef2fb1adb5d0783f07e2986dc0.png)
SSH/SFTP:
![SSH/SFTP SSH/SFTP](https://habrastorage.org/getpro/habr/upload_files/4d3/9a1/484/4d39a14848900d844cee9d8ca457496c.jpg)
Можно проверить nmap'ом:
![nmap nmap](https://habrastorage.org/getpro/habr/upload_files/aae/c6c/8f6/aaec6c8f6a3fef30942f742fd8055b4c.png)
Нужные порты проброшены. Порт 9091 - это transmission, на него не нужно обращать внимание, он к этой статье никакого отношения не имеет и настроен отдельно. Приступаю к настройке виртуальных хостов.
Настройка виртуальных хостов
Во время инсталляции я выбрал для установки помимо ssh-сервера еще и web-сервер, а последнее значит, что уже установлен и настроен по умолчанию Apache. Теперь нужно настроить Apache так, чтобы тот направлял посетителей в созданную мной директорию, где как раз и располагаются файлы моего сайта. Можно создать и наполнить файлами сайтов сколь угодно директорий, при этом у посетителей не возникнет даже подозрений в том, что на этом же сервере «работают» другие сайты, если таковые будут настроены в будущем, к ip-адресу можно «привязать» сколь угодно доменных имен. И эта схема будет работать пока сервер сможет выдерживать нагрузку и хватит его дискового пространства. Базовая единица, описывающая отдельный сайт или домен, называется виртуальный хост. Настрою таковой для себя.
Создам, а также настрою принадлежность и права для директории, куда будут копироваться файлы сайта. Затем создам пустой файл index.html:
$ sudo mkdir -p /var/www/notabene.site
$ sudo chown -R $USER:$USER /var/www/notabene.site/
$ sudo chmod -R 755 /var/www
$ vim /var/www/notabene.site/index.html
![](https://habrastorage.org/getpro/habr/upload_files/b80/942/505/b8094250573e7ac5f0e9ca0dabb6f83f.png)
Файл index.html будет демонстрировать, что виртуальный хост работает и у меня получилось его нормально настроить. Наполняю его примерно следующим содержанием:
![](https://habrastorage.org/getpro/habr/upload_files/f68/fef/439/f68fef4399edea30b88398b7341d9d34.png)
Теперь для моего виртуального хоста нужно создать файл конфигурации и заполнить его моими данными. Для начала можно использовать файл, созданный Apache. Просто копирую его с именем моего виртуального хоста:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/notabene.site.conf
![](https://habrastorage.org/getpro/habr/upload_files/dd2/7a8/2cf/dd27a82cf3a860a30234b2563839610b.png)
Затем исправляю его: заполняю вновь созданный файл notabene.site.conf своими данными:
Файл до исправления:
![](https://habrastorage.org/getpro/habr/upload_files/a44/06f/d1e/a4406fd1e8601853f91a0a8250f10e3f.png)
Наполняю его следующим содержанием:
#Redirect ip -> domain
# если будут обращаться по ip
ServerName {IP}
RewriteEngine on
# перенаправляю на домен
Redirect / https://notabene.site/
# почта админа сайта
ServerAdmin admin@notabene.site
# имя сайта
ServerName notabene.site
# псевдонимы
ServerAlias www.notabene.site
ServerAlias 88.147.143.237
Файл после исправления:
![](https://habrastorage.org/getpro/habr/upload_files/b0b/238/def/b0b238def3ee98fc3db762a38ab7be42.png)
Теперь нужно отключить сайт по умолчанию, настройки которого хранятся в файле 000-default.conf:
$ sudo a2dissite 000-default.conf:
![](https://habrastorage.org/getpro/habr/upload_files/cb7/359/d2c/cb7359d2c41a850e9e06c52beaae81b6.png)
Затем включить мой уиртуальный хост командой:
$ sudo a2ensite notabene.site.conf
и на забыть перезапустить службу Apache:
$ sudo systemctl restart apache2:
![](https://habrastorage.org/getpro/habr/upload_files/814/4dd/0da/8144dd0daac66dc8af4e6802f4fd070c.png)
Итак, посмотрим на результат моих действий:
Сначала попробую перейти по внутреннему ip-адресу:
![](https://habrastorage.org/getpro/habr/upload_files/8b6/913/300/8b6913300eb46116233f272ce758b04d.png)
Ну а теперь попробую перейти по доменному имени:
![](https://habrastorage.org/getpro/habr/upload_files/7c9/cb4/69a/7c9cb469af7a0bf7cbaecddb2f993f1b.png)
Сертификат Let’s Encrypt для Apache
Теперь хочу защитить трафик. Платить за сертификат совершенно не хочется и поэтому я выбрал Let’s Encrypt - это центр сертификации, предлагающий достаточно простой способ создания и установки БЕСПЛАТНОГО сертификата TSL/SSL, обеспечивающего шифрование HTTPS-соединения. Процесс генерирования происходит с помощью клиента Certbot. В настоящее время процесс получения и установки сертификата Let’s Encrypt для Apache полностью автоматизирован.
Что ж, устанавливаю certbot с помощью команды:
$ sudo apt install certbot python3-certbot-apache:
![](https://habrastorage.org/getpro/habr/upload_files/c7f/2f5/162/c7f2f5162a203417997bdac77ae65754.png)
Запускаю процесс получения сертификата:
$ sudo certbot --apache
![](https://habrastorage.org/getpro/habr/upload_files/9b1/797/af1/9b1797af196b33ea673aa81e7d3c9e3a.png)
Ввожу адрес электронной почты, принимаю лицензионное соглашение, отказываюсь от рекламной рассылки. Выбираю, для каких сайтов подключить сертификат (чтобы выбрать все из списка, оставляю поле пустым):
![](https://habrastorage.org/getpro/habr/upload_files/c71/17a/236/c7117a2366c75635cd9d40b972419754.png)
Вижу поздравления, по всей видимости все получилось:
![](https://habrastorage.org/getpro/habr/upload_files/de2/33c/2f3/de233c2f3d6928705b7b495dab77684f.png)
Проверяю:
![](https://habrastorage.org/getpro/habr/upload_files/640/615/273/640615273b1ab177f730a30ed38e93a4.png)
Теперь трафик будет зашифрован. Сертификаты выдаются на 90 дней, посему лучше заранее позаботиться об автоматическом продлении сертификата. Но, как я писал ранее, в Apache, в настоящее время, этот процесс автоматизирован. Проверяю это командой:
$ sudo systemctl status certbot.timer
![](https://habrastorage.org/getpro/habr/upload_files/d52/813/7ac/d528137ac42cf529b5bbd8c542f1b783.png)
Все хорошо! Проверка будет осуществляться дважды в день. Для тестирования процесса обновления запускаю "сухой прогон":
$ sudo certbot renew --dry-run
![](https://habrastorage.org/getpro/habr/upload_files/75d/4f2/d20/75d4f2d20c00306acd0b7c3f4c4b120d.png)
"Сухой прогон" не выдал никаких ошибок, а это не может не радовать.
Загрузка и настройка WordPress
Ну что ж, домен есть, сертификат тоже, осталось начать процесс создания сайта. Я выбрал систему управления содержимым сайта WordPress. Она свободно распространяемая с открытым исходным кодом. Согласно информации на сайте википедии, по состоянию на март 2020 года, по данным лаборатории W3Techs, более 41% всех сайтов работали под управлением WordPress, а доля рынка систем управления контентом составляла 63%.
Приступаю к установке. Перехожу во временную директорию, чтобы потом не "прибираться", устанавливаю wget:
$ cd /tmp
$ sudo apt install -y wget
![](https://habrastorage.org/getpro/habr/upload_files/cc5/5ec/413/cc55ec413c1a7b9c94f062210b80b764.png)
и качаю в эту директорию последнюю версию WordPress:
$ wget https://ru.wordpress.org/latest-ru_RU.tar.gz
![](https://habrastorage.org/getpro/habr/upload_files/475/88d/636/47588d6361281e6d35bf20fd8e3ff8f8.png)
Ах да, чуть не забыл, установлю некоторые из самых популярных расширений, которые будет использовать WordPress, затем нужно не забыть перезапустить службу Apache:
$ sudo apt install -y php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip php-imagick
$ sudo systemctl restart apache2
После установки запускаю процесс распаковки WordPress командой:
$ tar -xzvf latest-ru_RU.tar.gz
Копирую распакованное в ранее созданную директорию моего виртуального хоста notabene.site (хорошо бы не забыть удалить созданный мной ранее index.html командой $ rm -r /var/www/notabene.site/*), создаю директорию upgrade для дальнейшего обновления WordPress, без нее нельзя обновить его. Почему этой директории нет в архиве - для меня загадка. Далее нужно настроить принадлежность и корректные разрешения для директории:
$ cp -a /tmp/wordpress/. /var/www/notabene.site/
$ mkdir /var/www/notabene.site/wp-content/upgrade
после установки web-сервера Apache запускается под пользователем и группой www-data, нужно изменить владельца:группу для директории:
$ sudo chown -R www-data:www-data /var/www/notabene.site/
Отдельно изменяю права доступа для всех ДИРЕКТОРИЙ внутри:
$ sudo find /var/www/notabene.site/ -type d -exec chmod 750 {} \;
Отдельно изменяю права доступа для всех ФАЙЛОВ внутри:
$ sudo find /var/www/notabene.site/ -type f -exec chmod 640 {} \;
![](https://habrastorage.org/getpro/habr/upload_files/2b0/74e/ac2/2b074eac22b7336cea8cf2827f05ee2b.png)
Настройка базы данных
Настало время запустить установщик WordPress, но перед этим нужно настроить базу данных. Перехожу на мой сервер http://192.168.1.111/phpmyadmin
![](https://habrastorage.org/getpro/habr/upload_files/f14/aaa/372/f14aaa37265b1df3a917a5092801d622.png)
Ввожу логин и пароль и на первой же странице создаю базу данных:
![](https://habrastorage.org/getpro/habr/upload_files/9bf/49d/c37/9bf49dc3793fe2f3fa96c1a340f28672.png)
Затем создаю пользователя БД:
![](https://habrastorage.org/getpro/habr/upload_files/00a/69f/f75/00a69ff75c2a875fa402c879459b2e9d.png)
![](https://habrastorage.org/getpro/habr/upload_files/9e9/b85/2a6/9e9b852a60416b2dcaa724455faf93d1.png)
![](https://habrastorage.org/getpro/habr/upload_files/9cc/150/13e/9cc15013eb7113c90e0cfbd774bf470d.png)
Страница обновится и тут нужно выбрать для пользователя базу данных, которой он будет управлять, если так можно выразиться:
![](https://habrastorage.org/getpro/habr/upload_files/303/9fc/aa9/3039fcaa953971494ed6143227ea2e7d.png)
![](https://habrastorage.org/getpro/habr/upload_files/ebe/4fc/90e/ebe4fc90e1fde03ca82dfb06c6fdb135.png)
Страница снова обновится и я установкой галочки "check all" выбираю все привилегии:
![](https://habrastorage.org/getpro/habr/upload_files/97a/12d/5ed/97a12d5ed476d049d647760a2dd6d8a0.png)
Установка WordPress
На этом настройка базы данных окончена, перехожу по адресу моего будущего сайта, в моем случае это notabene.site, и запускаю процесс установки WordPress:
![](https://habrastorage.org/getpro/habr/upload_files/dca/bee/087/dcabee087577451d74b08ad05a91d942.png)
Ввожу свои данные:
![](https://habrastorage.org/getpro/habr/upload_files/fba/752/eaf/fba752eaf2dc999fc6c4d710f2a18925.png)
И тут «на проблему напали»…
![](https://habrastorage.org/getpro/habr/upload_files/50f/c52/8ed/50fc528eddf5f2f65948ebd04c63acbe.png)
Ничего страшного - просто следую рекомендациям: копирую содержимое (то, что на синем фоне в маленьком окошке), создаю файл и вставляю в него содержимое из буфера:
$ sudo vim /var/www/notabene.site/wp-config.php
После этого возвращаюсь в браузер и нажимаю «Запустить установку», после ввода данных нажимаю «Установить WordPress»:
![](https://habrastorage.org/getpro/habr/upload_files/baf/e18/132/bafe181325bde750c81d929ecbfb8942.png)
Установка завершена!
Попробую войти в админку:
![](https://habrastorage.org/getpro/habr/upload_files/94c/d37/b3c/94cd37b3c2870b3305918a2c534fcc2f.png)
![](https://habrastorage.org/getpro/habr/upload_files/6b0/fde/3ab/6b0fde3aba3befcc7fe9334eccf5f8c3.png)
Нажимаю «Просмотрите свой сайт»:
![](https://habrastorage.org/getpro/habr/upload_files/05c/6cc/b92/05c6ccb925105beeb58d1bcde4d0e2ff.png)
В этой статье рассмотрены:
создание виртуальных хостов в linux,
настройка брандмауэра роутера,
установка, настройка и обслуживание сертификатов Let’s Encrypt,
развертывание системы управления контентом WordPress.
Спасибо за внимание!
Список информационных источников:
https://ru.wikipedia.org/wiki/Виртуальный_хостинг
https://www.8host.com/blog/sozdanie-sertifikata-lets-encrypt-dlya-apache-v-ubuntu-20-04/
https://ru.wikipedia.org/wiki/WordPress
https://wordpress.org/support/article/how-to-install-wordpress/