1

我创建了 jekyll 网站。关于部署我不想托管在 github 页面上。为了托管私有域,我从文档中得知要从 _site 文件夹中复制所有文件。这都是邪恶的。

问题:

  1. 每次我添加新的博客文章时,我都会运行 cmd>jekyll build 然后我将新创建的 html 复制到托管域。有没有什么简单的方法不用每次都编译更新?

  2. 原因,我问的原因是因为它将由非技术人员更新

谢谢您的帮助!!

4

2 回答 2

2

文档中提到了许多可用选项: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 时自动重建。

于 2013-11-13T18:37:06.727 回答
2

如果您不想使用 GitHub Pages,AFAIK 除了每次进行更改时都编译您的网站之外别无他法。

但当然,您可以尽可能多地编写脚本/自动化。
这也是我对自己的博客所做的。我将它托管在我自己的网络空间而不是 GitHub Pages 上,因此我需要为每次更新执行以下步骤:

  1. 在本地机器上编译
  2. 通过 FTP 上传

我可以通过单击来完成此操作(好的,单击一次)。


注意:我在 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

一些解释:

  1. %~dp0 (在批处理文件中)是当前批处理文件所在的文件夹
  2. set uploadpath=...(在批处理文件中)将生成站点的完整路径保存到环境变量中
  3. open blog(在脚本文件中)打开了与预先保存的会话配置(我命名为blog)的连接
  4. synchronize remote ...(在脚本文件中)使用synchronize命令从本地文件夹(保存在%uploadpath%步骤 2 中的环境变量中)同步到服务器。

IMO 该解决方案也适用于非技术人员。
如果您的技术人员不知道如何使用源代码控制,您甚至可以编写提交和推送脚本。

于 2014-01-19T23:14:29.580 回答