MOGOKの上でOctopressを動かすまでの手順


[MOGOK](http://mogok.jp/)のアカウントをとったものの、なんに使うか全く考えてなかったので[Octopress](http://octopress.org/)を動かしてみた。その時の作業記録。

できたもの：http://not-taihen.ruby.iijgio.com/

## 参考

* http://route477.net/d/?date=20130220
* http://gunjisatoshi.ruby.iijgio.com/blog/2012/12/08/install-octopress-in-mogok/

## 環境

* Mac OSX Mountain Lion(10.8.3)
* rbenv
* ruby 1.9.3-p194
* bundlerインストール済み

## MOGOKインストール

[MOGOKのサイト](http://mogok.jp/)からログインし、サイドメニューの「[ダウンロード](https://portal.mogok.jp/download)」からgemをダウンロードしてくる。ダウンロードしたgemをインストールする。

```
gem install mogok-1.0.3.gem
```

```mogok --help```が動くか確認した。

## Octopressインストール

Octopressのリポジトリをcloneしてくる。

```
git clone git://github.com/imathis/octopress.git
cd octopress
```

GemfileがそのままだとMOGOK上で動かないので次のように修正する。
この後の手順でエラーが出た[1]ので、色々やってみたけど参考URLを元にこれに落ち着いた。

[1]: SupportするRailsが見つからない？とかバージョンが合わないとか色々あったけどメモし忘れた……。

```
gem "rails", ">= 3.0.0"
gem "sinatra", "1.3.4"
```

その後、次のコマンドでOctopressをインストールする。

```
bundle install
bundle exec rake install
```

## ブログ設定

_config.ymlを編集して、ブログの情報を書く。
title, subtitle, author, descriptionを筆頭に色々。URLはそのまま。（目に付くやつをかたっぱしから変えたのでどれが必須とかはわからない……。）

## HTML作成・起動

次のコマンドでHTMLを作成する。

````
bundle exec rake generate
````

_condig.ymlが文法的におかしいならここでエラーが出るので修正してリトライ。
問題なく終了したなら、public以下に生成したHTMLができる。
次に、下のコマンドを実行してローカルでOctopressを起動する。

```
bundle exec rackup
```

localhost:9292で起動するのでブラウザで確認する。

## 記事を作成・確認

記事の原稿（Markdown形式）はsource/_posts/以下にYYYY-MM-DD-タイトル.markdownというファイルで作成する。次のコマンドを実行すると、YAML front-matterを書いたファイルを作成してくれる。

```
bundle exec rake new_post
```

これだけ書くと、新しい記事のタイトルを聞いてくるので入力する。（ここでは"test-first"とした。）
多分普通は、下のようにタイトルを引数で指定して実行する。

```
bundle exec rake new_post["test-first"]
```

エスケープをよく忘れるので今回はしなかった。（エスケープするなら[に）

で、ここではsource/_posts/YYYY-MM-DD-test-first.markdownに記事を書く。
次に記事をHTMLで確認するんですが、さっきみたいにrake generateしてもいいんだけど、確認するだけなら次のコマンドでいける。

```
bundle exec rake preview
```

こうするとlocahost:4000で開ける。ファイルの変更に応じてHTMLも再生成する。

## ここまでの変更をコミット

今までHTMLを作成してない（rake previewしかしてないとか）なら次を実行する。

```
bundle exec rake generate
```

まず.gitignoreを編集して、publicの行を削除する。そのあと今までの変更をコミット。（ここではmogokブランチにコミットする。）

```
git co -b mogok
git add public/
git commit -m "Add the first article"
git add _config.yml
git commit -m "Update my blog info"
```

（_config.ymlとpublic/のコミット順が逆だったり.gitignoreをコミットしてない。。）

## MOGOKにログイン

（次に実行するmogok createでログインしようとしたけど入力ミスしまくったので先にログインだけした。なのでここは省いてもログインのタイミングが変わるだけで問題ないと思う。）

次のコマンドでインストールする。本来はすでに存在するアプリケーション名のリストを表示するコマンド。

```
mogok list
```

## アプリ作成

MOGOKにアプリを作成する。（次のコマンドの"not-taihen"がアプリ名）

```
mogok create not-taihen
```

今回の場合、http://not-taihen.ruby.iijgio.com/ からアプリにアクセスできるようになった。ただし現時点だとMOGOKのアプリケーションサーバーが動いてないので、メンテナンス中とか出る。

名前はどのあたりまでユニークなのかわからないけど、少なくとも自分のアプリケーションの中でユニークならおｋ、というわけではなさそう。（URLを見る限り）

## MOGOKにデプロイ

まず手元の変更をMOGOK上のリポジトリにpushする。

```
git push mogok mogok:master
```

MOGOKのアカウントとパスワードを聞かれるので入力する。これはpushする度に聞かれる。
pushが成功したら、次のコマンドでMOGOKでOctopressを実行できるようにする（パッケージを作成する）。

```
mogok build
```

最後。次のコマンドを入力すると、アプリケーションサーバーが動いてMOGOK上のOctopressにアクセスできるようになる。

```
mogok start
```

http://not-taihen.ruby.iijgio.com/ にアクセスすると、書いた記事が表示されているのが確認できる。

## 2回目以降

すでにMOGOKでOctopressが動いている場合。箇条書きで。今まで通り、rakeの実行には ```bundle exec``` を使っている。

1. ```bundle exec rake new_post```
1. 文章を書く <-> ```bundle exec rake preview```で確認
1. ```bundle exec rake generate```
1. ```git add .```
1. ```git commit  -m "…"```
1. ```git push mogok mogok:master```
1. ```mogok build```

ここまで来たら、次のコマンドでアプリケーションサーバーを再起動する。

1. ```mogok stop```
1. ```mogok start```

```mogok restart```ではいけなかった。（新しい記事が表示されなかった）

## 補足：情報表示

リポジトリやアプリケーションのURLなど、MOGOKの情報を表示するときに使うコマンド。

```
mogok info
```

## デザインの変更

ここを参考に変更した。（メモ紛失。）

http://namusyaka.github.io/blog/2012/10/03/github-jekyll/