[Memo2016][ITPASS]Hiki のインストールと設定
Hiki のインストールと設定
今回は, /home/itpass/ftp/server/2015/hiki-update-files にある, 2014 年度に村上(真)さんが用意してくださったファイルを利用して行う.
Hiki のインストール
ファイルの取得
- hiki をインストールした.
# apt-get install bundler ruby-dev libmysqld-dev # apt-get autoremove (不要なパッケージを削除した) # rehash (bash では不要だった) # cd /usr/local/ # git clone https://github.com/hiki/hiki.git
ここで以下のメッセージがでる.
- 調べてみたが, この警告は無視されているようなので未解決のまま先に進むことにした.
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root users on this machine.
# cd hiki # bundle install # ln -s hikiconf.rb.sample hikiconf.rb.sample.ja
- ika-itpass の /home/itpass/ftp/server/2015/hiki-update-files をディレクトリごと/usr/local/hiki/ に置いた.
hiki の環境設定
- Table を使えるようにするための設定
hiki-update-files 内の table_form_rd.rb を以下の場所に置いた.
# cp table_form_rd.rb /usr/local/hiki/misc/plugin/
hiki-update-files 内の session.rb と 00default.rb を以下の場所に置こうとしたが, /usr/local/hiki の下に hiki/ と plugin/ がない.
/usr/local/hiki/hiki/session.rb /usr/local/hiki/plugin/00default.rb
git log を確認したところ, 2016 年 1 月に Hiki が更新され, ディレクトリの構造が変わっていた.
- 具体的には, /usr/local/hiki の下に昨年度までにはなかった lib/hiki ディレクトリがあり, いくつかのファイルやディレクトリが /usr/local/hiki から /usr/local/hiki/lib/hiki に移動したようである.
- lib/ 以下に置く.
万一のためにバックアップをとった.
$ cd /usr/local/hiki $ sudo mkdir backup $ cd backup $ sudo cp ../lib/hiki/session.rb . $ diff -u /usr/local/hiki/lib/hiki/session.rb /usr/local/hiki/hiki-update-files/session.rb (デフォルトとの違いを確認) $ sudo cp ../lib/hiki/plugin/00default.rb . $ diff -u /usr/local/hiki/lib/hiki/plugin/00default.rb /usr/local/hiki/hiki-update-files/00default.rb (デフォルトとの違いを確認)
table_form_rd.rb の中身にディレクトリの記述がないか確認した.
$ cd /usr/local/hiki/misc/plugin
- 以下にコピーした.
/usr/local/hiki/lib/hiki/session.rb /usr/local/hiki/lib/hiki/plugin/00default.rb
rdtool と rttool のインストール
# apt-get install rdtool rttool
- html_formatter.rb について
- hiki-update-files 内の html_formatter.rb は使わず, デフォルトのものを用いる.
- デフォルトのファイル名が formatter.rb だった.
デフォルトのファイルと比較した.
$ diff -u /usr/local/hiki/lib/hiki/style/rd+/formatter.rb /usr/local/hiki/hiki-update-files/html_formatter | lv
- 問題があれば再考する.
場所は以下の通り.
/usr/local/hiki/lib/hiki/style/rd+/formatter.rb
- hiki-update-files 内の html_formatter.rb は使わず, デフォルトのものを用いる.
- hiki-update-files 内の rd2html.rb を以下の場所に置いた.
- デフォルトのものではなく, hiki-update-files の rd2html.rb を用いる.
- ただし, require 'style/rd+/anchorlist' を require 'hiki/style/rd+/anchorlist' とした.
- デフォルトのもの, /usr/local/hiki/lib/hiki/style/rd+/rd2html.rb はバックアップをとった.
以下の場所に置いた
/usr/local/hiki/lib/hiki/style/rd+/rd2html.rb
- デフォルトのものではなく, hiki-update-files の rd2html.rb を用いる.
hiki-update-files/hikisetup について
- ディレクトリ構造が変わっているので内容を書き換える
- hiki-update-files の rd2html.rb を書き換えることにしたため, コピーしてhiki-update-files-2016 を作成した.
- 以後, 変更はこのディレクトリのファイルで行う.
$ sudo vi /usr/local/hiki/hiki-update-files/hikisetup
- 下のように変更する.
@plugin_path = '/usr/local/hiki/plugin' if ! @plugin_path -> @plugin_path = '/usr/local/hiki/lib/hiki/plugin' if ! @plugin_path Dir.glob(File.join(HIKIDIR, "messages/*.rb")).map{ |s| s.scan(%r!([^/]+)\.rb$!).first } -> Dir.glob(File.join(HIKIDIR, "lib/hiki/messages/*.rb")).map{ |s| s.scan(%r!([^/]+)\.rb$!).first }
確認テスト
- chikuwa2 ユーザで hiki ページを作成してみる(参考: [TEBIKI]Hikiのページ毎の基本設定)
- chikuwa2 のホームディレクトリに public_html ディレクトリを作成し, ブラウザからアクセスできるかどうかを確認した.
- できた
Hiki 用のディレクトリを作成する.
$ cd ~chikuwa2 $ mkdir hiki $ chmod 2775 hiki
hiki ディレクトリに移動し, hikisetup を実行した.
$ cd /home/chikuwa2/hiki $ hikisetup --lang ja INFO: hiki basedir is /home/chikuwa2/hiki Please input data_path [/home/chikuwa2/hiki/data]:
下のようなエラーが出たので, usr/local/hiki/hiki-update-files-2016/hikisetup を書き換えたのち, 上と同じ操作を行って成功した.
Default text data of "ja" does not found. Using "en" one. /usr/local/bin/hikisetup:175:in `+': no implicit conversion of Errno::ENOENT into String (TypeError) from /usr/local/bin/hikisetup:175:in `rescue in main' from /usr/local/bin/hikisetup:152:in `main' from /usr/local/bin/hikisetup:180:in `<main>'
hikisetup は下のように書き換えた.
cp "/usr/share/doc/hiki/examples/dot.htaccess", ".htaccess" -> cp "/usr/local/hiki/dot.htaccess", ".htaccess"
- chikuwa2 のホームディレクトリに public_html ディレクトリを作成し, ブラウザからアクセスできるかどうかを確認した.
hikisetup で作成されたファイルの移動
$ cd /home/chikuwa2/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/chikuwa2/public_html $ ln -s ../hiki/cgi hiki
CVS 管理の準備
CVS のインストール
Hiki のデータを CVS で管理する. そのために, CVS をシステムにインストールする. Debian の場合には cvs パッケージをインストールすればよい.
# apt-get install cvs
リポジトリの場所を問われた場合は作成しないと答える (後で別途作成するため).
cvsroot の作成
CVS データを管理するための CVS レポジトリの作成を行う.
$ sudo cvs -d /home/chikuwa2/hiki/cvsroot init
作成後, cvsroot ディレクトリに関しても権限を www-data に渡す.
$ cd /home/chikuwa2/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/chikuwa2/pulic_html/hiki"> AllowOverride ALL Options -MultiViews </Directory>
CGI からの動作チェック
https://133.30.109.21/~chikuwa2/hiki
へアクセスするが失敗した.
hiki-update-files-2016/hikisetup を書き換えた結果, 成功した.
#!/usr/bin/ruby -I{HIKIDIR} -> #!/usr/bin/ruby -I{HIKIDIR}/lib
ファイルを置き換えて試してみる.
$ sudo cp /usr/local/hiki/hiki-update-files-2016/hikisetup /usr/local/bin/hikisetup
確認テスト(二回目)
Hiki用ディレクトリの作成
一回目に作成したものを削除した.
$ sudo rm -rf /home/chikuwa2/hiki
Hiki 用のディレクトリを作成した.
$ cd /home/chikuwa2 $ mkdir hiki $ chmod 2775 hiki
hikisetup による初期設定
hikisetup コマンドを用いて, 必要なファイルを /home/chikuwa2/hiki 以下にインストールする. データパスはデフォルトのものを選んだ.
$ cd /home/chikuwa2/hiki $ hikisetup --lang ja INFO: hiki basedir is /home/chikuwa2/hiki Please input data_path [/home/chikuwa2/hiki/data]:
ディレクトリ構成の変更とパーミッション設定
大まかには次の三点を行う.
ディレクトリ構成を以下のようにする.
/home/chikuwa2/hiki/cgi/ cgi 本体や設定ファイル, テーマを格納 data/ hiki のデータ (展開される場所) cvsroot/ hiki のデータのリポジトリ
パーミッション, 所有者, 所有グループを以下のようにする.
/home/chikuwa2/hiki/ rwxrwsr-x itpass itpass cgi/ rwxrwsr-x itpass itpass data/ rwxrwsr-x www-data www-data cvsroot/ rwxrwsr-x www-data www-data
- 公開に際して, /home/chikuwa2/public_html/hiki から /home/chikuwa2/hiki/cgi にシンボリックリンクをはる.
具体的な作業例を以下に述べる. ただし, cvsroot に関しては別途 cvs コマンド から作成するため, 下記の #cvsroot の作成 を参照のこと.
hikisetup で作成されたファイルの移動
$ cd /home/chikuwa2/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/chikuwa2/public_html $ ln -s ../hiki/cgi hiki
CVS 管理の準備
cvsroot の作成
CVS データを管理するための CVS レポジトリの作成を行う.
$ sudo cvs -d /home/chikuwa2/hiki/cvsroot init
作成後, cvsroot ディレクトリに関しても権限を www-data に渡す.
$ cd /home/chikuwa2/hiki $ sudo chown -R www-data:www-data cvsroot $ sudo chmod 2775 `find cvsroot/ -type d`
ファイルへのアクセス制御の設定
/usr/local/apache2/conf/httpd.conf に以下があることを確認した.
<Directory "/home/chikuwa2/pulic_html/hiki"> AllowOverride ALL Options -MultiViews </Directory>
CGI の基本動作のチェック
Apache を再起動 ([ITPASS2011a]apache2のインストールと設定#動作チェック を参照)して
https://133.30.109.21/~chikuwa2/hiki
へアクセスし, Hiki のトップページが見えることを確認する.
なお, この初回アクセス時に /home/chikuwa2/hiki/data/ 以下に, cache, info.db, text 等のファイルが自動的に 作成されるはずである. これらに関するパーミッションも再度設定する.
$ cd /home/chikuwa2/hiki $ sudo chown -R www-data:www-data data $ sudo chmod -R g+w data $ sudo chmod 2775 `find data/ -type d`
RD 形式で記述するための作業
/home/chikuwa2/hiki/cgi/hikiconf.rb の末尾に
# RD 形式で記述するための設定 # header_depth では '=' を <h2> にするよう設定 @style = 'rd+' @options['rd.header_depth'] = 2
を追加する. 上記により, header_depth では = を <h2> にするように設定できる.
ファイルの書き換えが終われば作業完了である. 確認のため,
https://133.30.109.21/~chikuwa2/hiki
へアクセスしてみたが失敗.
エラー内容
uninitialized constant Hiki::Formatter::RD::RDTree (NameError) /usr/local/hiki/lib/hiki/style/rd+/formatter.rb:37:in `rescue in to_s' /usr/local/hiki/lib/hiki/style/rd+/formatter.rb:34:in `to_s' /usr/local/hiki/lib/hiki/command.rb:205:in `cmd_view' /usr/local/hiki/lib/hiki/command.rb:131:in `block in dispatch' /usr/lib/ruby/2.1.0/timeout.rb:91:in `block in timeout' /usr/lib/ruby/2.1.0/timeout.rb:35:in `block in catch' /usr/lib/ruby/2.1.0/timeout.rb:35:in `catch' /usr/lib/ruby/2.1.0/timeout.rb:35:in `catch' /usr/lib/ruby/2.1.0/timeout.rb:106:in `timeout' /usr/local/hiki/lib/hiki/command.rb:104:in `dispatch' /usr/local/hiki/hiki.cgi:36:in `block in <top (required)>' /usr/local/hiki/lib/hiki/storage/base.rb:13:in `open_db' /usr/local/hiki/hiki.cgi:34:in `<top (required)>' /home/chikuwa2/public_html/hiki/hiki.cgi:2:in `load' /home/chikuwa2/public_html/hiki/hiki.cgi:2:in `<main>'
- 対処法を探す
$ lv /usr/local/hiki/lib/hiki/command.rb $ lv /usr/local/hiki/lib/hiki/formatter.rb $ diff -ur /usr\local/hiki/formatter.rb /usr/local/hiki/hiki-update-files-2016/html_formatter.rb $ diff -ur /usr/local/hiki/hiki-update-files-2016/rd2html.rb /usr/local/hiki/backup/rd2html.rb $ lv /usr/local/hiki/lib/hiki/style/rd+/formatter.rb $ locate rd/rd2html $ locate rdfmt $ grep rdfmt */*/*/*/* * /usr/local/hiki/lib/hiki/style/rd+/formatter.rb を編集 "require rd/rdfmt" を追加したが上手くいかなかったので元に戻した. $ lv /usr/lib/ruby/vendor_ruby/rd/rd2html-lib.rb $ lv /usr/local/hiki/lib/hiki/style/rd+/rd2html.rb $ lv /usr/lib/ruby/vendor_ruby/rd/tree.rb $ lv /usr/lib/ruby/vendor_ruby/rd/rdfmt.rb $ lv /usr/local/hiki/lib/hiki/style/rd+/formatter.rb 原因がわからない(11/03 ここまで) $ lv /usr/loal/hiki/lib/hiki/config.rb ika では /usr/loal/hiki/hiki/config.rb にある. ika の config.rb のファイルの require の四行(load_messages の下)を tako の config.rb に追加する. その際少し変更した(locate でファイルの正しいパスを探した). require "style/#{@style}/parser" require "style/#{@style}/html_formatter" require "hiki/repos/#{@repos_type}" require "hiki/db/#{@database_type}" -> require "lib/hiki/style/#{@style}/parser" require "lib/hiki/style/#{@style}/formatter" require "lib/hiki/repository/#{@repos_type}" require "lib/hiki/storage/#{@database_type}" しかしエラー変わらず. uninitialized constant Hiki::Formatter::RD::RDTree (NameError) /usr/local/hiki/lib/hiki/style/rd+/formatter.rb:37:in `rescue in to_s' /usr/local/hiki/lib/hiki/style/rd+/formatter.rb:34:in `to_s' /usr/local/hiki/lib/hiki/command.rb:205:in `cmd_view' /usr/local/hiki/lib/hiki/command.rb:131:in `block in dispatch' /usr/lib/ruby/2.1.0/timeout.rb:91:in `block in timeout' /usr/lib/ruby/2.1.0/timeout.rb:35:in `block in catch' /usr/lib/ruby/2.1.0/timeout.rb:35:in `catch' /usr/lib/ruby/2.1.0/timeout.rb:35:in `catch' /usr/lib/ruby/2.1.0/timeout.rb:106:in `timeout' /usr/local/hiki/lib/hiki/command.rb:104:in `dispatch' /usr/local/hiki/hiki.cgi:36:in `block in <top (required)>' /usr/local/hiki/lib/hiki/storage/base.rb:13:in `open_db' /usr/local/hiki/hiki.cgi:34:in `<top (required)>' /home/chikuwa2/public_html/hiki/hiki.cgi:2:in `load' /home/chikuwa2/public_html/hiki/hiki.cgi:2:in `<main>'
確認テスト(三回目)
ここで, ika の自分のディレクトリの下で同じことをしてみる. 手引きの手順通りだが, 途中エラーがでるので hikisetup を書き換える.
cp "/usr/share/doc/hiki/examples/dot.htaccess", ".htaccess" cp "/usr/local/hiki/dot.htaccess", ".htaccess"
同様の作業を行う ただし, 「Error! Please edit this page again.」とメッセージが表示されたので, 一度 data 領域以下を#hikisetup による初期設定 の状態に戻して成功した (data および data/backup以外のファイルやディレクトリを消した).
確認テスト(二回目の続き)
- chikuwa2 ユーザで hiki ページを作成していた(参考: [TEBIKI]Hikiのページ毎の基本設定).
- RD 形式で記述するための作業で失敗していた.
- hiki/lib/hiki/style/rd+/formatter.rb と hiki/lib/hiki/style/rd+/parser.rb を以下のように書き換えた結果, Hiki のページへのアクセスが成功した.
formatter.rb の書き換え
module Hiki module Formatter class RD < Base
となっていたのを,
module Hiki module Formatter # class RD < Base class RDPLUS < Base
とした.
parser.rb の書き換え
module Hiki module Parser class RD
となっていたのを,
module Hiki module Parser # class RD class RDPLUS
とした.
以前 /usr/local/hiki/lib/hiki/config.log に追加した以下の 4 行(load_messages の下)をコメントアウトして hiki のページにアクセスできるか試した結果, 成功したので削除した.
require "lib/hiki/style/#{@style}/parser" require "lib/hiki/style/#{@style}/formatter" require "lib/hiki/repository/#{@repos_type}" require "lib/hiki/storage/#{@database_type}"
Keyword(s):
References:[[ITPASS2016]2016年度サーバ構築ログ]