如何在UbuntuVPS上开始使用Jekyll
介绍
Jekyll 是一个简单的静态站点生成器。 它接受 Markdown、Textile、Liquid、HTML 和 CSS 中的页面输入,并输出完整的静态 HTML 页面。 Jekyll 与 GitHub Pages 配合得很好,但也有一些限制——例如,与 plugins 配合不是特别容易。 因此,在您自己的 VPS 上托管 Jekyll 站点可能是一个好主意。 这样做很容易!
在本指南中,我们将使用以下内容:
- Jekyll 用于编写我们的内容
- nginx 服务于我们的内容
- Capistrano 部署
安装要求
在您的 VPS 上:
本地:
如果您还没有,请安装 Ruby 和 RubyGems。 最好的方法是使用 Ruby 版本管理器 (RVM)。 使用 RVM 主页 (rvm.io) 中的命令,它应该类似于:
curl -L https://get.rvm.io | bash -s stable --ruby=2.0.0
按照任何其他提示在您的系统上安装 Ruby。 安装后,您可以安装所需的 gem:
gem install jekyll capistrano
使用 Jekyll 创建博客
Jekyll 的网站有一个 快速入门指南 ,它会引导您创建一个简单的 Jekyll 站点并为其提供服务。 那里有更多的使用细节。 我们将从创建一个简单的博客开始。 切换到您要使用的目录,然后运行:
jekyll new . cd myblog jekyll serve
您应该能够看到您的站点在 localhost:4000 上运行。
导航到“myblog”目录,您应该会看到一些文件夹。 我们关心的是_site
; 这个包含 Jekyll 生成的静态站点,我们将在下一步部署它。
设置博客以使用 Capistrano 进行部署
如果您的 Jekyll 站点仍在运行(在运行 jekyll serve
之后),请退出该进程。 仍然在“myblog”目录中,运行:
capify .
这将为 Capistrano 部署创建必要的文件。 Capistrano 是“ 自主软件”,它假定您将通过 SSH 进行部署。 当您运行该命令时,它应该在 config/deploy.rb
处创建了一个文件; 打开它,然后将其更新为如下所示:
# replace this with your site's name set :application, "Blog" set :repository, '_site' set :scm, :none set :deploy_via, :copy set :copy_compression, :gzip set :use_sudo, false # the name of the user that should be used for deployments on your VPS set :user, "deployer" # the path to deploy to on your VPS set :deploy_to, "/home/#{user}/blog" # the ip address of your VPS role :web, "123.456.789.10" before 'deploy:update', 'deploy:update_jekyll' namespace :deploy do [:start, :stop, :restart, :finalize_update].each do |t| desc "#{t} task is a no-op with jekyll" task t, :roles => :app do ; end end desc 'Run jekyll to update site before uploading' task :update_jekyll do # clear existing _site # build site using jekyll # remove Capistrano stuff from build %x(rm -rf _site/* && jekyll build && rm _site/Capfile && rm -rf _site/config) end end
下一步是使用 Capistrano 所需的目录结构设置 VPS。 您只需执行一次:
cap deploy:setup
最后,部署你的 VPS:
cap deploy
Capistrano 的部署任务将:
- 删除任何现有的静态 Jekyll 站点
- 建立你的 Jekyll 网站
- 清理构建中包含的不必要文件(主要是 cap 文件)
- 通过 SFTP 将静态站点的内容复制到您的 VPS,并将它们放在指定的目录中
使用 nginx 托管您的博客
回到你的 VPS,切换到 nginx sites-available 目录。 这通常位于:
cd /etc/nginx/sites-available
如果你在这个目录中运行 ls
,你应该(至少)看到一个名为“default”的文件。 如果您愿意,可以将其用作模板:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
对于静态站点,您不需要太多配置。 以下配置应作为最低限度工作:
server { # listen on http (port 80) # remove the "default_server" if you are running multiple sites off the same VPS listen 80 default_server; # the IP address of your VPS server_name 123.456.789.10; # see http://nginx.org/en/docs/http/server_names.html for options # to use your own domain, point a DNS A record at this IP address # and set the server name to (eg.) "blog.example.com" # the path you deployed to. this should match whatever was in your # Capistrano deploy file, with "/current" appended to the end # (Capistrano symlinks to this to your current site) root /home/deployer/blog/current; index index.html # how long should static files be cached for, see http://nginx.org/en/docs/http/ngx_http_headers_module.html for options. expires 1d; }
或者,您可以使用 this gist 来获取基本要素。 无论哪种方式,在此目录中使用所需的 nginx 配置创建一个新文件。 一旦你创建了它,你需要从启用站点的目录创建一个符号链接:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
使用符号链接意味着通过删除符号链接很容易使站点脱机,而无需接触原始配置文件。
接下来,确保 nginx 能够读取它将提供的文件。 Nginx 需要能够读取和执行其托管目录以及所有父目录中的所有内容。 为此,我们将站点目录的所有权授予 nginx 用户 www-data
。 然后我们将授予它对所需目录的读取和执行访问权限:
sudo chown -R www-data:www-data /home/deployer/blog/current sudo chmod 755 -R /home
最后,您应该告诉 nginx 更新其配置。 您可以通过以下方式做到这一点:
# tests the nginx configuration; if this is not successful you should fix any errors raised sudo nginx -t # safely restarts the nginx worker sudo kill -HUP `cat /var/run/nginx.pid`
或者,您可以重新启动 nginx。 但上述选项通常被认为更安全。
sudo service nginx restart
测试和前进
导航到您的 VPS 的 IP 地址。 您应该会看到 Jekyll 网站的主页!
下一步是什么? 您现在可以开始使用 Jekyll 编写内容并自定义您的网站。 每当您有新的内容想在线推送时,就像 cap deploy
一样简单。