目的of目的

技術的な事とか趣味な事を書いて日本語の練習

tDiaryをnginxとthinで立ち上げる

初めての投稿はどのようにしてtDiaryを動作させているかの説明です。 インターネット上の記事にはnginxとunicornを用いて動作させる記事がたくさんありますが、thinを使った記事はあまり見かけません。 なので今回はthinで試してみたいと思います。

とはいってもthinで立ち上げてnginxをフロントに建ててあげれば良いだけなので簡単です。ちなみに参考にした記事は以下の通りです。:clap:

http://igarashikuniaki.net/diary/20131229.html http://transitive.info/2013/05/04/tdiary-unicorn-nginx/

フォルダ構成

いがいが日記さんの構成とほぼ同じ感じで構築していきます。ちなみにConoha VPS上で構築しています。ハイフンとアンダーバーがあって気持ち悪いですが・・・・・・ どちらもGithubから引っ張ってきてる感じです。gemから生成させることもできますが、install時にエラーが発生したのでとりあえずこちらに。

.
├── tdiary-contrib
├── tdiary-core
└── tdiary_data

そして、tdiary.confを少し変更します。Markdownで書けるようにするための変更と、contribにあるプラグインの読み込みです。

@datapath = '/*/*/tdiary_data'
@style = 'GFM'
@options['sp.path'] = [
        'misc/plugin',
        '/*/*/tdiary-contrib/plugin'
]

nginx thin周りの設定

nginxは特定のリクエストはlocalhostの特定ポートに流す設定で良いです。簡単な設定例は以下の通りです。

upstream tdiary {
    server localhost:12341;
}
server {
    listen       80;
    server_name  boltz.kuroknee.so;

    location / {
        proxy_set_header    X-Real-IP         $remote_addr;
        proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto http;
        proxy_set_header    Host              $http_host;
        proxy_redirect      off;

        proxy_pass http://tdiary;
    }
}

thinの設定ファイルはyaml形式で記述する必要があります。今回はtdiary-coreの中にthin.ymlというファイルを作成しましょう。

environment: production

address: 0.0.0.0
port: 12341
pid: thin.pid
log: log/thin.log
daemonize: true

これでデーモンとして立ち上がるような感じです。この設定を読み込んで立ち上げるには以下のコマンドを実行しましょう。

$  thin -C thin.yml start

ちなみに、start部分をrestartなりstopなりに変更すれば柔軟に対応できます。またunixsocketの形で接続することも出来ます。上手い感じの運用方法考えていきたいですね。