「科の木(しなのき)」は、Wiki風編集インターフェースを備えた静的サイトジェネレータです。Rubyで書かれています。
Wiki風のWebインターフェースを持っているとはいえ、これに不特定多数のユーザーがアクセスできるような使い方は想定していません(セキュリティ上の問題があります)。自分一人がアクセスできるローカルマシンで動かすか、Webサーバーで認証をつけた中で動かすようにしてください。決して編集インターフェースを認証なしでインターネットから見える場所に露出させてはなりません。
- 作者による紹介記事: https://巫.jp/blog/2020/01/29/make-sinanoki/
Bundler が必要です。あらかじめインストールしておいてください。
Bundler のインストールが済んでいる場合、
$ bundle install --path vendor/bundleで依存ライブラリをインストールできます。
最初に一度だけ行ってください。
$ cp conf.yaml.default conf.yaml # 設定ファイルの作成
$ bundle exec ruby init_repo.rb # データを保存するためのGitリポジトリを作成
$ bundle exec ruby copy_static_files.rb # cssやjs等のファイルを静的サイトの出力ディレクトリにコピーsrcrepo ディレクトリ以下に原稿ファイル用のリポジトリが作成されます。
$ bundle exec ruby sinanoki.rbで起動します。
http://localhost:4567 にアクセスしてください。
上の「編集」ボタンを押すとそのページを編集できます。
編集ページで「更新」を押すと、 srcrepo のGitリポジトリにMarkdownのファイルが生成され、自動でコミットされます。
公開サーバーで公開するための静的なファイルが、コミットと同時に dst ディレクトリに生成されます。この際、生成(更新)されるファイルは今更新したファイルだけです。
サイト全体を再生成したいときは、 http://localhost:4567/generate_all にアクセスしてください。
特に新しいページを作ったときは、これを行わないとリンク元のページに <未> が表示されたままになります。
post-generation.rb という名前でRubyスクリプトを置いておくと、「静的ファイルの生成」の後にそのスクリプトが実行されます。
ここでrsyncなどを行うようにすると、サイトデータの更新後自動でサーバーにコピーさせることができます。
post-generation.rb の例:
#!/usr/bin/env ruby
system("rsync -av dst/ remoteserver:public_html/shoko/")基本的には Redcarpet の対応している記法に従います。
以下の拡張があります。
[[pagename]]で、サイトの中のpagenameという名前のページにリンクするWiki風記法$\sin x$,$$\cos x$$という記法でのTeX数式対応(KaTeXを利用)
(これはsinanoki自体の機能ではありませんが)Gitリポジトリにpost-commitフックを仕込むことで、コミット時(=記事更新時)に何らかの動作をさせることができます。
たとえば、 srcrepo/.git/hooks/post-commit に
#!/bin/sh
git push origin masterと書くと、記事リポジトリをリモートリポジトリにバックアップできます。