我已经创建了 jekyll 站点。关于部署,我不想在 github 页面上托管。要托管私有(private)域,我从文档中了解到要复制 _site 文件夹中的所有文件。这一切都是邪恶的。
问题:
每次我添加新博文时,我都会运行 cmd>jekyll build,然后将新创建的 html 复制到托管域。有什么不用每次都编译的简单更新方法吗?
我问的原因是因为它会由非技术人员更新
感谢您的帮助!
最佳答案
如果您不想使用 GitHub Pages,据我所知,除了在每次进行更改时编译您的网站之外别无他法。
当然,您可以尽可能地编写脚本/自动化。
这也是我对自己的博客所做的。我将它托管在我自己的网站空间而不是 GitHub Pages 上,因此我需要为每次更新执行以下步骤:
- 在本地机器上编译
- 通过FTP上传
我只需单击一次(好吧,一次双击)即可完成此操作。
注意:我使用的是 Windows,因此以下解决方案适用于 Windows。
但是,如果您使用的是 Linux/MacOS/其他软件,您当然可以使用那里提供的工具来构建类似的东西。
我正在使用 batch file (Windows 相当于 shell script ) 编译我的站点,然后调用 WinSCP ,一个免费的命令行 FTP 客户端。
WinSCP 允许我 store session configurations , 所以我在那里保存了一次与我的服务器的连接。
因此,我不想将 WinSCP 提交到我的(public) 存储库,因此我的脚本需要父文件夹中的 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
) 指定了 script file which contains the actual WinSCP commands
这是在脚本文件中:
option batch abort
option confirm off
open blog
synchronize remote -delete "%uploadpath%"
close
exit
一些解释:
%~dp0
(in the batch file)是当前批处理文件所在的文件夹set uploadpath=...
行(在批处理文件中) 将生成站点的完整路径保存到 environment variable 中。open blog
行(在脚本文件中) 打开与pre-saved session configuration 的连接(我将其命名为blog
)synchronize remote ...
行(在脚本文件中) 使用synchronize
command从本地文件夹(保存在%uploadpath%
,第 2 步中的环境变量) 同步到服务器。
IMO 这个解决方案也适用于非技术人员。
如果您的技术人员不知道如何使用源代码控制,您甚至可以编写脚本提交和推送。
关于ruby - Jekyll 私有(private)部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960031/