録画サーバを Vine Linux 6 へ更新してみた

2009 年年末ごろに BTO で買ったマシン [id:munepi:20091219:1261243248] は、先日、マザーボードが逝ってしまいました。Vine Linux な人たちに相談しつつ、結局 http://www.intel.com/cd/products/services/emea/eng/motherboards/desktop/D2700DC/overview/487675.htm に交換しました。また、これに合わせて、OS を Vine Linux 5 x86_64 から Vine Linux 6 x86_64 へ更新しました*1

インテル Atom Onboardマザーボード BOXD2700DC 【Mini-ITX】

インテル Atom Onboardマザーボード BOXD2700DC 【Mini-ITX】

現在、こんな感じの構成になりました。

ケース SilverStone SST-SG06 ION SuperSilentシルバーカラー
マザーボード Intel Desktop Board D2700DC
CPU Intel Atom D2700
メモリー 2GB DDR3/1066MHz SO-DIMM x 2 (total 4GB)
ハードディスク Western Digital WD20EADS 2TB, Western Digital WD20EARS 2TB
OS Vine Linux 6 x86_64

ハードディスクのパーティション構成

D2700DC には、SATA0, SATA1 の 2 ポートしかないので、2TB のハードディスクを 2 つ分に使っちゃいました。fdisk -l と df の結果は以下の通り。

WD20EADS
デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *          63    83891429    41945683+  83  Linux
/dev/sda2        83891430   104856254    10482412+  82  Linux スワップ / Solaris
/dev/sda3       104856255  3907024064  1901083905   8e  Linux LVM

WD20EARS
デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1            2048  3907029167  1953513560   83  Linux

WD20EADS に Vine Linux 6 x86_64 をサクッとインストールしたあと、sda3 と sdb1 をつなぎあわせる LVM の設定をしました。

WD20EARS のセクタ長が 4k なので、/dev/sdb1 の開始セクタを 2048 にしています。

$ df -m
ファイルシステム     1M-ブロック    使用 使用可    使用% マウント位置
rootfs                   40320      3103     35169   9% /
/dev/root                40320      3103     35169   9% /
/dev                      1976         1      1976   1% /dev
none                      1976         0      1976   0% /dev/shm
none                      1976         1      1976   1% /tmp
none                      1976         0      1976   0% /var/tmp
/dev/mapper/VolGroupTS-LogVol00
                       3705159   1970941   1546034  57% /export

epgrec を Nginx + FastCGI で動かす

以前は、Apache2 + php5 module で epgrec を動かしていました。

最近は、Nginx で動かせるものは、なんでも Nginx で動かしています。そこで、今回は、epgrec を Nginx + FastCGI で動かすことにしました。

nginx のインストール

Nginx で FastCGI を利用するために、nginx と php5-nginx パッケージをインストールします*2

$ sudo apt-get install nginx php5-nginx

/etc/nginx/sites.d/default を以下のように編集します。

 server {
    listen       80;
    server_name  _;

    charset utf-8;

    root   /export/www;
    index  index.php index.html index.htm;

    location / {
        #root   /usr/share/nginx/html;
        #index  index.html index.htm;
    }

    location /epgrec {
    }

    location ~ \.php(/.*)?$ {
        include php_params;
    }
}

root が /export/www となっています。これは、/dev/mapper/VolGroupTS-LogVol00 を /export にマウントしていて、その中に www を掘っています。

プロセスユーザおよびグループを変更

細かいことなのですが、プロセスユーザとグループを nginx へそれぞれ変更します。

$ diff -ud default-pool.conf{.orig,}
--- default-pool.conf.orig      2012-05-15 07:54:59.642740827 +0900
+++ default-pool.conf   2012-05-16 09:18:10.606152378 +0900
@@ -59,8 +59,8 @@
 ; Unix user/group of processes
 ; Note: The user is mandatory. If the group is not set, the default user's group
 ;       will be used.
