Я пытаюсь настроить скрипт непрерывного развертывания для Hugo на сервере стека LAMP, и последняя проблема, с которой я сталкиваюсь, — это заставить Hugo работать.
Фон
У меня на VPS установлены Hugo и PHP, а для моего приложения две директории:
public
где живет мой настоящий сайт.hugo
, где вся моя установка Хьюго втягивается из GitHub.Я использую веб-крючок GitHub для проверки связи deploy.php
сценарий, когда я сливаюсь в master
ветка. Вот соответствующая часть этого скрипта:
// 1. Pull the latest build from GitHub
exec('cd /path/to/hugo && git fetch --all && git reset --hard origin/master');
// 2. Run Hugo to compile any new posts and pages into HTML
exec('cd /path/to/hugo && hugo');
// 3. Copy the files in the /public directory from Hugo into the /public app directory
exec('cd /path/to/hugo && cp -r /path/to/hugo/public/. public');
Что происходит
Пункты 1 и 3 запускаются. Пункт 2 нет.
Более четко сказано: последняя сборка извлекается из GitHub, а любые файлы, которые я создал заранее, копируются из сборки Hugo в /public
каталог.
Я не могу получить hugo
бежать через exec()
Впрочем, и я не совсем уверен, почему.
Если я SSH в сервер в окне терминала, cd
в /path/to/hugo
каталог и запустить hugo
там все компилируется, как ожидалось, что исключает такие вещи, как «Возможно, Хьюго установлен неправильно» или «Возможно, Хьюго не доступен в этом каталоге».
Итак … что мне не хватает? Заранее спасибо!
Проверьте, является ли это проблемой с путем, то есть по умолчанию сеанс bash не будет запускать программу только потому, что вы находитесь в нужной папке: вы должны указать ее путь (в вашем случае: текущая папка)
Это означает: заменить && hugo
с && ./hugo
Или, как ОП Крис Фердинанди сделал (Комментарии), вы можете использовать абсолютный путь:
Я ssh-ed на сервер и побежал
which hugo
чтобы получить соответствующий путь, и заменить&& hugo
с этим.
Других решений пока нет …