Рубрики
Uncategorized

Как настроить автоматическую генерацию сайта Hugo и развертывание с Git

Допустим, вы попробовали Hugo, вам понравилось, и сделал сайт с ним. Теперь вы готовы de … помечены DevOps, учебным пособием, Ubuntu, Git.

Скажем, что вы пробовали Уго, Вам понравилось, и сделал сайт с ним. Теперь вы готовы развернуть этот сайт для Весь мир чтобы увидеть.

Не было бы здорово, если бы вы могли просто сделать:

git add .
git commit -m "Updated blog content"
git push

И быть сделано с этим?

Ну, если это звучит как ваша вещь; Что-то, что вы хотели бы иметь … Тогда прочитайте на моем друге!

Что вам нужно для этого учебника?

  • Открытый сервер где-то. Если у вас нет одного, вы можете получить VPS (Виртуальный частный сервер) от Линоума , Digitalocean или аналогичные провайдеры.
  • Учетная запись с доступом к Sudo Отказ
  • У вас есть Гит Доступно, от Это руководство.
  • Вы используете Gitolite для управления вашими репозиториями, от Это руководство.
  • Настроенный веб-сервер — Я рекомендую смотреть Nginx , так как в Ubuntu он очень легко настроить.

Давайте предположим:

● Местный ~/.ssh/config Файл с этим контентом:

Host git-server
  # This is the IP for your VPS
  HostName 111.111.111.111
  Port 22
  # This is the remote user
  User yolo

Host web-server
  # This is the IP for your other VPS
  HostName 222.222.222.222
  Port 22
  # This is the remote user
  User webcustomer

● У вас есть ваш проект Hugo, версимый портить И вы можете нажать код на удаленный репозиторий.

● Имя репозитория yolo-web Так что вы можете клонировать это так:

git clone git@git-server:yolo-web

Во-первых, давайте войти на удаленный компьютер; Тот, который вы хотите настроить автоматическое развертывание.

Откройте терминал и SSH в него:

ssh git-server

Нам нужны Hugo Доступна команда, для этого максимально простой способ использовать Snapd :

sudo apt install snapd
sudo snap install hugo

Войти как Гит Пользователь и проверить Hugo работает:

sudo su git -l
hugo version

Вы должны увидеть что-то вроде:

Hugo Static Site Generator v0.34 linux/amd64 BuildDate:

Это важная часть.

Этот скрипт будет отвечать за то, что делает что-то После репозитория получает Git push. . В нашем случае мы хотим сценарий для Git Checkout Копия текущего Мастер ветвь в каталоге нашего выбора, а затем звонить Hugo На нем для генерации файлов HTML для веб-сервера.

Давайте создадим пост-прием файл:

touch ~/repositories/yolo-web.git/hooks/post-receive
chmod 700 ~/repositories/yolo-web.git/hooks/post-receive

И поставить этот контент внутри:

#!/bin/bash

export GIT_WORK_TREE=/home/git/yolo-web-compiled

echo `pwd`
echo "Generating site with Hugo for yolo-web"

mkdir -p $GIT_WORK_TREE
chmod 755 $GIT_WORK_TREE

git checkout -f master

rm -rf $GIT_WORK_TREE/public
cd $GIT_WORK_TREE && /snap/bin/hugo

find $GIT_WORK_TREE/public -type f -print | xargs -d '\n' chmod 644
find $GIT_WORK_TREE/public -type d -print | xargs -d '\n' chmod 755

echo "All done! 0 problems"

Теперь у вас есть процесс на месте, который оставит последние HTML-файлы, сгенерированные Hugo в /home/git/yolo-web compabled Отказ

Давай, попробуй, сделайте некоторые местные изменения, Гит Commit. и Git push. , затем SSH в и посмотри, что внутри /home/git/yolo-web compabled Отказ

Тот же сервер для компиляции и веб-обслуживания

Если ваш веб-сервер находится в одной и той же машине, что и ваш репос, то вы можете просто указать на Символическая ссылка к /home/git/yolo-web-compated/public Каталог и назовите его в день!

Еще…

Компиляция на одном сервере, в Интернете, служащих в другом

Что, если у вас есть разные машины для размещения ваших репозиториев GIT и размещения ваших веб-страниц?

Как бы эта работа? Рад, что вы спросили …

Далее следует самое самообщее решение этой проблемы.

● Создайте пару клавиши SSH для git @ git-server Пользователь с пустой паролем:

ssh git-server
sudo su git -l
sshkey-gen -t rsa -b 4096 -C "git@git-server"

● Попробуйте получить доступ к серверу через SSH -it не удалю, но нам это нужно, чтобы его Подпись зарегистрирован в ~/.ssh/известные_хосты файл.

ssh webcustomer@222.222.222.222

Вы должны ответить Да — Не просто введите y — Когда это спрашивает:

Are you sure you want to continue connecting (yes/no)?

Выход Гит Пользовательская оболочка, вы сейчас находитесь в своем Йоло оболочка.

● Скопируйте открытый ключ от Гит к тебе домой:

sudo cp /home/git/.ssh/id_rsa.pub ~/git.pub

Выход Удаленный сеанс, вы сейчас находитесь в вашем Местный машина.

● Скопируйте git.pub Файл на свой локальный аппарат:

mkdir ~/tmp
scp git-server:git.pub ~/tmp/

● Загрузите ключ к серверу, на котором будет проведена страница:

scp ~/tmp/git.pub web-server:

● Войдите в машину веб-сервера:

ssh web-server

● Скопируйте содержимое ~/git.pub В конце ~/.ssh/aperized_keys Отказ

Вот это, SSH в Git-Server Тогда Sudo Su Git. -l и тестировать что SSH WebCustomer @ 222.222.222.222 работает.

Если последний логин SSH, вы можете сейчас ущерб или rsync Содержание от Машина репозитория к Машина веб-сервера!

● Изменить ~/Репозитории/yolo-web.git/hooks/post-reade Файл и включите звонок на rsync. или SCP Для передачи файлов из Git-Server к Веб-сервер -Я предпочитаю использовать rsync :

#!/bin/bash

export GIT_WORK_TREE=/home/git/yolo-web-compiled

echo `pwd`
echo "Generating site with Hugo for yolo-web"

mkdir -p $GIT_WORK_TREE
chmod 755 $GIT_WORK_TREE

git checkout -f master

rm -rf $GIT_WORK_TREE/public
cd $GIT_WORK_TREE && /snap/bin/hugo

find $GIT_WORK_TREE/public -type f -print | xargs -d '\n' chmod 644
find $GIT_WORK_TREE/public -type d -print | xargs -d '\n' chmod 755

rsync -avzP $GIT_WORK_TREE/public/ \
webcustomer@222.222.222.222:/var/www/yolo-web/html

echo "All done! 0 problems"

ПРИМЕЧАНИЕ: Вам нужно настроить последний параметр для rsync Команда выше, чтобы соответствовать пути к файлам вашего сайта.

Оригинал: «https://dev.to/lobo_tuerto/how-to-setup-automatic-hugo-website-generation-and-deployment-with-git-175i»