[ITPASS2022]Hiki のインストールと設定

Hiki のインストールと設定

  • ~itpass/ftp/server/2022/hiki-update-files-2022 に 2022 年度のサーバ再構築作業で使ったファイルがあるので, それを使用する.
    • 補足説明
      • ~itpass/ftp/server/2020/hiki-update-files-2020 に 2020 年度のサーバ再構築作業で使ったファイルがある. これは, 2014 年度に村上(真)さんが用意してくださったファイルに変更を加えたものである.
      • ファイルを変更しなければいけない理由は, 2016 年 1 月に Hiki が更新され, ディレクトリの構造が変わっているためである.
        • 具体的には, /usr/local/hiki の下に昨年度までにはなかった lib/hiki ディレクトリがあり, いくつかのファイルやディレクトリが /usr/local/hiki から #/usr/local/hiki/lib/hiki に移動したようである.

Hiki のインストール

  • ファイルの取得

    • hiki をインストールする.
    # apt install bundler ruby-dev libmariadbd-dev
    # apt install libmariadb-dev-compat
    # apt autoremove        (不要なパッケージを削除)
    # rehash        (bash では不要)
    # cd /usr/local/
    # apt install git
    # git clone https://github.com/hiki/hiki.git
    # cd hiki
    # bundle update --bundler
    # bundle install
    # ln -s hikiconf.rb.sample  hikiconf.rb.sample.ja
    • ika-itpass の ~itpass/ftp/server/2022/hiki-update-files-2022 をディレクトリごと/usr/local/hiki/ に置く.

hiki の環境設定

  • Table を使えるようにするための設定

    • hiki-update-files-2022 内の table_form_rd.rb を以下の場所に置く.
    # cp hiki-update-files-2022/table_form_rd.rb /usr/local/hiki/misc/plugin/
    • session.rb と 00default.rb のバックアップをとる(念のため).
    $ cd /usr/local/hiki
    $ sudo mkdir backup
    $ cd backup
    $ sudo cp ../lib/hiki/session.rb .
    $ sudo cp ../lib/hiki/plugin/00default.rb .
    • hiki-update-files-2022 内の session.rb と 00default.rb を以下の場所に置く.
    /usr/local/hiki/lib/hiki/session.rb
    /usr/local/hiki/lib/hiki/plugin/00default.rb
    
    # cp hiki-update-files-2022/session.rb /usr/local/hiki/lib/hiki/session.rb
    # cp hiki-update-files-2022/00default.rb /usr/local/hiki/lib/hiki/plugin/00default.rb
  • rdtool と rttool のインストール
# apt install rdtool rttool
  • hiki-update-files-2022 内の formatter.rb を以下の場所に置く(cp を使う).

    • デフォルトのものではなく, hiki-update-files-2022 の formatter.rb を用いる.
    • デフォルトのもの (/usr/local/hiki/lib/hiki/style/rd+/formatter.rb) はバックアップをとっておく.
    • hiki-update-files-2022 の formatter.rb を確認する.

      • 48 行目
      s = "<div class=\"cot\"><ul>\n"
      • 58 行目
      s << %Q!<li><a href="##{hash['index'].gsub(/^%/, '').gsub(/%/, '-')}" class="cot">#{h(hash['title'])}</a>\n!
      • 60 行目
      s << ("</ul>\n" * lv)
      • 61 行目
      s << ("</div>\n") 
    • 場所は以下の通り.
    /usr/local/hiki/lib/hiki/style/rd+/formatter.rb
  • hiki-update-files-2022 内の rd2html.rb を以下の場所に置く(cp を使う).

    • デフォルトのものではなく, hiki-update-files-2022 の rd2html.rb を用いる.
    • デフォルトのもの (/usr/local/hiki/lib/hiki/style/rd+/rd2html.rb) はバックアップをとっておく.
    • hiki-update-files-2022 の rd2html.rb の, require 'style/rd+/anchorlist' が require 'hiki/style/rd+/anchorlist' となっていることを確認する.
    • 場所は以下の通り.
    /usr/local/hiki/lib/hiki/style/rd+/rd2html.rb
  • /usr/local/hiki/hiki-update-files-2022/hikisetup を確認する.

    • 38 行目
    Dir.glob(File.join(HIKIDIR, "lib/hiki/messages/*.rb")).map{ |s| s.scan(%r!([^/]+)\.rb$!).first }
    • 52 行目
    @plugin_path = '/usr/local/hiki/lib/hiki/plugin' if ! @plugin_path
    • 108 行目
    # !/usr/bin/ruby -I{HIKIDIR}/lib 

    であるべきだが

    # !/usr/bin/ruby -I#{HIKIDIR}/lib

    であってもそのままにしておく.

    • 135 行目
    cp "/usr/local/hiki/dot.htaccess", ".htaccess" 
  • ファイルをおく.

    $ sudo cp /usr/local/hiki/hiki-update-files-2022/hikisetup /usr/local/bin/
  • hikisetup のパーミッションを変更する.
