[Debian/Apache2] mod_rewriteを有効にする

2008/08/19PC::Linux/BSD

adiaryでmod_rewriteを利用しようとしたところ、mod_rewriteが有効になっていないみたいだったので調べてみた。

環境

  • Debian GNU/Linux 4.0r3 (etch)
  • apache 2.2.3
  • adiary 2.002

mod_rewriteを有効にする

a2enmodを利用しmod_rewriteを有効にする。

# a2enmod rewrite

apache2のDirectoryディレクティブを以下のように設定する

AllowOverride FileInfo

apacheを再起動する。

adiary側の設定(.htaccess)

adiary設置ディレクトリに.htaccessを作成し以下のように記述*1

<IfModule mod_rewrite.c>
    RewriteEngine  On
    RewriteBase    /
    RewriteCond    %{REQUEST_FILENAME}	!-f
    RewriteRule    ^(.*)$	   	adiary.cgi/$1	[L]
</IfModule>

これでadiary.cgiなしでアクセスできるはず。

*1 : RewriteBaseなどの設定は個々の環境に合わせて変更する必要がある

参考

特殊なマウスを使う

2008/08/17PC::Linux/BSD

X環境で以下のポインティングデバイスを利用する方法について調べてみた。

  • 5ボタンマウス
  • トラックポイント

環境

OS
Kubuntu 8.04.1 日本語ローカライズド
Window Manager
KDE 3.5.9
5ボタンマウス
Microsoft Wireless IntelliMouse Explorer 2.0 (USB)
トラックポイント
IBM Space Saver II Keyboard
Firefox
3.0.1 (Ubuntuパッケージ版)

5ボタンマウスを利用する

Kubuntuデフォルトの設定では5ボタンマウスの第4、第5ボタンが機能しません。これらを利用可能とするには/etc/X11/xorg.confをのマウスに関するセクションを以下のように編集します。

Section "InputDevice"
    Identifier    "Mouse0"
    Driver        "mouse"
    Option        "Protocol" "auto"
    Option        "Device" "/dev/psaux"
    Option        "Emulate3Buttons" "no"
    Option        "ZAxisMapping" "4 5"
EndSection

ちなみに、このマウスのセクションはnVidia Settingsが吐き出すものです。

トラックポイントを利用する

トラックポイント4ではセンターボタンを押下時にポインタを動かすことにより、スクロールさせる機能が備わっています。これをLinux上で利用する場合のメモ。

xorg.confの設定

こちらの記事を参考に、5ボタンマウスを利用する場合と同様に以下のように/etc/X11/xorg.confのマウスのセクションを変更します。

Section "InputDevice"
    Identifier    "Mouse0"
    Driver        "mouse"
    Option        "Device" "/dev/input/mice"
    Option        "Protocol" "ImPS/2"
    Option        "Emulate3Buttons" "on"
    Option        "Emulate3Timeout" "50"
    Option        "ZAxisMapping" "4 5"
    # スクロール機能の有効化
    Option        "EmulateWheel" "on"
    # センターボタン押下時にスクロールボタン機能を割り当て
    Option        "EmulateWheelButton" "2"
    Option        "EmulateInertia" "50"
    # 横スクロール機能の有効化
    Option        "XAxisMapping" "6 7"
EndSection

Firefox側の設定

Firefoxにて横スクロール機能を利用する場兄はabout:configにて以下の項目を設定する必要がある。

  • mousewheel.horizscroll.withnokey.action = 0
  • mousewheel.horizscroll.withnokey.numlines = 1

設定の効果

センターボタンをホールド時にはスクロールボタンとして機能することとなり、Windows環境でのトラックポイントのように利用することが出来ます。なお、Windowsのトラックポイントドライバはセンターボタンを常にスクロールボタンとして機能させていますが、上記の設定の場合、センターボタンクリック時には通常のセンターボタンとして動作するため、FirefoxでCtrl+クリックで新しいタブに開いていたところをセンターボタンクリックのみで実現できます。

また、この設定を通常の3ボタンマウス*1に適用することでトラックポイントライクな操作性を実現することが出来ます。

