跳至主要内容

博文

目前显示的是标签为“Github”的博文

使用 Travis 自动化部署 Hexo Blog

0x00 背景 使用 Hexo + Github Pages 搭建博客后,每次更新文章需要使用 hexo d -g 会在本地生成 public 静态博客网站和向 Github 推送的 .deploy_git 文件夹。 .deploy_git 文件夹内容和 public 文件夹一致,但多了 Github 博客项目的仓库信息与提交信息。最终, .deploy_git 文件夹内的全部内容被推送到 Github 仓库中,由 Github Pages 服务完成静态网站的解析。 当切换工作环境后,需要重新安装 Nodejs 以及配置 Hexo 和它的依赖。而且每次更新文章后,都要 hexo d -g 手动部署。这样多次重复的工作非常低效,因此结合现在非常流行的 CI/CD 概念和工具,可以为 Hexo + Github Pages 博客集成 Travis CI 自动部署的能力。当推送博客仓库到 Github 后,由 Travis 自动获取当前 commit 并进行构建,把生成的静态网站推送到 Github Pages 分支。 0x01 理解 Hexo 的自动化部署 下图是 Hexo 手动部署的流程,hexo-blog 可以是本地一个项目,也可以是 Github、Gitlab 等仓库,本地配置好 Hexo 环境后,由 ① 触发部署,将本地生成的静态博客网站 .delpoy_git 推送到 Github 的静态博客仓库中。 当引入 Travis 后,整个流程变成了下图所示的流程。hexo-blog 项目必须是一个 Github 仓库了,当有文章更新,本地由 ① 触发,把 Hexo-blog 的源码推送到 Github,剩下的工作由 Travis 完成:获取 Github hexo-blog 仓库中最新的 commit,运行我们定义的 .travis.yml 并把生成的静态博客网站 .deploy_git 推送 Github 静态博客仓库 xxx.github.io。 注意,这里要区分 Github 中的两个仓库:静态 blog repo 和 Hexo blog repo。前者是博客网站的静态网站项目,由 Github Pages 托管和解析;后者是 Hexo 项目,前者的内容是由后者生成的。 0x02 如何配置自动化部...

为Github的Hexo博客启用SSL/TLS

CloudFlare的免费套餐提供了SSL,可以用它为我们独立域名的博客启用HTTPS。本文以 http://g2ex.me 为例。 主要步骤 注册CloudFlare,添加个人网站,获取CLoudFlare提供的 Nameservers ; 修改自己的域名提供商,把 站点的Nameservers 修改为 CloudFlare提供的Nameservers ; 等待CloudFlare添加的网站为激活状态,使用 https 打开个人网站; 修改网站模版,使 http 跳转到 https 。 详细步骤 一、注册CloudFlare 首先注册CloudFlare,注册后按照提示 Add Websites ,输入域名后点击 Begin Scan : 到达最后一步,会提示把自己网站的域名 Name Server 更换为: charles.ns.cloudflare.com ivy.ns.cloudflare.com 二、修改域名提供商的Nameservers 本站使用了Godaddy域名提供商,登录Godaddy,在域名的 SETTINGS 中,点击 Nameservers 下的 Manage : 勾选 Custom 并点击 ADD NAMESERVER ,添加上边CloudFlare给的两个Name Servers。 三、等待CloudFlare确认 稍等片刻(几分钟到十几分钟),在CloudFlare中点击 Recheck Nameservers ,可以看到网站已经处于激活状态了。 之后,便可以用 https://g2ex.me 访问站点了。 四、强制跳转 至此,必须手动输入 https 前缀才能访问加密的站点,要想在任何情况下都以加密方式访问网站,可以在网站模版的头中加入 http 到 https 的强制跳转。 以当前Hexo的 NexT主题 为例,打开 layout 目录下的 _layout.swig ,在 <head> 标签中加入以下代码,注意把 yoursite.com 替换为你的域名,这里为 g2ex.me 。 < script type = "text/javascri...

ssh: connect to host github.com port 22: Bad file number

在使用Github push命令的时候出现了这样的错误: ssh: connect to host github.com port 22: Bad file number fatal: Could not read from remote repository. git push时出现的错误 最简单的办法是把git push命令中的origin换成https://github.com/ USERNAME / PROJECTNAME .git(其中 USERNAME 是github的用户名, PROJECTNAME 是你的repository名字) 即: git push https://github.com/USERNAME/PROJECTNAME.git master 解决办法来自: http://superuser.com/questions/256152/another-ssh-connect-to-host-github-com-port-22-bad-file-number 比较麻烦的解决办法是: http://stackoverflow.com/questions/7144811/git-ssh-error-connect-to-host-bad-file-number 和 http://rangercyh.blog.51cto.com/1444712/749490

FarBox, OpenShift and Jekyll

最近发现了三款博客搭建平台:FarBox、OpenShift、Jekyll on Github。 FarBox 想法新颖,Dropbox或Google Docs中的文件就是博客帖子。 Openshift 是RedHat的PaaS平台,免费使用,比GAE支持的语言多,包括Java, Ruby, Node.js, Python, PHP, or Perl,完全可以自己在上边使用WordPress搭建博客。 Jekyll 用于驱动Github的Github Pages,使用Jekyll可以把Github Pages作为博客。 FarBox目前测试期,不会产生任何费用,收费机制也会调整;OpenShift主要用于项目的部署和测试,是一个非常优秀的云计算平台,不过已经被大陆的GFW墙掉了;Jekyll则主要是程序员的乐园,在Github上做个人博客不是很合适,其初衷是自定义对项目的介绍。