一般的にファイルアップローダといえばPerlやPHPで言語で作られたものが多いですが、これらはレスポンスが悪かったり、メモリサイズを大幅に消費しがちです。その点、mod_uploader
はApacheのモジュールとして提供されるため非常に高速に動作します。この記事では導入検証の結果を記載します。
Contents
<li>
<a href="#i-3"><span class="toc_number toc_depth_1">3</span> コンフィグレーション</a><ul>
<li>
<a href="#1-2"><span class="toc_number toc_depth_2">3.1</span> 1. フォルダ配置</a>
</li>
<li>
<a href="#2-2"><span class="toc_number toc_depth_2">3.2</span> 2. パーミッション設定</a>
</li>
<li>
<a href="#3_virtualhost"><span class="toc_number toc_depth_2">3.3</span> 3. virtualhost修正</a>
</li>
<li>
<a href="#4"><span class="toc_number toc_depth_2">3.4</span> 4. そして最後に再起動(又はリロード)</a>
</li>
</ul>
</li>
<li>
<a href="#mod_uploader"><span class="toc_number toc_depth_1">4</span> 参考:mod_uploader導入時に発生したエラー</a>
</li>
mod_uploader 3.1.1 導入の経緯
一般的にファイルアップローダといえばPerlやPHPで言語で作られたものが多いですが、これらはレスポンスが悪かったり、メモリサイズを大幅に消費しがちです。その点、mod_uploaderはApacheのモジュールとして提供されるため非常に高速に動作します。
そもそもこのご時世、dropboxやその他オンラインストレージを利用できれば必要ないのでしょうが、
- ITリテラシの低いユーザがいると案内しづらい(なかなか使ってくれない)
- そもそもアカウントの取得や、クライアントのインストールを強要するだけで億劫になりがち
- 大量の写真は割とディスク容量を圧迫するので、数人で共有するとストレージの無料サービス範囲を超えることもある
という事情で上手くいかないことも多々。
『誰もが簡単に使えるブラウザで、普段の操作でデータ共有する術はないか』と考えてみると、レガシーながら本手法はまだまだ有用だと思います。
以下、身内で大量の旅行写真とかを共有する目的で久しぶりに最新版を新規導入したので手順をメモ。
インストール作業
0. インストール環境
- Ubuntu 12.04.1 LTS
- Apache 2.2.x
- PHP 5.3.x
1. プログラムの入手
debパッケージがあるので簡単に終わるかと思いきやlibmagick等のバージョンが合わない?為、うまくいかない。ソースコンパイルでもさほど手間ではないのでこの方法でいくことに。
$ wget --trust-server-names 'http://sourceforge.jp/frs/redir.php?m=iij&f=%2Fmod-uploader%2F37519%2Fmod_uploader-3.1.1.tgz'
2. 必須パッケージのインストール
必要パッケージはマニュアルに記載があるので割愛。今回不足していたものは以下。
$ sudo aptitude install imagemagick
$ sudo aptitude install libmagick++-dev
このあと apxs が必要になる為、apxs2 が実行可能か確認する。実行できない場合は apt install を行う。apxs の導入には以下いずれかを用いる。
- Preforkの場合:apache2-prefork-dev
- Workerの場合:apache2-threaded-dev
Apache の動作モードにあわせて選択する。
現在の動作がわからない場合、Apacheのプロセスを調べるには apache2 -V
を実行し、以下の部分を確認する。
Server MPM: Prefork
又は
Server MPM: Worker
3. コンパイル
$ cd mod_uploader-3.1.1
$ ./configure --enable-empty-comment --enable-empty-password --enable-remove-unpopular --enable-thumbnail
$ make
引数の意味:
–enable-empty-comment:
空のコメントを受け付ける場合に指定してください.
–enable-empty-password:
空のパスワードによる削除を受け付ける場合に指定してください.
–enable-remove-unpopular:
容量が満杯になった場合の挙動を変更します.指定すると,アップロードされた日時が古いものではなく,最近ダウンロー ドされていないものから順番に削除されるようになります.
–enable-thumbnail:
ファイルのサムネイル画像を生成したい場合に指定してください.
4. mod_uploader本体のインストール
$ sudo make -f GNUmakefile.apache install
上記コマンドにて
- mods-available へのコンフィグ作成
- mods-enables へのsymlink作成
まで実行してくれる。従って a2enmod は不要。
コンフィグレーション
1. フォルダ配置
mod_uploader-3.1.1 内にサイト用のファイル(img,css,js,tmpl)があるのでコピーする。swfの用途が現状わからないが、なくても違和感なく動いている。
ファイル配置はもはや好みの問題であるが、過剰に公開しないことをポリシとして以下のように配置した。サイト全体を認証しており、かつ upload グループ毎に異なるID/PWで認証することを想定し、up_* のみ認証を外すことで複数アップローダを効率的に運用できる想定。
virtualhost_root/
├ mod_uploader_tmpl
└ public_html
├ mod_uploader_root
│ ├ img, css, js, swf?
│ │
│ ├ upload_group_A
│ │ └ data, file, temp, thumb
│ └ upload_group_B
│ └ data, file, temp, thumb
│
├ up_img@ → mod_uploader_root/img
├ up_css@ → mod_uploader_root/css
└ up_js@ → mod_uploader_root/js
2. パーミッション設定
$ chown -R www-data:www-data mod_uploader_root
3. virtualhost修正
マニュアルを参照で割愛。
4. そして最後に再起動(又はリロード)
$ /etc/init.d/apache2 restart
参考:mod_uploader導入時に発生したエラー
このエラーが出たので deb パッケージからの導入は諦めた
apache2: Syntax error on line 210 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/uploader.load: Cannot load /usr/lib/apache2/modules/mod_uploader.so into server: libMagick++.so.9: cannot open shared object file: No such file or directory
Action 'configtest' failed.
The Apache error log may have more information.