# chmod 775 /usr/local/bin/hikisetup

確認作業

自分のユーザアカウント (2022 年度作業時は chikuwa5 であったので, 以下 chikuwa5 と書く) で hiki ページを作成し, Hiki のトップページにアクセスできるか確認する(参考: [TEBIKI]Hikiのページ毎の基本設定).

  • chikuwa5 のホームディレクトリに public_html ディレクトリを作成し, ブラウザからアクセスできるかどうかを確認する.
$ mkdir public_html
  • Hiki 用のディレクトリを作成する.
$ cd ~chikuwa5
$ mkdir hiki
$ chmod 2775 hiki

hikisetup による初期設定

  • hikisetup コマンドを用いて, 必要なファイルを /home/chikuwa5/hiki 以下にインストールする. データパスはデフォルトのものを選ぶ.
  • hiki ディレクトリに移動し, hikisetup を実行する.
$ cd /home/chikuwa5/hiki

$ hikisetup --lang ja
INFO: hiki basedir is /home/chikuwa5/hiki
Please input data_path [/home/chikuwa5/hiki/data]:
  • 以下のコマンドで作成されたファイル群を表示させる.
# apt install tree
$ tree -a

ディレクトリ構成の変更とパーミッション設定

大まかには次の三点を行う.

  • ディレクトリ構成を以下のようにする.

    /home/chikuwa5/hiki/cgi/      cgi 本体や設定ファイル, テーマを格納
                      data/     hiki のデータ (展開される場所)
                      cvsroot/  hiki のデータのリポジトリ
  • パーミッション, 所有者, 所有グループを以下のようにする.

    /home/chikuwa5/hiki/       rwxrwsr-x chikuwa2   chikuwa2
                  cgi/       rwxrwsr-x chikuwa2   chikuwa2
                  data/       rwxrwsr-x www-data www-data
                  cvsroot/    rwxrwsr-x www-data www-data
  • 公開に際して, /home/chikuwa5/public_html/hiki から /home/chikuwa5/hiki/cgi にシンボリックリンクをはる.

具体的な作業例を以下に述べる. ただし, cvsroot に関しては別途 cvs コマンド から作成するため, 下記の #cvsroot の作成 を参照.

hikisetup で作成されたファイルの移動

$ cd /home/chikuwa5/hiki
$ mkdir cgi

$ mv .htaccess hiki.cgi hikiconf.rb theme cgi/

$ chmod -R g+w cgi
$ chmod 2775 `find cgi/ -type d`

data ディレクトリのパーミッション設定

  • www-data に書き込み/読み込み権限を渡す.
$ sudo chown -R www-data:www-data data
$ sudo chmod -R g+w data
$ sudo chmod 2775 `find data/ -type d`

public_html 以下からのシンボリックリンクの作成

$ cd /home/chikuwa5/public_html
$ ln -s ../hiki/cgi hiki

CVS 管理の準備

CVS のインストール

Hiki のデータを CVS で管理する. そのために, CVS をシステムにインストールする. Debian の場合には cvs パッケージをインストールすればよい.

# apt install cvs

cvsroot の作成

CVS データを管理するための CVS レポジトリの作成を行う.

$ sudo cvs -d /home/chikuwa5/hiki/cvsroot init

