如何在UbuntuVPS上开始使用Jekyll

来自菜鸟教程
跳转至:导航、​搜索

介绍


Jekyll 是一个简单的静态站点生成器。 它接受 Markdown、Textile、Liquid、HTML 和 CSS 中的页面输入,并输出完整的静态 HTML 页面。 Jekyll 与 GitHub Pages 配合得很好,但也有一些限制——例如,与 plugins 配合不是特别容易。 因此,在您自己的 VPS 上托管 Jekyll 站点可能是一个好主意。 这样做很容易!

在本指南中,我们将使用以下内容:

安装要求


在您的 VPS 上:

  1. 设置一个 Ubuntu VPS
  2. 安装并启动nginx

本地

如果您还没有,请安装 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 的部署任务将:

  1. 删除任何现有的静态 Jekyll 站点
  2. 建立你的 Jekyll 网站
  3. 清理构建中包含的不必要文件(主要是 cap 文件)
  4. 通过 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 一样简单。