IT pass HikiWiki - [Memo2014][ITPASS]サーバアップグレード(ika) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

= ITPASSサーバアップグレード(ika)

{{toc}}


== ika から tako へのバックアップの cron を止める
* /etc/cron.local/daily 以下の該当スクリプトの実行権限を外す
# chmod a-x /etc/cron.local/daily/230_rsync_itpassbk

== システムアップグレード作業
* 以下の手順を参考に進める
  * ((<URL:https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ja.html>))

=== パッケージ関連の設定確認

* Squeeze の最新版にする
# apt-get update
# apt-get upgrade
* パッケージマネージャにおいて中断しているアクションの確認
  * aptitude のビジュアルモードで起動し, g を押す
  * いくつかのパッケージが削除推奨になった
    * 指示通り削除した
* APT の pin 機能を無効にする
  * exim4 関連のパッケージが hold されているので, それを解除した (((<参考ページ|[ITPASS2012]qmailのインストールと設定#sendmail の「置き換え」>)))
   # echo exim4 install | dpkg --set-selections
   # echo exim4-base install | dpkg --set-selections
   # echo exim4-config install | dpkg --set-selections
   # echo exim4-daemon-light install | dpkg --set-selections
  * 一応 これらの exim 関連パッケージも更新した
* パッケージの状態をチェックする
  * インストールが未完了のパッケージ (Half-Installed) や設定に失敗したパッケージ (Failed-Config), 何らかのエラー状態にあるパッケージを表示
     # dpkg --audit
    * 何も表示されなかった
* /etc/apt/source.list の電脳関連の部分をコメントアウト

=== wheezy へのアップグレード

* APT のインターネットソースの編集
  * /etc/apt/source.list の squeeze を wheezy に書き換え
* アップグレードセッションの記録をとる
  * サンプル
   # script -t 2>~/upgrade-wheezy手順.time -a ~/upgrade-wheezy手順.script
* パッケージリストの更新
# apt-get update
* アップグレードするのに十分な領域があることを確認
# apt-get -o APT::Get::Trivial-Only=true dist-upgrade
* コンピューターが PAE を持っているかを確認
   # grep -q '^flags.*\bpae\b' /proc/cpuinfo && echo yes || echo no
  * yes と表示された
* システムの最小アップグレード
   # apt-get upgrade
  * update-passwd に関するメッセージが表示された
    * bind ユーザー, およびグループの削除を推奨された
      * 削除した
      * この後の作業で再度追加する
  * adduser パッケージの更新で, /etc/deluser.conf を更新するか確認された
    * 更新しないので, N を押した
  * cron のパッケージの更新で, /etc/crontab
    * 更新しないので, N を押した
  * fail2ban /etc/fail2ban/filter.d/sshd.conf
    * 更新しないので, N を押した
  * fail2ban /etc/fail2ban/filter.d/apache-auth.conf
    * 更新しないので, N を押した
  * fail2ban /etc/fail2ban/filter.d/jail.conf
    * 更新しないので, N を押した
  * sudoers /etc/sudoers
    * 更新せず, 後で書き換える
* システムのアップグレード
   # apt-get dist-upgrade
  * 以下のように表示され, アップグレードが中断された.
     「openjdk-6-jre」の即時設定は動作しません。詳細については man 5 apt.conf の APT::Immediate-Configure の項を参照してください
    * マニュアルに従い以下のように実行
     apt-get dist-upgrade -o APT::Immediate-Configure=0
    * linux-image-... で上と同様に表示され, 中断される
      * 別の方法を探すことにした
    * openjdk-6-jre を削除し, dist-upgrade を行った
  * libc6 の設定で, 一部のサービスを自動的に再起動してもいいか聞かれる
    * YES を選択
  * bash /etc/bashrc の設定を更新するか聞かれる
    * 更新しないため, N を押した
  * openssl /etc/ssh/openssl.cnf
    * 更新しないため, N を押した
  * /etc/services
    * 更新しないため, N を押した
  * /etc/logrotate.d/rsyslog
    * ひとまず更新せず, 変更点を後で書き換え
  * /etc/init.d/exim4
    * 更新し, 後で exim4.bk にリネームする
  * /etc/cron.daily/exim4-base
    * 更新しない
  * /etc/csh.cshrc
    * 更新しない
  * /etc/logrotate.d/apache2
    * 更新しない
  * /etc/init.d/apache2
    * 更新しない

=== sudoers 関連の設定
* マニュアルで推奨されている /etc/sudoers.d 下への移動は行わない
  * gate-touroku-system が /etc/sudoers を編集するので
* /usr/local/gate/sbin/gate-db-sudoers ファイルを編集し, 以下の内容を該当部分に追記
   Defaults        mail_badpass
   Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

=== rsyslog

invoke-rc.d rsyslog reload > /dev/null
となっているところを
invoke-rc.d rsyslog rotate > /dev/null
とする。

== その他ソフトウェアのアップグレード

=== bind の設定
* bind ユーザー, グループを追加する
  * vipw を実行して以下の行を追加する
   bind:x:53:53:Bind Sandbox:/usr/local/bind/var:/bin/false
  * vipw -s を実行して以下の行を追加する
   bind:!:13749:0:99999:7:::
  * vigr を実行して以下の行を追加する
   bind:x:53:
  * vigr -s を実行して以下の行を追加する
   bind:*::
* bind を起動する
# /etc/init.d/bind start

=== hiki の設定
* ((<村上 (真) のインストールログ|URL:http://www.gfd-dennou.org/member/murashin/memo/hiki-1.0.0-install-log.html>)) を参考に作業する
* ログと異なる点のみ記載

* インストールソフトウェアの確認
  * ruby1.9.1 が入っていなかったので, 追加した
* hiki のピン止め
  * 追加内容を以下のように変更
   Package: hiki
   Pin: release n=testing
   Pin-Priority: 90
  
   Package: ruby-rd
   Pin: release a=wheezy-backports
   Pin-Priority: 1001
  
   Package: rdtool
   Pin: release a=wheezy-backports
   Pin-Priority: 1001
  
   Package: rdtool-elisp
   Pin: release a=wheezy-backports
   Pin-Priority: 1001

* パッチ当て
  * エラー削減
    * hiki-1.0.0-util.diff が failed したが, そのまま進めた
  * 必須項目
    * hikisetupでインストールされる hiki.cgi の shebang を書き換え
      * Apply anyway? と聞かれるので n を入力
    * auth_ldapをインストール(ITPASSサーバでは不要)
      * 不要なので飛ばした
    * attach.rbにパッチ当て
      * 不要なので飛ばした
    * attach.cgiにパッチ当て
      * 不要なので飛ばした
  * ツール関係
    * ここも飛ばした
  * 機能拡張
    * html_formatter.rb の修正
      * パッチでエラーが出た
* ここで hiki のバージョンを確認したところ, 0.8.8.1-3 であったので, hiki を remove し hiki 1.0.0 をインストールし, 初めから作業し直すことにした
* hikiのインストール
  * コマンドを以下のように変更
   # apt-get install hiki/testing
* パッチあて
  * hiki.cgiのshebangを書き換え
    * エラーが出たが, パッチは当たっていたようなので, そのまま進める
  * hikisetupでインストールされる hiki.cgi の shebang を書き換え
    * Apply anyway? と聞かれるので n を入力
  * ツール関係
    * 先ほどと同様飛ばした
  * 機能拡張
    * セッションの有効期限を伸ばす
      * hiki_hiki_session.rb.patch を使用する
  * 文字コード指定の変更
    * ~itpass/hiki/, ~itpass/hiki-secret/cgi/, ~itpass/hiki-IPtable/cgi/, ~epalab/hiki/cgi/ ~bldg3/hiki/cgi/ の hikiconf.rb を編集した
  * CVSを使っている場合
    * ~itpass 下の hiki のみこの作業を行った
    * commitinfo の編集
      * commitinfo ファイルに書き込み権限をつけた
        chmod a+w commitinfo
      * commitinfo の編集後元に戻した
        chmod a-w commitinfo
    * 同様に, CVSROOT 以下のその他のファイルの編集を行った
  * データの移行
    * 記事を変換する,info.dbを念のため書き戻す は飛ばした
    * info.dbを変換する
      * 変換のコマンドを実行したところエラーが出た
        * convert_info_db.rb の require の hiki/ で始まるパスの先頭に ./ を追加する
      * 67 行目でエラーが出た
        * /usr/share/hiki/tools を作成し, そこに convert_info_db.rb を配置し, /usr/share/hiki/ にcd してそこから実行する
    * 「ログを見る」は飛ばし, 「CVSを利用している場合」までスキップ
      * 上と同様に convert-cvs.rb を /usr/share/hiki/tools にコピーし実行する
    * 「リポジトリからデータをチェックアウトする。」まで完了した後, 「ログを見る。」からの作業を行った
      * 「合宿型セミナー開催のための作業手順・内容-撮影部隊スケジュール」の変換に失敗していた
        * この時点では, hiki がエラーで見られず修正できないので, この問題は後で修正する
    * 「失敗しなかった場合は」の部分の作業は飛ばして, ~itpass/hiki/data/hiki.conf の utf8 への変換のみ行った
    * hiki 閲覧時にエラーが表示される問題の対策
      * 2か所の hiki.cgi の先頭を書き換えた
       #!/usr/bin/ruby1.9.1 -I/usr/share/hiki
      * ~itpass/hiki/cgi/hikiconf.rb の文字コードを utf8 に変更した
* hiki の作業はここで中断した

=== gate の設定

* [itpass 7849] gateのためのwrapperプログラム のメール添付ファイルをコンパイルした
* /usr/local/gate/bin の以下のファイル名の末尾に.plを付けた
gate-user-accept
gate-user-apply
gate-user-authkey-list
gate-user-authkey-lock
gate-user-authkey-unlock
gate-user-renew
gate-user-withdraw
* コンパイルしたファイル (gate-user-show) を /usr/local/gate/bin 以下に置いた
  * このファイルの所有者は gate:gate, パーミッションは 2755 とした
* 動作テスト
  gate-user-show
  * libperl4-corelibs-perl をインストールして再実行したところエラーは出なくなった
* gate-user-show ファイルをコピーして, 以下のファイル名に変更
gate-user-accept
gate-user-apply
gate-user-authkey-list
gate-user-authkey-lock
gate-user-authkey-unlock
gate-user-renew
gate-user-withdraw
* gate の GUI から動作テスト
  * 「更新/変更」を押し, ログインしたところ, 何も表示されない
  * 文字化けする
* gate の作業はここで中断した

=== hikiの設定(2)

* 文字化けの問題の修正
  * /home/itpass/hiki/cgi の hiki.cgiとhikiconf.rb を編集した
    * ファイルのエンコードと, hikiconf.rd の @charset の部分の修正
* 左のメニューのエラーメッセージ
  * SideMenu ページをいったん「編集」して「保存」すると消えた
  
=== gateの設定(2)
* 以下の作業を行ったところ解決した
  * wrapperプログラムの不備を解消した
  * wrapperプログラムをsetuid gateした(モードを2755にした、所有者をgate:gateにした)
  * gate-common.plでhtmlの文字コードを指定するようにした
  * mailサーバとしてqmailでなくexim4を使うようになってしまっていたのでqmailを使うようにした (((<参考ページ|URL:https://itpass.scitec.kobe-u.ac.jp/hiki/hiki.cgi?[ITPASS2012]qmail%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E8%A8%AD%E5%AE%9A#sendmail+-E3-81-AE-E3-80-8C-E7-BD-AE-E3-81-8D-E6-8F-9B-E3-81-88-E3-80-8D>)))
* 加えて以下の作業をした。
  * libjcode-perlの代わりにlibjcode-pm-perlを使うように変更。
  * htpasswdで生成する.gateファイルのフォーマットが変わったので、従来のフォーマットで生成するためのオプション-dを付け加えるようマニュアルを書き換えた。

=== hikiの設定(3)
* 以下の hiki についての作業を行った
   ~itpass/hiki-secret, ~itpass/hiki-IPtable, ~epalab/hiki ~bldg3/hiki, ~fourtran/hiki

  * ((<村上 (真) のインストールログ|URL:http://www.gfd-dennou.org/member/murashin/memo/hiki-1.0.0-install-log.html>)) の, 「CVSを使っている場合」以降の部分を行った.
    * commitinfo などの書き換えは, 該当行がなければ行わなくてよい
    * データの移行作業の内, convert.rb を使った作業は ITPASS の hiki の場合と同様に飛ばしてよい
  * hiki.conf の修正
    * ファイルの文字コードを utf8 に変更した
    * ファイル内の site_name, author_name に日本語が含まれている場合は, いったんその部分を消した
      * 日本語の部分はこのようにエンコードされていた
       site_name = "\274\253\301\263\262\312\263\330\301\355\271\347\270\246\265\346\305\357\273\260\271\346\264\333 \311\364\262\260\244\316\315\275\314\363\264\311\315\375Wiki"
      * site_name, author_name の日本語の部分は, hiki がみられる状態になった後, 管理者ページの設定から改めて記入する
      * ((<hiki-1.0.0|URL:http://www.gfd-dennou.org/member/murashin/tools/hiki-1.0.0/>)) の site_name.sh を使うと, 日本語の部分を読める形に戻すことができる
  * hiki.cgi の修正
    * 文頭の部分を, ruby1.9.1 で実行するような記述に直した
  * table_form_rd.rb の修正
    * /usr/share/hiki/misc/plugin の table_form_rd.rb を utf8 に変換した
  * 以上の作業で, 各 hiki が閲覧可能になった

* 記事名の長いページに関する修正
  * hiki/data/text 以下の該当ページのファイルを開き, 中身をコピーした
  * 短くした名前で新しい hiki ページを作成し, コピーした内容を貼り付けた
  * info.db から古いページの記述を削除した(これで「検索」ができるようになった)

== aptの設定
* /etc/apt/source.list の testing の記述が残ったままだったので, 削除した

== hikiの追加の設定

/home/itpass/hiki/cvsroot/CVSROOT/html2cgiform.rb
を無効化するために、
hikidb_update.shのHTML2CGIの部分をコメントアウトした。

/home/itpass/hiki/cvsroot/CVSROOT/extra_spaces_checker.rb
の72行目のopenメソッドの引数に external_encoding: "UTF-8" を足した。

/usr/share/hiki/misc/plugin/table_form_rd.rb
の 80 行目の lines.each を lines.each_line に書き換えた