[an error occurred while processing this directive]
9.0Rのportsからredis-2.2.4をインストールしてみました

第299日目:9.0Rのportsからredis-2.2.4をインストールしてみました

【追記 2012/01/28 10:00】
ども、ども、▲('A`)/です。
えーと、今日はちょっと早起きして会社の熱帯魚の水槽の水交換を
していました。いつもならポンプ使って一気にガーって交換なのですが、
水槽を良く見てみると・・・小さい子供達が5匹泳いでいました。
水と一緒に吸い出されるといけないので、ポンプでの水交換を中止して
小さいバケツで手動で古い水をくみ出して、新しい水を入れて・・・と
いうのを延々やっていました。
大変だったけど、小さな命がすくすくと育ってくれるならと思って
頑張りましたよ。
熱帯魚の子供が生まれるのは何年かぶりですから、若死にさせないように
気をつけないと・・・・・

FreeBSD本家の方は今年の3月ぐらいに8.3Rを出そうかな、と
動いているみたいです。
http://www.freebsd.org/releng/
まあ、のんびり追っかけ始めますか・・・

それでは、また!▲('A`)/

↓ 本編はこちらです。

(2012/01/26 11:50)
ども、ども、▲('A`)/です。
ご無沙汰しておりました。
いやあ、今月は社内のサーバが何台も壊れたり、ネットワークが調子悪くなったりと
色々ありましたが、現在は無事ですのでご安心を。
日記でご紹介した手乗りdokuo号とかATOM機とかを、急遽サーバとして作り変えて
投入しまして・・・手元にはdokuo号しかありません。
(新しいマシン組みたいなあ・・・ボソッ)

さて、前回FreeBSD 9.0Rがリリースされましたが、9.0Rのportsを調べると
redisの最新バージョンがインストールできそうな事がわかったので、
社内サーバ(dokuo号)を使って試してみました。
redisはバージョンの移り変わりが激しかったので、追っかけるのも大変でしたが
9.0Rがリリースされて直近のバージョンがインストールできるのは大助かりです。

9.0Rのportsではredis-2.2.4が利用できます。
インストール方法はpkg_addでバイナリ版をインストールできます。
まあ、以前(日記第286日目)にも同じ様にインストールしました。
あの時はFreeBSD 8.2Rのportsに収録されていたredisのバージョンは2.0.4でした。
ちょっと古かったのです、ハイ。

perlモジュールはpkg_addでインストールできます。
9.0Rだとp5-Redis-1.9040がインストールされます。
(8.2Rだとp5-Redis-1.2001なんですね。)

PHPのについてはPHPをportsからインストールしているか、ソース(tarボール)から
インストールしているかで、変わってきます。
portsに収録されているPHPモジュールはnicolasff-phpredis-2.1.3-0-g43bc590になります。
こいつはPHP-5.3.8と関連付けされているので、他のバージョンのPHPをインストール
している場合には注意してください。
(話は代わりますが、PHPの5.4.0はRC6が出まして、、、もうね、いつになったら
リリースするのかと、、、ブツブツ)

以下ではソース(tarボール)からPHPをインストールしているのを前提に
説明していきます。
現在入手可能なPHPモジュールはnicolasff-phpredis-2.1.3-163-gac11fabなんです。
(すごいでしょ、バージョンの進み具合が・・・)
以下のページから入手可能です。
https://github.com/nicolasff/phpredis/downloads
(Download as tar.gz と書かれたボタンをクリックすると取ってこれます。)
現在の最新バージョンは nicolasff-phpredis-2.1.3-163-gac11fab です。
で、取ってきたらサーバの任意の場所に設置して解凍します。

例として、/tmpに設置して解凍まで終わった所から説明をしますね。

cd nicolasff-phpredis-ac11fab/
phpize
./configure
make
make test
make install

これだけです。
で、後はPHPで使える様にする為にphp.iniで以下の行を追加します。
(もちろん、設定を反映させるにはApacheを再起動しないといけません。)

extension="redis.so"

では、順番が前後しましたが、redisを動かす為に設定をしてみます。
まずは/etc/rc.confに以下の行を追加します。
redis_enable="YES"

起動スクリプトはportsからインストールした時に /usr/local/etc/rc.d/の中に
redis という名前で作られています。

で、前回(日記第286日目)では/usr/local/etc の中のredis.conf という設定ファイルを
弄って、ログファイルを出さない様にしていました。
じゃあ、ログファイルを出す様にするにはどうするのか?
デフォルトの設定のままで起動しようとすると以下のエラーが表示されて動きません。

# /usr/local/etc/rc.d/redis start
Starting redis.

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 53
>>> 'logfile /var/log/redis/redis.log'
Can't open the log file: Permission denied
/usr/local/etc/rc.d/redis: WARNING: failed to start redis
# 

デフォルトの設定では、ログの出力先は/var/log/redis/redis.log と
なっています。
インストール後には/var/log/redis/というディレクトリは生成されます。

drwxr-xr-x 2 redis redis 512 Jan 25 17:43 redis

所有者は redis、所属グループは redisとなっています。
(実はこれが曲者です・・・最初うまくいかなくて、はまりました。)
出力先の親ディレクトリは/varです。

drwxr-xr-x 28 root wheel 1024 Jan 25 09:38 var

所有者は rootで、所属グループは wheelです。
ディレクトリ/var/logも同じです。

/varディレクトリの中には他のユーザ専用で使用するディレクトリも
ありますので、パーミッションを777にする、なんで事はできません。
(セキュリティ上危ないですからね。)
じゃあ、どうするか?

1つはパーミッション777でも良いディレクトリ(例えば /tmp)に出力
する様に指定する。
ちなみに/tmpのパーミッションとかはどうなっているの?
こうなっています。
drwxrwxrwt 9 root wheel 512 Jan 25 17:42 tmp
所有者は rootで、所属グループは wheel、パーミッションは777です。
つまり「誰でも読み書き実行できる」状態なんですね。

もう1つはグループwheelにredisというユーザを所属メンバーとして
追加するという手があります。
追加する方法は、スーパーユーザモードになって以下のコマンドを
実行します。

pw groupmod -n wheel -m redis

こうする事で書き込めるようになります。

デフォルトの設定ファイル(/usr/local/etc/redis.conf)には
いっぱいいっぱいコメントが書かれていて見づらいので
ちょっと以下の様にコメント部分をばっさりカットして
すっきりさせます。

[/usr/local/etc/redis.confの設定]
daemonize yes
pidfile /var/run/redis/redis.pid
port 6379
bind 127.0.0.1
timeout 0
loglevel verbose
logfile /var/log/redis/redis.log
syslog-enabled no
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /var/db/redis/
slave-serve-stale-data yes
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 10
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 10000
slowlog-max-len 1024
vm-enabled no
vm-swap-file /tmp/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
hash-max-zipmap-entries 512
hash-max-zipmap-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes

まあ、redis.confの中身はほとんどデフォルトのままなんですけどね。
違うのはbind文(ちょっと太字にしています)がコメントを外していることです。
こうする事でローカルホスト(つまりサーバ内部)からのアクセスしか
許可しない形となります。外部からからは接続できません。

最後にちゃんと動いているかどうか確認してみます。
redis-cliを実行してみます。
すると以下の様にプロンプト(redis 127.0.0.1:6379>)が表示されます。
接続元ホストが127.0.0.1、接続ポートが6379と出ています。
そこでサーバ情報を見る為に、INFOコマンドを実行すると、ずらずらと
下の様に出てくる訳です。終わるときにはQUITと入力して抜けます。

# redis-cli
redis 127.0.0.1:6379> INFO

redis_version:2.4.4
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:kqueue
process_id:5144
uptime_in_seconds:144
uptime_in_days:0
lru_clock:633855
used_cpu_sys:0.01
used_cpu_user:0.01
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:1
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:1003800
used_memory_human:980.27K
used_memory_rss:1003800
used_memory_peak:1003776
used_memory_peak_human:980.25K
mem_fragmentation_ratio:1.00
mem_allocator:libc
loading:0
aof_enabled:0
changes_since_last_save:0
bgsave_in_progress:0
last_save_time:1327544173
bgrewriteaof_in_progress:0
total_connections_received:3
total_commands_processed:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:master
redis 127.0.0.1:6379> quit
# 

これが表示されれば、動いていると判断して良いでしょう。

えーと、この日記も次回で300日目を迎えることになりまして、、、
ちょっと昔を振り返っているところです。
次回は記念すべき号なので、無い頭で企画を考えているところです。
お楽しみに。
それでは、また!▲('A`)/

298日目に戻る。   300日目に続く。

目次に戻る
1日目 2日目 3日目 4日目 5日目 6日目 7日目
8日目 9日目 10日目 11日目 12日目 13日目 14日目
15日目 16日目 17日目 18日目 19日目 20日目 21日目
22日目 23日目 24日目 25日目 26日目 27日目 28日目
29日目 30日目 31日目 32日目 33日目 34日目 35日目
36日目 37日目 38日目 39日目 40日目 41日目 42日目
43日目 44日目 45日目 46日目 47日目 48日目 49日目
50日目 51日目 52日目 53日目 54日目 55日目 56日目
57日目 58日目 59日目 60日目 61日目 62日目 63日目
64日目 65日目 66日目 67日目 68日目 69日目 70日目
71日目 72日目 73日目 74日目 75日目 76日目 77日目
78日目 79日目 80日目 81日目 82日目 83日目 84日目
85日目 86日目 87日目 88日目 89日目 90日目 91日目
92日目 93日目 94日目 95日目 96日目 97日目 98日目
99日目 100日目 101日目 102日目 103日目 104日目 105日目
106日目 107日目 108日目 109日目 110日目 111日目 112日目
113日目 114日目 115日目 116日目 117日目 118日目 119日目
120日目 121日目 122日目 123日目 124日目 125日目 126日目
127日目 128日目 129日目 130日目 131日目 132日目 133日目
134日目 135日目 136日目 137日目 138日目 139日目 140日目
141日目 142日目 143日目 144日目 145日目 146日目 147日目
148日目 149日目 150日目 151日目 152日目 153日目 154日目
155日目 156日目 157日目 158日目 159日目 160日目 161日目
162日目 163日目 164日目 165日目 166日目 167日目 168日目
169日目 170日目 171日目 172日目 173日目 174日目 175日目
176日目 177日目 178日目 179日目 180日目 181日目 182日目
183日目 184日目 185日目 186日目 187日目 188日目 189日目
190日目 191日目 192日目 193日目 194日目 195日目 196日目
197日目 198日目 199日目 200日目 201日目 202日目 203日目
204日目 205日目 206日目 207日目 208日目 209日目 210日目
211日目 212日目 213日目 214日目 215日目 216日目 217日目
218日目 219日目 220日目 221日目 222日目 223日目 224日目
225日目 226日目 227日目 228日目 229日目 230日目 231日目
232日目 233日目 234日目 235日目 236日目 237日目 238日目
239日目 240日目 241日目 242日目 243日目 244日目 245日目
246日目 247日目 248日目 249日目 250日目 251日目 252日目
253日目 254日目 255日目 256日目 257日目 258日目 259日目
260日目 261日目 262日目 263日目 264日目 265日目 266日目
267日目 268日目 269日目 270日目 271日目 272日目 273日目
274日目 275日目 276日目 277日目 278日目 279日目 280日目
281日目 282日目 283日目 284日目 285日目 286日目 287日目
288日目 289日目 290日目 291日目 292日目 293日目 294日目
295日目 296日目 297日目 298日目 299日目 300日目 301日目
302日目 303日目 304日目 305日目 306日目 307日目 308日目
309日目 310日目 311日目 312日目 313日目 314日目 315日目
316日目 317日目 318日目 319日目 320日目 321日目 322日目
323日目 324日目 325日目 326日目 327日目 328日目 329日目
330日目 331日目 332日目 333日目 334日目 335日目 336日目
337日目 338日目 339日目 340日目 341日目 342日目 343日目
344日目 345日目 346日目 347日目 348日目 349日目 350日目
351日目 352日目 353日目 354日目 355日目 356日目 357日目
358日目 359日目 360日目 361日目 362日目 363日目 364日目

いま一番お得なページ! 解析
[an error occurred while processing this directive]