如何使用Git部署Jekyll博客
介绍
Jekyll 是一个从 Markdown 文件目录生成静态 HTML 站点的工具。 这是有利的,因为生成的网站是快速、可移植的,并且对于像 nginx 这样的服务器而言,无需借助缓存即可同时为许多用户提供服务。
使用 Jekyll 最流行的方法是将站点的文件保存在 Git 存储库中,在本地编辑它们,然后使用 git push
将站点部署到您的 VPS。
本地安装
如果你还没有,你需要在你的本地机器上安装 Ruby、Jekyll 和 Git。
对于 Ruby,您可以使用单个命令使用 RVM 安装最新版本的 Ruby 2.0:
curl -L https://get.rvm.io | bash -s stable --ruby=2.0.0
完成后(需要几分钟),注销并重新登录。 安装 Jekyll 很简单,只需获取 jekyll
gem。
gem install jekyll
现在你需要Git,你可以从官网下载或者使用包管理器安装。 (Mac 用户可以使用 Homebrew,Linux 用户可能已经知道他们在做什么......)
创建博客
Jekyll 网站 提供了使用该工具的快速入门指南,以及详尽的文档。 我们将在这里介绍绝对基础知识,但对于日常使用和自定义,您应该参考他们的指南。
导航到您想要在本地计算机上存储博客文件的任何位置,然后创建一个新博客,如下所示:
jekyll new awesomeblog
这将创建一个 awesomeblog
目录,其中包含配置文件、帖子目录和其他所需的位。 现在您可以切换到该目录并启动服务器进程以在浏览器中预览它。
cd awesomeblog jekyll serve
Jekyll 将构建您的博客,几秒钟后您应该可以在浏览器中访问 http://localhost:4000
。
现在让我们在同一目录中初始化一个 Git 存储库,以便可以跟踪您所做的任何更改。
git init git add . git commit -m "Initial commit"
准备 VPS
为简洁起见,我假设您已经有一个运行像 nginx 或 Apache 这样的 Web 服务器的 VPS。 (我还假设您的公共 HTML 文件夹是 /var/www
,尽管它可能会根据您的发行版和配置而有所不同。)如果您还没有这样做,请参阅 上的许多可用教程nginx。
首先,在您的 VPS 上安装 Git。 对于 Ubuntu 或 Debian,您可以使用以下命令安装 git-core
软件包。
apt-get install git-core
如果您使用的是其他发行版,这可能会有所不同。 例如,Fedora 使用 yum install git-core
代替。
您还需要安装 Ruby 和 Jekyll。 和之前一样:
curl -L https://get.rvm.io | bash -s stable --ruby=2.0.0 gem install jekyll
其次,切换到您的主目录并创建一个新的“裸存储库”以进行部署。
cd ~/ mkdir repos && cd repos mkdir awesomeblog.git && cd awesomeblog.git git init --bare
之后,我们需要设置一个 post-receive 挂钩。 这是 Git 在将文件推送到存储库时运行的 shell 脚本。 像这样创建它:
cd hooks touch post-receive nano post-receive
现在粘贴以下脚本,相应地调整变量。 GIT_REPO
是上一步中创建的裸存储库的路径,TMP_GIT_CLONE
是脚本在将文件复制到 [X190X 之前签出文件并构建博客的位置]。 PUBLIC_WWW
是最终站点所在的路径。 在此示例中(假设您的 Web 根目录是 /var/www
),该站点将出现在 http://example.org/awesomeblog
,而如果 PUBLIC_WWW
读取 /var/www
代替。
#!/bin/bash -l GIT_REPO=$HOME/repos/awesomeblog.git TMP_GIT_CLONE=$HOME/tmp/git/awesomeblog PUBLIC_WWW=/var/www/awesomeblog git clone $GIT_REPO $TMP_GIT_CLONE jekyll build --source $TMP_GIT_CLONE --destination $PUBLIC_WWW rm -Rf $TMP_GIT_CLONE exit
按 control+O 并按 Enter 键保存文件。 然后赋予文件可执行权限。
chmod +x post-receive
添加一个 Git 遥控器
回到您的本地计算机上,将远程添加到您博客的 Git 存储库。
git remote add droplet user@example.org:repos/awesomeblog.git
现在您应该能够使用以下命令将您的最新提交推送到服务器:
git push droplet master
每当您在 Jekyll 中发表新博客文章时,将更改提交到 Git 存储库并推送到您的 VPS。 云服务器将构建站点,更改将在几秒钟内生效。