作成後, cvsroot ディレクトリに関しても権限を www-data に渡す.

$ cd /home/chikuwa5/hiki
$ sudo chown -R www-data:www-data cvsroot
$ sudo chmod 2775 `find cvsroot/ -type d`

cvsroot の中にあるファイルに関してはグループ書き込み権限は不要である. (ディレクトリに対しては, 上記のようにグループ書き込み権限が必要である).

ファイルへのアクセス制御の設定

/usr/local/apache2/conf/httpd.conf に以下を加える.

<Directory "/home/chikuwa5/public_html/hiki">
   AllowOverride ALL
   Options -MultiViews
</Directory>

CGI の基本動作のチェック

Apache を再起動 ([Memo2022][ITPASS]Apache のインストールと設定 を参照)して

# systemctl restart apache2

 https://133.30.109.21/~chikuwa5/hiki

へアクセスし, Hiki のトップページが見えるかどうか確認する.

この初回アクセス時に /home/chikuwa5/hiki/data/ 以下に, cache, info.db, text 等のファイルが自動的に 作成される場合は. これらに関するパーミッションも再度設定する.

$ cd /home/chikuwa5/hiki
$ sudo chown -R www-data:www-data data
$ sudo chmod -R g+w data
$ sudo chmod 2775 `find data/ -type d`

RD 形式で記述するための作業

  • /home/chikuwa5/hiki/cgi/hikiconf.rb の末尾に以下を追加する. これにより, header_depth では = を <h2> にするように設定できる.
# RD 形式で記述するための設定
#   header_depth では '=' を <h2> にするよう設定
@style = 'rd+'
@options['rd.header_depth'] = 2
  • hiki/lib/hiki/style/rd+/formatter.rb をバックアップのものと diff を取ると以下のようになる.
chikuwa5@tako-itpass:/usr/local/hiki$ sudo diff -u 
./lib/hiki/style/rd+/formatter.rb ./backup/formatter.rb.bak 
--- ./lib/hiki/style/rd+/formatter.rb   2022-10-27 11:40:29.215849888 +0900
+++ ./backup/formatter.rb.bak   2022-10-27 11:33:33.644271878 +0900
@@ -16,8 +16,7 @@

 module Hiki
   module Formatter
-    #class RD < Base
-    class RDPLUS < Base
+    class RD < Base
       Formatter.register(:rd, self) 

       include Hiki::Util
@@ -45,7 +44,7 @@
       end 

       def toc
-        s = "<div class=\"cot\"><ul>\n"
+        s = "<ul>\n"
         lv = 1
         @visitor.toc.each do |hash|
           if hash["level"] > lv
@@ -55,10 +54,9 @@
             s << ("</ul>\n" * (lv - hash["level"]))
             lv = hash["level"]
           end
-         s << %Q!<li><a href="##{hash['index'].gsub(/^%/, '').gsub(/%/, '-')}" class="cot">#{h(hash['title'])}</a>\n!
+          s << %Q!<li><a href="##{hash['index']}">#{h(hash['title'])}</a>\n!
         end
         s << ("</ul>\n" * lv)
-       s << ("</div>\n")
       end
     end
   end
  • hiki/lib/hiki/style/rd+/parser.rb を以下のように書き換える.
    • parser.rb の書き換え

      module Hiki
        module Parser
          class RD

      となっているのを,

      module Hiki
        module Parser
      #    class RD 
          class RDPLUS 

      とする.

  • 確認のためアクセスする.
https://133.30.109.21/~chikuwa5/hiki

この時, 「Error! Please edit this page again.」 のようなメッセージが表示される場合は, [TEBIKI]Hikiのページ毎の基本設定を参考にして, data 領域以下を #hikisetup による初期設定 の状態に戻す. (具体的には ~/hiki/data/ 以下の cache, info.db, session を削除する. )

  • 書き込みテスト

Hiki のページにおいてページを新規作成し, 正しく書き込みができていることを確認する.

Last modified:2023/06/12 09:58:40
Keyword(s):
References:[[ITPASS2022]2022年度サーバ構築マニュアル]