-user = nobody
-group = nobody
+user = nginx
+group = nginx

 ; Choose how the process manager will control the number of child processes.
 ; Possible Values:

また、/var/php5/session の所有者を nginx:nginx へ変更しておきます。

今のところ、Vine Linux 6 までは、/var/www や /var/php5/session などの Web サーバ関連ディレクトリの所有者が apache でした。そのため、nginx のみを使いたい場合は、適切に所有者を置き換えるのがよいと思います。

なお、現在の VineSeed では、www-common パッケージが提供されていて、Web サーバ専用ユーザ www-data が提供されます*3。www-data の id:group は、これまでの apache:apache が www-data:www-data となっただけです。実際に、現時点での手元の VineSeed x86_64 で id コマンドで調べてみると、以下のようになっています。

$ id apache
uid=48(apache) gid=490(apache) groups=490(apache)
$ id nginx
uid=493(nginx) gid=476(nginx) groups=476(nginx)
$ id www-data
uid=48(apache) gid=48(www-data) groups=490(apache)

Vine Linux 7 がリリースされたら、Apache や Nginx、lighthttpd などの Web サーバに対して、上記のような Web サーバ関連ディレクトリの所有者を、とくに変更せずに済むでしょう。

MySQL 5 をインストール

MySQL サーバとクライアント、それから php5-mysql パッケージをインストールします。

$ sudo apt-get install MySQL-server MySQL-client php5-mysql
epgrec をインストール

epgrec_20111001.tar.gz を /export/www/epgrec として展開しています。また、/export/www/epgrec は、../epgrec (= /export/epgrec) のシンボリックリンクです。

$ ll /export/
合計 32
drwxr-xr-x  5 root  root    4096  516 20:51 ./
dr-xr-xr-x 26 root  root    4096  525 04:16 ../
drwxrwxr-x 15 nginx epgrec  4096  525 04:27 epgrec/
drwx------  2 root  root   16384  513 21:32 lost+found/
drwxr-xr-x  2 nginx nginx   4096  63 08:37 www/

$ ll /export/www
合計 32
drwxr-xr-x 2 nginx nginx 4096  63 08:37 ./
drwxr-xr-x 5 root  root  4096  516 20:51 ../
lrwxrwxrwx 1 nginx nginx    9  63 08:37 epgrec -> ../epgrec/

オマケで http://w3.quake3.jp/osamu/epgrec_assist/ も入れたら、格段に便利になりますね。

それから、私は epgrec の処理を行う専用ユーザ epgrec を作っています。epgrec 専用ユーザを作っていると、epgrec に関するプロセスを追跡しやすくなるので、オススメします。

また、epgrec で使うデータベースについても、root ではなくて、epgrec 専用ユーザを作っておくとよいでしょう。

$ mysql -u root -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| epgrec             |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.01 sec)

mysql> \q;
Bye
$ mysql -u epgrec -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| epgrec             |
| test               |
+--------------------+
3 rows in set (0.05 sec)
mysql> use epgrec;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------+
| Tables_in_epgrec     |
+----------------------+
| Recorder_categoryTbl |
| Recorder_channelTbl  |
| Recorder_keywordTbl  |
| Recorder_logTbl      |
| Recorder_programTbl  |
| Recorder_reserveTbl  |
+----------------------+
6 rows in set (0.00 sec)

mysql> \q;
Bye

まとめ

  • Vine Linux 6 の Nginx + FastCGI で快適な epgrec ライフを!
  • epgrec の処理は epgrec 専用ユーザを作ると、プロセスの追跡が楽!
  • epgrec に関するデータベースも epgrec 専用ユーザで処理させる!

以上、メモでした (^^

*1:この更新により、うちにある実機で Vine Linux 5 が無くなってしまった(笑

*2:Packages/php5 – VineSeed 参照。

*3:www-common-vl.spec in projects/specs/trunk/w/www-common – VineSeed