我创建了 jekyll 网站。关于部署我不想托管在 github 页面上。为了托管私有域,我从文档中得知要从 _site 文件夹中复制所有文件。这都是邪恶的。
问题:
每次我添加新的博客文章时,我都会运行 cmd>jekyll build 然后我将新创建的 html 复制到托管域。有没有什么简单的方法不用每次都编译更新?
原因,我问的原因是因为它将由非技术人员更新
谢谢您的帮助!!
我创建了 jekyll 网站。关于部署我不想托管在 github 页面上。为了托管私有域,我从文档中得知要从 _site 文件夹中复制所有文件。这都是邪恶的。
问题:
每次我添加新的博客文章时,我都会运行 cmd>jekyll build 然后我将新创建的 html 复制到托管域。有没有什么简单的方法不用每次都编译更新?
原因,我问的原因是因为它将由非技术人员更新
谢谢您的帮助!!
文档中提到了许多可用选项:http: //jekyllrb.com/docs/deployment-methods/
如果你使用 Git,我会推荐 Git Post-Receive Hook 方法。它只是在收到新代码后构建站点:
GIT_REPO=$HOME/myrepo.git
TMP_GIT_CLONE=$HOME/tmp/myrepo
PUBLIC_WWW=/var/www/myrepo
git clone $GIT_REPO $TMP_GIT_CLONE
jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit
由于您提到它将由非技术人员更新,您可能会尝试rack-jekyll
在新文件通过 FTP 时自动重建。
如果您不想使用 GitHub Pages,AFAIK 除了每次进行更改时都编译您的网站之外别无他法。
但当然,您可以尽可能多地编写脚本/自动化。
这也是我对自己的博客所做的。我将它托管在我自己的网络空间而不是 GitHub Pages 上,因此我需要为每次更新执行以下步骤:
我可以通过单击来完成此操作(好的,单击一次)。
注意:我在 Windows 上,因此以下解决方案适用于 Windows。
但是,如果您使用的是 Linux/MacOS/whatever,当然您可以使用那里提供的工具来构建类似的东西。
我正在使用一个批处理文件 (Windows 相当于一个shell 脚本)来编译我的站点,然后调用WinSCP,一个免费的命令行 FTP 客户端。
WinSCP 允许我存储会话配置,因此我将与服务器的连接保存在那里一次。
因此,我不想将 WinSCP 提交到我的(公共)存储库,所以我的脚本需要父文件夹中的 WinSCP。
批处理文件如下所示:
call jekyll build
echo If the build succeeded, press RETURN to upload!
pause
set uploadpath=%~dp0\_site
%~dp0\..\winscp.com /script=build-upload.txt /xmllog=build-upload.log
pause
WinSCP 调用中的第一个参数 ( /script=build-upload.txt
) 指定包含实际 WinSCP 命令的脚本文件
这是在脚本文件中:
option batch abort
option confirm off
open blog
synchronize remote -delete "%uploadpath%"
close
exit
一些解释:
%~dp0
(在批处理文件中)是当前批处理文件所在的文件夹set uploadpath=...
行 (在批处理文件中)将生成站点的完整路径保存到环境变量中open blog
行(在脚本文件中)打开了与预先保存的会话配置(我命名为blog
)的连接synchronize remote ...
行(在脚本文件中)使用synchronize
命令从本地文件夹(保存在%uploadpath%
步骤 2 中的环境变量中)同步到服务器。IMO 该解决方案也适用于非技术人员。
如果您的技术人员不知道如何使用源代码控制,您甚至可以编写提交和推送脚本。