[Memo2014][ITPASS]サーバアップグレード(ika)

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

ika から tako へのバックアップの cron を止める

  • /etc/cron.local/daily 以下の該当スクリプトの実行権限を外す
# chmod a-x /etc/cron.local/daily/230_rsync_itpassbk

システムアップグレード作業

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

  • Squeeze の最新版にする
# apt-get update
# apt-get upgrade
  • パッケージマネージャにおいて中断しているアクションの確認
    • aptitude のビジュアルモードで起動し, g を押す
    • いくつかのパッケージが削除推奨になった
      • 指示通り削除した
  • APT の pin 機能を無効にする

    • exim4 関連のパッケージが hold されているので, それを解除した (参考ページ)
    # 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 の設定

  • 村上 (真) のインストールログ を参考に作業する
  • ログと異なる点のみ記載
  • インストールソフトウェアの確認
    • 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を使うようにした (参考ページ)
  • 加えて以下の作業をした。
    • libjcode-perlの代わりにlibjcode-pm-perlを使うように変更。
    • htpasswdで生成する.gateファイルのフォーマットが変わったので、従来のフォーマットで生成するためのオプション-dを付け加えるようマニュアルを書き換えた。

hikiの設定(3)

  • 以下の hiki についての作業を行った

    ~itpass/hiki-secret, ~itpass/hiki-IPtable, ~epalab/hiki ~bldg3/hiki, ~fourtran/hiki
    • 村上 (真) のインストールログ の, 「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 の 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 に書き換えた