*1 : ホイールではない純粋な3ボタンマウス。いや、ホイールタイプのマウスでも同様に動作しますけど、ホイールタイプなら素直にホイール回せ、と(苦笑

5ボタンマウス+トラックポイントの組み合わせの場合

これまでの設定を参考に、私の環境である5ボタンマウス+トラックポイントの組み合わせの場合を記述してみた。

Section "InputDevice"
    Identifier    "Mouse0"
    Driver        "mouse"
    Option        "CorePointer"
    Option        "Device" "/dev/input/mice"
    Option        "Protocol" "ExplorerPS/2"
    # マウスのボタンの数
    # 5ボタン+上下スクロール+チルトスクロールで9つ
    Option        "Buttons" "9"
    # マウスのボタンのマッピング
    # 第4ボタン: 8(Firefoxで「戻る」ボタン)
    # 第5ボタン: 9(Firefoxで「進む」ボタン)
    Option        "ButtonMapping "1 2 3 8 9"
    Option        "Emulate3Buttons" "false"
    Option        "Emulate3Timeout" "50"
    Option        "ZAxisMapping" "4 5"
    # スクロール機能の有効化
    Option        "EmulateWheel" "on"
    # センターボタン押下時にスクロールボタン機能を割り当て
    Option        "EmulateWheelButton" "2"
    Option        "EmulateInertia" "50"
    # 横スクロール機能の有効化
    Option        "XAxisMapping" "6 7"
EndSection

ちゃんとした設定を行うにはxorg.conf(5)を読まないといけないのだが、日本語化されたものがないのが辛い。そのうち読むつもりはあるが、とりあえず意図した通りに動いているのでよしとする。

NFSのアンマウントに失敗し、シャットダウンできない

2008/08/02PC::Linux/BSD

nfsマウントを行うようになってからKubuntuがシャットダウンできなくなるようになってしまいました。
具体的にはシャットダウンシーケンスで以下のようなエラーをコンソールに吐いて止まってしまいます。

Network Manager: <info> Caught termination signal
Network Manager: <debug> [1217677603.026218] nm_print_open_socks(): Open Sockets List:
Network Manager: <debug> [1217677603.026369] nm_print_open_socks(): Open Sockets List:
Network Manager: <info> Deactivating device eth0.
                                                                [OK]
Network Manager: <WARN> nm_hal_deinit(): libhal shutdown failed - Connection is closed
Network Manager: <WARN> nm_dbus_init(): nm_dbus_init() could not get the system bus. Make sure the message bus daemon is running!
Network Manager: nm_dbus_signal_device_status_change: assertion `cb_data->data->dbus_connection' failed
Network Manager: nm_dbus_signal_device_status_change: assertion `cb_data->data->dbus_connection' failed
Network Manager: nm_dbus_signal_device_status_change: assertion `cb_data->data->dbus_connection' failed
 * Sending all process the KILL signal...                       [OK]

こうなってしまうと電源ボタン長押しでしか電源を切ることが出来ず、面倒だし精神衛生上にもよろしくないので対処方法について調べてみた。

環境

  • nfsサーバ: Debian GNU/Linux 4.0r3 (etch)
  • nfsクライアント: Kubuntu 8.04 (Hardy Heron) 日本語ローカライズド

問題の切り分け

nfsマウントを利用しないでシャットダウン

特に問題なくシャットダウンできる

nfsマウントを手動でアンマウントしてからシャットダウン

$ sudo umount /mnt/share/sdb
$ sudo umount /mnt/share
$ sudo umount /mnt/share2

問題なくシャットダウンできる

nfsマウントを解除せずにシャットダウン

上記エラーが発生する

原因と対処法

結果から言うと、nfsのマウントの順番に問題があったようです。

nfsサーバでは以下のようになっています。

マウントポイントデバイスファイル
/share/dev/sda1
/share/sdb/dev/sdb1

これを/etc/exportで/shareのみ公開し、クライアント側から/shareをマウントしても、異なるボリュームである/share/sdbの領域にはアクセスすることが出来ませんでした。このため、/etc/exportに/share及び/share/sdbを公開するように設定し、クライアント側から/shareをマウントした後に/share/sdbをマウントするように設定していました。

このときのクライアントの/etc/fstabは以下の通り(nfsマウント部のみ抜粋)。

# nfs mount
nfs-server:/share      /mnt/share      nfs  rw,hard,intr,rsize=8192,wsize=8192 0 0
nfs-server:/share/sdb  /mnt/share/sdb  nfs  rw,hard,intr,rsize=8192,wsize=8192 0 0

このような構成の場合、/mnt/shareをアンマウントするには/share/sdbが先にアンマウントされていないといけません*1。このため、このような順序で/etc/fstabに設定していると/mnt/shareをアンマウントしようとしたところで失敗し、結果としてアンマウントできないためにシャットダウン自体が失敗していると推測できます。

これを回避するには/share/sdbを/mnt/share/sdbにマウントするのではなく、/mnt/shareの配下以外にマウントするようにするようにします。

やったこと

先に/share/sdbをマウントするためにはローカルにマウントポイントがないといけないので作成する。

$ mkdir /mnt/sdb

/etc/fstabを書き換える

# nfs mount
nfs-server:/share/sdb  /mnt/sdb    nfs  rw,hard,intr,rsize=8192,wsize=8192 0 0
nfs-server:/share      /mnt/share  nfs  rw,hard,intr,rsize=8192,wsize=8192 0 0

これでシャットダウンが正常に行われるようになりました。

*1 : アンマウントしようとしてもDevice is busyと出てしまう

Linux版FirefoxをWindows版と同じ操作性にする

2008/08/01PC::Linux/BSD

Kubuntu版*1のFirefoxではWindows版のFirefoxとは異なった以下のような調整がされているようです。

  1. Backspaceで「戻る」ができない
  2. Ctrl+Eで検索バーにフォーカスを移せない

上記の2つは結構利用する機能であり、不便でしょうがなかったので対処法を調べてみた。

*1 : apt-get firefoxでインストールする場合。Mozilla公式配布のバイナリは不明。

環境

  • Kubuntu 8.04 日本語ローカライズ
  • Firefox 3.0.1 (Ubuntuカスタマイズ版)

対処法

1. Backspaceで「戻る」を利用可能にする

about:configからbrowser.backspace_actionの値を0にする。

ちなみに、browser.backspace_actionの取り得る値は以下の通り。(参考:MozillaZine Knowledge Base)

機能備考
0Backspace: 「戻る」
Shift + Backspace: 「進む」
Windows版のデフォルト
1Backspace: スクロールアップ(PageUp)
Shift + Backspace: スクロールダウン(PageDown)
06/12/07より前のLinux版のデフォルト
2(0, 1以外)Backspaceには機能を割り当てない06/12/07以降のLinux版のデフォルト

2. Ctrl+Eで検索バーにフォーカスが移るようにする

拡張機能を追加することで可能です。

keyconfig
Firefoxのキーバインドを変更する拡張。ただし、この拡張だけでは検索バーへフォーカスを移すキーバインドを変更できません。
functions for keyconfig
上記keyconfigの機能を拡張し、様々な機能に対するキーバインドを変更することが可能になります。

今回利用したバージョンは以下の通り。

これらの拡張を導入すると、[メニュー] - [ツール]に[キーボードショートカットのカスタマイズ]が追加されるのでここから編集することが可能です。検索バーへフォーカスを移すのはf4kc_WebSearchとなりますので、この項目の値をCtrl+Eとします。

ちなみに

keyconfig 20080611はFirefox 3.0までしか対応していないため、Firefox 3.0.1には導入することができません。xpiファイルの拡張子をzipとしてxpiファイルを展開後、install.rdfを以下のように編集し再度zip圧縮し、拡張子をxpiに戻すことで無理矢理対応させることができますが、適用は自己責任でお願いします。不安な方はkeyconfigが正式にFirefox 3.0.1に対応するのを待つ方がいいと思われます。

xpiの中のinstall.rdfの以下の部分

    <targetApplication><rdf:Description>
      <id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</id>
      <minVersion>2.0.0.14</minVersion>
      <maxVersion>3.0</maxVersion>
    </rdf:Description></targetApplication>

    <targetApplication><rdf:Description>
      <id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</id>
      <minVersion>2.0.0.14</minVersion>
      <maxVersion>3.0.*</maxVersion>
    </rdf:Description></targetApplication>

に変える。