杰基尔私人部署



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

问题:

  1. 每次我添加新的博客文章时,我都在运行cmd>jekyll构建,然后将新创建的html复制到托管域。有没有简单的方法可以在不每次编译的情况下进行更新?

  2. 我为什么问的原因是因为它会由非技术人员更新

感谢您的帮助!!

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

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

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

我可以通过单击(好的,双击)来执行此操作。


注意:我使用的是Windows,因此以下解决方案适用于Windows。
但是如果你使用的是Linux/MacOS/其他任何东西,你当然可以使用那里给出的工具来构建类似的东西。


我正在使用批处理文件(相当于 shell 脚本的 Windows)来编译我的站点,然后调用免费的命令行 FTP 客户端 WinSCP。

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 此解决方案也适用于非技术人员。
如果你的技术人员不知道如何使用源代码管理,你甚至可以编写脚本提交和推送。

文档中提到了许多可用的选项: http://jekyllrb.com/docs/deployment-methods/

如果你使用的是 Git,我会推荐 Git 接收后钩子方法。它只是在收到新代码后构建站点:

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新文件时自动重建。

相关内容

  • 没有找到相关文章

最新更新