各設定値は、サンプルです。
また、手順の一部を省略している場合があります。
サンプルは、デフォルト値に近い設定になっていると思いますが、
手元の環境は、かなりカスタマイズしてありますので、
ファイル名等が標準と異なる場合があります。
適宜読み替えて下さい。
このサンプルでは、
nginx master: root:rootで動作させる事を想定しています。
nginx worker: nginx:nginx
redis-server: root:redis
ソケットファイル: /tmp/redis/redis.sock
redis-serverは、デフォルトでは、root:rootで動作しますので、
(特にuidも変更する場合など) 設定内容に応じて、
関連するディレクトリのアクセス権も変更する必要があります。
---
1.redisの設定ファイル(conf)の変更
1.1.ソケットを生成する場所の設定
※/tmp以外の場所に作ることをお勧めします。
unixsocket /tmp/redis/redis.sock
/tmpの直下に置くとアクセス権を制限しにくいので、
ソケットを生成する場所は、redisディレクトリの中とします。
※/tmpの中にディレクトリを作った場合は、
再起動後に消されていないか確認しましょう。
(大抵は消える設定になっていると思いますので・・)
※/tmp以外の場所に作る場合は、ソケットの消え残りに
注意しましょう。redisが異常終了した場合は、
ソケットファイルが残される場合があります。
1.2.ソケットのアクセス権の設定
unixsocketperm 060
デフォルトでは、700などになっていると思います。
nginxとredisが、redisグループのアクセス権で通信するので、
これで十分なはずです。
2.redis用のグループの作成、nginxグループにアクセス権の設定
※他で使わないグループを設定して下さい。また、ここで設定するグループは、(以降の設定内容に応じて)
dumpファイル(*.rdb、*.aof)や、 logファイルなどの所有権にも
影響しますので、注意して下さい。
2.1.redisグループを追加
groupadd redis
2.2.アクセス権の追加
/etc/group を編集します。
nginxグループに、redisグループへのアクセス権を与えます。
redis: (略) :nginx
設定を確認します。
groups nginx表示例:
nginx : nginx redis
※注意: 表示が、"nginx : nginx" となっていた場合は、誤って、
redisグループに、nginxグループへのアクセス権を与えていないか、
/etc/groupを見直しましょう。
3.ディレクトリ、ファイルのアクセス権などの設定
3.1.redis-serverを、redisグループで動作させるための設定
chgrp redis redis-server
chmod g+sx redis-server
設定結果の例:
dr-x------ root root redis/bin
-r-x--s--- root redis redis/bin/redis-server
※安全を考慮して、親ディレクトリのアクセス権も絞ってあります。
-r-s--s--- redis redis redis/bin/redis-server
とした場合も、親ディレクトリは、500 root:rootのままで動作可能です。
(呼び出し側の起動スクリプトは、root:rootで動作していると思いますので。)
ただし、この場合は、redisユーザで動作することになるので、
関連するディレクトリやファイル(設定ファイル、AOF、rdb、ログ)などの
アクセス権に注意して下さい。
(設定を忘れると、13: Permission denied などの原因になります。)
3.2.ソケット用フォルダのアクセス権の変更
chgrp redis /tmp/redis
chmod g+rx /tmp/redis
設定結果の例:
drwxr-x--- root redis /tmp/redis
4.設定結果の確認
・redis、nginxを起動してみます。・ログを確認します。
・実行中にソケット、pidファイルが生成されることを確認します。
・終了後にソケット、pidファイルが消去されることを確認します。
・dumpファイル(*.rdb、*.aof)が、設定に応じて生成されることを確認します。
※各ファイルのユーザ、グループ、アクセス権も確認した方がよいと思います。
(必要に応じて、親ディレクトリのアクセス権も制限した方がよいと思いますので。)
ソケットファイルのアクセス権の例:
root redis s---rw---- redis.sock=
0 件のコメント:
コメントを投稿