masablog

Keep it simple, stupid

emacs だけで Blog を書く

tech

emacs ひきこもり blog 生活


blog を書く環境を Hugo にしてからすこぶるいい感じなので晒しておくことにする。
まず Hugo なので emacs の markdown モードで書けて楽チンだ。

blog なんていう面倒くさいものは書くまでが腰が重いもので
書き始めたらわりと簡単に書けるものであるから
書き出す気がおきるかどうかがキモであると思う。

好きなエディタで書けなければ書き出す気がおきる確率は下がる一方であろうから
emacs で blog が書けないといけない。
プログラマが twitter ばかりやっているのはきっとそういうわけなのだ。
140 文字くらいならエディタで書くまでもないからね。

WordPress の管理画面に書く気にはならない。
C-e とか色々押してしまう。
もはや emacs 脳の人間にとってブラウザで文章を書くことなど狂気の沙汰としか思えない。
emacs 脳を棚に上げて文章はテキストエディタで書くべきであると主張しておく。

blog のベースはどれがいいか?


blog にアクセスがあるたびにプログラムが動く WordPress などは無駄が多い。
いちいちアクセスのたびに全ソースが動くのはおかしい。
キャッシュとか極限までチューニングした KUSANAGI などを使う手もあるが
力技という感じが否めない。

blog は vps などで運用したいから極力軽いものを使いたいし、
900 円の vps でも一日 100 万 PV くらいは耐えてほしいので1
静的サイトジェネレータで構築すべきであると思う。

ちなみに一日 100 万 PV はざっくり考えると
1 時間 41666.6666667 PV
1 分 694.444444444 PV
に耐えてくれればいいわけだが大量のパケットを投げつけてみたところ
1 分間に数千アクセスくらいは何の問題もないようだ。

静的サイトジェネレータはアクセスのたびに全ソースが動くのではなく
先に必要な処理を行っておき静的ファイルだけサーバーにおいておくようになっている。
データベースも必要ないから 900 円の vps で一日 100 万 PV に耐えることができる。
amazon の s3 においておくこともできるし、
github においておくこともできるので vps 以外の選択肢も広い。
github においておけばタダだ。

静的サイトジェネレータのなかでは Jekyll が実績が多いが
記事が増えてくると blog 更新に何分もかかるようになるから
現状最速と思われる Hugo を使う。

emacs だけで blog を書く


blog を書きたくなったら
おもむろに emacs 上で

M-x hugo-entry

そうすると blog のタイトルをたずねてくるから
タイトルを決めて markdown を編集していく。

markdown のヘッダ部分は以下が自動生成されるから

+++
Tags = []
Categories = []
date = "2016-11-30T01:50:22+09:00"
title = "emacs だけで Blog を書く"
+++

あとは、Tags と Categories を埋めて markdown で書いていくだけ

blog が完成したので公開しよう。
emacs で保存したのち

M-x hugo-publish

をたたく。これでサーバー上に blog が公開された。

さて、少し気に入らない記事を修正したいから blog をリライトしよう。
emacs で

M-x hugo-edit

をたたくと

過去記事一覧がでるので好きなものをリライトしよう。

過去記事が 10000 に増えてもこのディレクトリで

M-x helm-ag

すればすぐ該当の記事の該当行にジャンプできるから心配ない。
以下は emacs という単語を書いた記事を探している。

リライトが終わったら emacs で

M-x hugo-publish

すれば公開される。

記事を書き終わったら emacs で magit を立ち上げて github に blog のソースファイルを push する。
blog が github で管理されていると複数人での blog 運営も可能になるし、2
サーバーが消えてもすぐに復旧できるのがよい。
blog のソースファイルは github と自分のパソコンとサーバーにあるから
同時に消えるなんて事態にはならないだろう。

画像も github で管理しているので
src と打ったあと tab キーで以下のスニペットがでるようにしている。

<a href="https://raw.githubusercontent.com/yourgithubid/image/image/■">
<img src="https://raw.githubusercontent.com/yourgithubid/image/image/■" width="100%">
</a>

ファイル名をいれると■が変更される。
github に画像を上げておけば src - tab キー だけで画像リンクを挿入できる。

スニペットの定義は以下にある。
yasnippet が必要。
github

環境構築


サーバーは Linux ならなんでもいい。3

自分のマシンに Hugo をインストールする。
Hugo 公式にインストール方法がのっている。
https://gohugo.io/

自分は ArchLinux なので

yaourt hugo

~/.ssh/config に以下を設定する(blogdomain は変更しない)

 Host blogdomain
                    HostName サーバーの IP アドレス
                    User ログインユーザー名

githubに移した

サーバー上の/home/blog/以下に blog が生成されるから
nginx でそこを参照するように設定する。
以下は Let’s Encrypt で常時 SSL を想定

server {
    listen 80;
    server_name yourblogdomain;
    return  301 https://yourblogdomain$request_uri;
    location / {
        root /home/blog;
    index   index.html index.htm;
    }
}
server {
    listen 443;
    server_name yourblogdomain;
    ssl on;
    # サーバ証明書(サーバ証明書に中間 CA 証明書を連結したもの)
    ssl_certificate      /etc/letsencrypt/live/yourblogdomain/fullchain.pem;
    # 秘密鍵
    ssl_certificate_key  /etc/letsencrypt/live/yourblogdomain/privkey.pem;

location / {
    root    /home/blog;
index   index.html index.htm;
    }
}

     


  1. 一日 100 万 PV の blog を書くと言っているわけではない [return]
  2. 複数人で運用する場合は言うまでもなく github で hook してサーバーを update すべき [return]
  3. windows サーバーだとどうなるかは知らんけど [return]

30 Nov 2016 #emacs #hugo #linux

このエントリーをはてなブックマークに追加