Скажем, что вы пробовали Уго, Вам понравилось, и сделал сайт с ним. Теперь вы готовы развернуть этот сайт для Весь мир чтобы увидеть.
Не было бы здорово, если бы вы могли просто сделать:
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»