使用jekyll建站全攻略(托管或自动化部署)


使用jekyll建站全攻略(托管或自动化部署)

Published on July 29, 2023 by Andersen

jekyll 个人网站搭建

14 min READ

On This Page

1.Jekyll与依赖环境安装部署

1.1.Ruby

Ruby 是一种动态、面向对象的编程语言,由日本程序员松本行弘(Yukihiro Matsumoto)开发。它的设计目标是提供一种简洁、可读性高的编程语言,旨在提高开发者的生产力和乐趣。

Ruby 具有以下特点:

  1. 简洁优雅:Ruby 的语法简洁而优雅,使得代码易于阅读和编写。它采用了自然语言的风格,使得代码更加易于理解和表达。
  2. 动态类型:Ruby 是一种动态类型语言,你无需显式声明变量的类型,可以根据需要在运行时进行类型判断和转换。
  3. 面向对象:Ruby 是一种纯粹的面向对象语言,一切都是对象。它支持类、继承、多态等面向对象的概念,并提供了丰富的类库和工具。
  4. 元编程能力:Ruby 具有强大的元编程能力,允许开发者在运行时动态修改和扩展代码。这使得 Ruby 在框架和库的开发中非常灵活。
  5. 动态代码块:Ruby 提供了代码块(Block)的概念,可以将代码块作为参数传递给方法,使得函数式编程和迭代操作更加方便。
  6. 开源社区:Ruby 拥有活跃的开源社区,有许多优秀的开源项目和框架,如 Ruby on Rails,它是一种流行的 Web 开发框架。 Ruby 在 Web 开发、脚本编写、系统管理等领域都有广泛的应用。它注重开发者的幸福感和生产力,被称为 “开发者的最佳朋友”。

1.2.bundle

在 Ruby 中,”bundle” 是指 Bundler,它是 Ruby 的一个依赖管理工具。Bundler 用于管理项目中所需的 Ruby gem(库)的版本和依赖关系。 当你在一个 Ruby 项目中使用多个 gem 时,每个 gem 都可能有不同的版本要求和依赖关系。Bundler 的作用就是帮助你管理这些依赖关系,确保项目能够正确地加载和使用所需的 gem。

Bundler 通过一个名为 “Gemfile” 的配置文件来指定项目的依赖关系。在 Gemfile 中,你可以列出项目所需的 gem,并指定它们的版本要求。例如:

source 'https://rubygems.org'

gem 'rails', '~> 6.0.0'
gem 'nokogiri', '1.12.5'
gem 'dotenv-rails'

安装bundle依赖包

  • gem install bundle:安装bundle管理工具
  • sudo apt-get install ruby-dev: 安装开发工具
  • sudo apt-get install build-essential: 安装构建工具
  • gem install racc: 安装racc

当你运行项目时,Bundler 会根据 Gemfile 中的配置检查 gem 的版本和依赖关系,并确保所需的 gem 被正确加载。它会自动解析和安装 gem 的依赖关系,并创建一个名为 “Gemfile.lock” 的锁定文件,记录实际使用的 gem 版本。这样可以确保在不同的环境中使用相同的 gem 版本,避免因为版本不一致而导致的问题。 你可以使用 Bundler 的命令行工具来安装 gem、更新 gem、解决依赖关系等操作。常用的命令包括:

  • bundle install:根据 Gemfile 安装项目的依赖关系。PS:该命令会尝试更新已经存在的依赖包
  • bundle update:更新项目的依赖关系到符合 Gemfile 中指定的版本要求。并同时更新项目Gemfile.lock文件
  • bundle update [gemname]: 跟新指定的包文件,并更新gemfile.lock
  • bundle exec:在项目的上下文中执行命令,确保使用项目所需的gem。
  • bundle lock: 锁定当前环境,这样便不能通过bundle update来更新依赖包的版本,保证了统一的环境。
  • bundle unlock: 解锁环境

通过使用 Bundler,你可以方便地管理 Ruby 项目的依赖关系,确保项目能够正确地加载和使用所需的 gem,提高开发效率和项目的可维护性。

1.3.jekyll

Jekyll 是一个简单的博客形态的静态站点生产机器。它有一个模版目录,其中包含原始文本格式的文档,通过一个转换器(如 Markdown)和我们的 Liquid 渲染器转化成一个完整的可发布的静态网站,你可以发布在任何你喜爱的服务器上。Jekyll 也可以运行在 GitHub Page 上,也就是说,你可以使用 GitHub 的服务来搭建你的项目页面、博客或者网站,而且是完全免费的。

官方网站

