我创建了 jekyll 网站。关于部署,我不想在 github 页面上托管。为了托管私人域,我从文档中了解到从文件夹中复制_site所有文件。这都是邪恶的。
问题:
-
每次我添加新的博客文章时,我都在运行cmd>jekyll构建,然后将新创建的html复制到托管域。有没有简单的方法可以在不每次编译的情况下进行更新?
-
我为什么问的原因是因为它会由非技术人员更新
感谢您的帮助!!
如果您不想使用 GitHub Pages,AFAIK 除了每次进行更改时编译您的网站之外,别无他法。
但是,当然,您可以尽可能多地编写脚本/自动化。
这也是我对自己的博客所做的。我将其托管在自己的网站空间而不是 GitHub 页面上,因此我需要为每个更新执行以下步骤:
- 在本地计算机上编译
- 通过 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
一些解释:
-
%~dp0
(在批处理文件中)是当前批处理文件所在的文件夹 set uploadpath=...
行(在批处理文件中)将生成站点的完整路径保存到环境变量中open blog
行(在脚本文件中)打开与预先保存的会话配置的连接(我将其命名为blog
)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新文件时自动重建。