计算机‎ > ‎网络‎ > ‎

用 RaspberryPi 安装 Octopress 博客并将文章发布到 VPS 上

发布者:guo rue,发布时间:2014年12月1日 02:50   [ 更新时间:2014年12月1日 03:16 ]
传闻,用 github pages 来放博客会有一些可能会泻露 PSK 之类的风险,我就正好拿来做主页了。然后,博客就放到 VPS 上吧。这里 选用的是 Octopress 这个程序作为博客程序。

准备工作

用 8089D 连接树莓派,因为 Octopress 需要用到 Ruby 的运行环境,所以搭建 Ruby 环境是第一步。这里我直接用 RVM 来安装和管理各种版本的 Ruby 。
Install RVM with a Ruby: 
\curl -L https://get.rvm.io | bash -s stable --ruby
注意:上面这行命令要严格大小写。这个过程大概需要耗费`2小时`以上!编译ruby源代码,以及安装需要花相当长的时间,CPU一直会在90%以上,所以在安装过程中不要让你的Raspberry Pi做别的事情,不要打开`startx`界面。也许你可以在睡觉之前运行这个命令,rvm会帮你搞定一切!

ruby 安装好后,会执行`importing default gemsets`这一步也会很耗费时间,不过到这里时如果不想等可以`control + c`中止。我没有终止(去看了一会《信息简史》)。

接下来要做的就是
source /home/pi/.rvm/scripts/rvm

Now you can check if RVM is installed by running the following command.
type rvm | head -n 1
rvm is a function

试试 RVM 安装成功了没。
察看版本
rvm -v

那么就来安装 Ruby 1.9.3 吧
rvm install 1.9.3
注意:同样要花上很长一段时间,我这里是一小时二十七分钟(接着去看了一会《信息简史》)。

Now the final the step is to tell RVM which version to use. In order to use a specific Ruby version for the duration of the current terminal session run the following.
rvm use 1.9.3

If you want to use that specific version every time you open a new terminal session though you are going to have to tell RVM to set it as the default Ruby. Like so.
rvm use --default 1.9.3

这样完成 Ruby 的安装。

在 Ruby 装好后,直接去 Github clone 一个 Octopress 到你的机器:
git clone https://github.com/imathis/octopress.git

Clone 好后,需要先安装一下 octopress 所需要用到的 gem 包。
先进入到 clone 下来的 octopress 目录
cd octopress
可能你还没有安装 bundler ,先安装 bundler 吧,不然下一步会提示错误,
gem install bundler
运行命令安装
bundle install
这……又是一串 Installing 啊,长长的等待,我估计花了四十分钟以上。(继续去看了一会《信息简史》)

现在可以初始化 octopress 的默认主题了
rake install

导入和生成Markdown文件
这一步,其实就是生成新的文章了,在octopress中,每一篇文章,对应着一个Markdown文件。如果你是从WordPress转移到octopress,也可以用其他的转换工具,得到一大堆的Markdown文件。这些文件都放在octopress目录的source/_posts目录中。

用 octopress 单独生成一篇文章
rake new_post['This is a new post']
生成好后,你会得到一个时间加上文章标题的Markdown文件。接下来,就是写文章了。简单一点的就算用 nano 这个软件写,目前我用 vim 来编辑文章 :–)。写完post,保存好你的Markdown文件。

部署blog到VPS
octopress生成后的blog页面,全部是静态页面,不同于php一类的语言,需要服务端安装对应的组件来动态解析。因此,octopress的这种简单部署方式,只要求服务端有一个能支持展现静态页面的。

安装 Apache
sudo apt-get install apache2
参考 Apache 虚拟主机指南[05]
我这里就直接使用的是虚拟主机默认目录了,如果你想安装到用户家目录下面的目录,请察看虚拟主机指南然后修改配置
为确保此帐户对虚拟主机默认目录有读写权限

修改Rakefile
接下来,就是在你的本地的 octopress 目录里面修改 Rakefile 文件,填入你的VPS信息,并启用rsync的部署方式。
nano Rakefile
ssh_user       = "username@MyVPS.com"
ssh_port       = "22"
document_root  = "/var/www"
rsync_delete   = false
rsync_args     = ""
deploy_default = "rsync"

这里的配置,主要就是配置VPS的信息,包括部署的时候用的SSH帐户和主机地址,SSH的端口号,以及部署的目录。

发布和部署blog
生成blog的静态文件
~/octopress $ rake generate

在最终部署之前,你如果还是不太放心,想预览一下生成的文章和blog是什么效果,可以直接在本地先预览一下
~/octopress $ rake preview
此命令会默认在本地开启一个web服务,地址是 localhost:4000,可以在浏览器中访问此地址,预览你的blog.

生成好后,用下面的命令,会直接以rsync的方式,部署你的blog到你的VPS
~/octopress $ rake deploy

如果你信心十足,直接生成和发布,octopress还提供了一个更为便捷的命令
~/octopress $ rake gen_deploy
这个命令可以直接一气呵成,把生成和发布放在一步了,省事多了吧!

再补充一下,deploy的时候,如果你VPS的SSH采用用户名和密码的方式验证,部署的时候需要你输入密码。如果你采用可信任证书的验证方式,就更方便了,中途不需要输入密码(除非你的证书本身设定了密码)。

update :
BUG的处理
老子明明已经成功 deploy 了啊!然后第二天想要继续写东西居然无缘无故的出错了!似乎本地环境的问题。经过折腾以下步骤

版本命令察看
~/octopress $ git branch
* master

输入命令
nano Rakefile
把 deploy_branch 部分修改成这样
# This will be configured for you when you run config_deploy
deploy_branch  = "master"

接着进入 Gem文件 
nano Gemfile
把文件修改成以下这样
source "https://rubygems.org"

group :development do
  gem 'rake', '~> 10.0'
  gem 'jekyll', '~> 2.0'
  gem 'octopress-hooks', '~> 2.2'
  gem 'octopress-date-format', '~> 2.0'
  gem 'jekyll-sitemap'
  gem 'rdiscount', '~> 2.0'
  gem 'RedCloth', '~> 4.2.9'
  gem 'haml', '~> 4.0'
  gem 'compass', '~> 0.12.2'
  gem 'sass-globbing', '~> 1.0.0'
  gem 'rubypants', '~> 0.2.0'
  gem 'rb-fsevent', '~> 0.9'
  gem 'stringex', '~> 1.4.0'
end

gem 'sinatra', '~> 1.4.2'
gem 'execjs'
gem 'therubyracer'

再次
bundle install
rake install
终于又好了……

参考资料
[01] http://www.xiaozhou.net/deploy-octopress-to-your-vps-2013-08-13.html
[02] http://miclle.me/ruby-on-raspberry-pi/
[03] http://raspberrypi.stackexchange.com/questions/1010/can-i-install-the-ruby-version-manager
[04] http://elinux.org/RPi_Ruby_on_Rails
[05] http://wiki.ubuntu.org.cn/Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97
[06] http://octopress.org/docs/