常用命令:一般用不到jekyll的命令 使用1.4中相关命令

  • jekyll instll: 构建当前目录默认输出到当前目录的_site下,详细参数可以参考官方文档
  • jekyll install --destination /root/_site: 根据项目下的Gemfile将项目构建并输出到指定目录
  • jekyll s: 启动一个本地服务器,一般用下面这个命令
  • bundle exec jekyll s : 启动一个本地开发服务器,而且能够监听md的修改,更多参数参考官方文档

1.4.安装/部署jekyll项目

jekyll是依赖ruby环境的,在编译(将md转换成html)或者本地开发的时候会用到。

以Linux举例:

1.4.1.安装ruby相关环境

sudo apt-get install ruby-full build-essential zlib1g-dev

1.4.2.安装jekyll+bundle

gem install jekyll bundler

这个命令如果卡住了或者time out错误,需要切换gem源试试,gem源在国外可以切换为国内源

# 查看源
gem sources
# 添加国内源
gem sources --add https://gems.ruby-china.com/
# 删除国外的官方源
gem sources --remove https://rubygems.org/

1.4.3.本地开发环境部署

快速创建jekyll的模板项目
  • jekyll new myblog:创建一个名为myblog的模板项目
  • cd myblog:指定到项目下
  • bundle exec jekyll serve:运行本地环境
下载的jekyll theme项目或者已有项目
  • cd /xxxxx:指向到你的项目根目录下
  • bundle install:安装项目依赖的gem包
  • bundle exec jekyll serve:启动本地环境

以上步骤执行完,通过127.0.0.1:4000能够正常访问,说明你的编译运行环境都ok了。编译环境则看下面

1.4.4.生产环境部署

  • cd /xxxx:cd到项目主目录下(带Gemfile那一层)
  • bundle install:安装环境的相关gem包依赖
  • bundle exec jekyll build: 执行jekyll的编译,默认编译好的文件会输出在当前目录下的_site目录
  • bundle exec jekyll build --destination /root/_site:或者编译到指定的目录下

然后通过nginx直接代理到_site目录下或者把目录下的所有文件放到容器中则可以正常访问了,推荐使用nginx比较简单

2.Jekyll+GitHub+托管

将代码提交到gitHub仓库便可以实现服务托管.

2.1.githubPages托管

GitHub Pages 是 GitHub 提供的一项静态网站托管服务,它允许您将静态网页文件托管在 GitHub 上,并通过您的 GitHub 用户名或组织名访问这些网页。您可以使用 GitHub Pages 来托管个人博客、项目文档、演示页面等。但是免费账户不能托管私有库

以下是使用 GitHub Pages 的一般步骤:

  1. 创建一个新的 GitHub 仓库或使用现有的仓库。请确保您具有对该仓库的写入权限。
  2. 在仓库中创建一个名为 gh-pages 的分支。这是 GitHub Pages 默认使用的分支。
  3. 将您的静态网页文件(HTML、CSS、JavaScript、图像等)推送到 gh-pages 分支。
  4. 在仓库的设置页面中,找到 GitHub Pages 部分。
  5. 在 GitHub Pages 部分,选择 gh-pages 分支作为源。
  6. 保存设置后,GitHub Pages 将为您的仓库创建一个网站,并提供一个访问网站的链接。

您可以通过以下步骤访问您的 GitHub Pages 网站:

  1. 打开您的 GitHub 仓库。
  2. 在仓库的导航栏上,点击 “Settings”(设置)选项。
  3. 在设置页面的左侧导航栏中,找到 “Pages”(页面)选项。
  4. 在 “GitHub Pages” 部分,您将看到一个链接,指向您的网站。

请注意,GitHub Pages 网站的 URL 通常遵循以下格式:https://<username>.github.io/<repository>,其中 <username> 是您的 GitHub 用户名,<repository> 是您的仓库名称。 在您的 GitHub Pages 网站上,您可以使用自定义域名、选择主题、配置 HTTPS 等。有关更多详细信息和配置选项,请参阅 GitHub Pages 的官方文档。

3.Jekyll+Gitee+自动部署私有云服务器

在自己有服务器的情况下,使用这种方式最快速且访问速度跟你服务器挂钩,不受托管的平台限制.能跟达到跟托管一样的效果,修改之后只需要push到代码仓库便可以全自动部署.

一般步骤:

  1. 将代码推送到gitee代码仓库(gitee在国内,方便拉取代码)
  2. 设置webHooks到你的jenkins上
  3. jenkins上设置流水线及配置好相关脚本就行了

参考文章:jenkins快速入门