Прячем Jekyll за nginx
В предыдущих статьях (1, 2) мы установили Jekyll локально и настроили его автозапуск в качестве демона. Всё замечательно работает (по крайней мере, у меня ;)), однако хочется большего: например не вспоминать всякий раз на каком порту он висит, а просто обращаться к серверу по имени и чтоб он возвращал нам наш блог. Ну вот как-то так
Давайте сразу договоримся о начальных данных:
- Имеем виртуальную (в моём случае) или отдельную машину (web-server) с установленным на ней Jekyll. В принципе и наличие одной машины подойдёт. Тут важна концепция, а не детали.
- 10 минут свободного времени.
- Желание.
А больше ничего и не потребуется ;).
Начнём.
Установка и настройка
- Устанавливаем nginx.
sudo apt install nginx
- Убеждаемся, что
systemd
модульnginx.service
существует и активированsudo systemctl enable nginx.service sudo service nginx restart
- Создаём конфиг для нашего сервера
sudo nano /etc/nginx/sites-available/web-server
с содержимым
server { listen 80; server_name web-server; location / { proxy_pass http://localhost:4000/; } }
- Добавляем наш вновь созданный сервер в группу активных серверов
sudo ln -s /etc/nginx/sites-enabled/web-server /etc/nginx/sites-available/web-server
и перезапускаем
nginx
sudo service nginx restart
- Необходимо модифицировать наш
jekyll.service
, чтоб он отдавал контент только локально (а не каждому проходимцу).- Открываем модуль
sudo nano /lib/systemd/system/jekyll.service
- Убираем параметр
--host 0.0.0.0
- Перезагружаем
systemd
sudo systemctl daemon-reload
- Перезапускаем
Jekyll
sudo service jekyll restart
- Открываем модуль
Как проверить, что всё работает
Проверить всё можно довольно просто: откройте браузер и перейдите по ссылке http://web-server. Если всё настроено верно, то откроется ваш блог/сайт. А если не открылся то вот пара возможных причин:
- Ваша клиентская машина не может найти серверную.
Убедиться в этом можно пропинговав сервер с клиента
по имени
ping web-server
Для пущей уверенности стоит убедиться, что по IP сервер всё же доступен
ping <ip сервера>
Починить эту проблему можно достаточно просто: внесите IP адрес и имя сервера в клиентский
/etc/hosts
nginx
настроен неверно. Например файл конфигурации с ошибками или просто забыли добавить свой конфиг в активные сервера и перезагрузитьnginx
Ну а если всё правильно и всё-равно не работает, то тут может быть всё, что угодно. Пишите, будем разбираться.