如何使用 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 很简单,只需获取 gem 即可jekyll
。
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
是脚本将文件签出到的位置,并在将文件复制到之前构建博客/var/www
。PUBLIC_WWW
是最终站点所在的路径。 在此示例中(假设您的 Web 根目录为/var/www
),站点将显示在,而如果读取http://example.org/awesomeblog
,它将出现在。http://example.org
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 Remote
返回本地机器,将远程内容添加到博客的 Git 存储库。
git remote add droplet user@example.org:repos/awesomeblog.git
现在您应该能够使用以下命令将最新的提交推送到服务器:
git push droplet master
每次在 Jekyll 中发布新博文时,请将更改提交到 Git 存储库并推送到您的 VPS。云服务器将构建网站,更改将在几秒钟内生效。