redis自己起動構成の詳細
5929 ワード
一、概説
1.1原理
redisの自己起動の動作原理はどのようなものですか?Linuxシステムが起動すると、スクリプトと呼ばれる特定のディレクトリの下にファイルをスキャンして実行するプログラムがあります.だから、あなたの仕事をスクリプトに書いて、指定したパスの下に置くことができます(etc/init.d).だから、あなたがしなければならないのは、redisインスタンスを起動する作業をスクリプトに作成し、Linuxシステムに実行させることです.
1.2簡単な説明
自己起動を構成するには、3つのステップが必要です.
1.インスタンスに対応するプロファイルを編集します.同じマシンで複数のredisインスタンスを起動できるので、複数のプロファイルに対応します.また、各インスタンスには独自のワークパスがあり、共通のワークパスを使用する場合、コンフィギュレーション・ファイルの多くのアイテムは競合を回避するために異なるように構成されるため、推奨方法では異なるワークパスを設定できます.
2.自己起動スクリプトを編集し、etc/initにスクリプトをコピーします.dディレクトリの下.Linuxシステムが起動すると、このパスの下のファイルを自動的にスキャンして実行するプログラムがあるからです.
3.コマンドの有効化、テストを実行します.
二、redisプロファイルの編集
2.1プロファイル名
redisディレクトリの下にredisがあります.confファイル、コピー、6379などのポート名で命名することをお勧めします.conf、ルールは、まず、第3章のスクリプトの中の構成と一致する必要があります.次に、異なるインスタンスが異なる構成ファイルに対応し、混同してはいけません.それからviでファイルを編集します.
2.2プロファイルの編集
以下注意すべき項目を説明する
redis , redis , :
daemonize yes
,redis sever pid “/var/run/redis.pid” , , , redis , ,Linux , :
pidfile /var/run/redis_6379.pid
Redis TCP 6379, 0, TCP 。 , 。
port 6379
Redis server , IP , , , :
bind 192.168.1.100 10.0.0.1
bind 127.0.0.1
, dump.rdb, , 。 redis , , 。
dbfilename dump.rdb
以上(第4节)只是设置的文件名,而非路径,通过命令dir可以指定路径,文件将按指定路径与指定的文件名存储。同时AOF(Append Only File)也是参照此路径的。多实例可以共用此路径,如果共用工作路径,那其他配置需要配置成不同,以防冲突,所以建议设置成不同工作路径,这样就避免了这些问题。
dir ./
, , , , /dev/null。 , 。
logfile ""
三、処理スクリプト
3.1スクリプトのコピー
redis/utilsディレクトリの下にredis_がありますinit_scriptファイルをetc/initにコピーします.dパスの下で、ファイル名をredisインスタンスポートに関連する6379ポートのこのスクリプト名、etc/initに変更することを提案する.dパスの下で6379 redisdに変更します.
3.2スクリプトの編集
2.1節を/etc/initにコピーする.dパスの下のスクリプトを編集します.以下のようにします.
#!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the/proc filesystem. # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database REDISIP=localhost REDISPORT=31001 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/redis/${REDISPORT}.conf"case "$1"in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -h $REDISIP -p $REDISPORT shutdown while [ -x/proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
以下、以上のスクリプトについて説明します.
REDISPORT=6379
これは定義された変数にすぎません.今インストールして、redisインスタンスがどのポートを使用するかを提案します.ここではどのポートを構成するかを提案します.サーバーのマルチインスタンスであれば、これは異なるように構成する必要があります.
EXEC=/usr/local/bin/redis-server
あなたのredis-serverのパスは、redisソースコードのコンパイル後にmake installを実行して成功した場合、redis-serverは/usr/local/bin/パスの下にredis-serverのリンクがあります.または、後で構成するにはredis-serverがいる本当のパスに直接構成する必要があります.
CLIEXEC=/usr/local/bin/redis-cli
redis-cliが存在するパスは、redis-serverと同様に、redisソースコードのコンパイル後にmake installを実行して成功した場合、redis-cliは/usr/local/bin/パスの下にredis-cliのリンクがあります.または、後で構成するには、redis-cliが存在する実際のパスに直接構成する必要があります.これにより、linuxの下でredis-cliコマンドを直接叩くことができ、パスを指定することなく、通常のコマンドとして実行することができます.
PIDFILE=/var/run/redis_${REDISPORT}.pid
これはpidファイルパスで、redisインスタンスが値守モード(daemonize)に設定されている場合、起動するとpidファイルが生成され、どこで生成され、ファイル名が何なのか、redisのconfigファイルで構成する必要があります.したがって、1つのサーバに複数のredisインスタンスがある場合、このファイル名は異なる必要があります.そうしないと、面倒になります.したがって、このプロファイルはredisのプロファイル内のプロファイルと一致します.redisプロファイル内の関連については、次の章を参照してください.
CONF="/usr/local/src/redis/${REDISPORT}.conf"
Redisインスタンスのプロファイルのパスを指定します.サーバの異なるredisインスタンスとは異なるプロファイルが必要です.これは、同じようにすることはできません.そうしないと、起動に成功します.
スクリプトの後続部分は、管理せずに変更する必要はありません.
アイテムを追加:
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
スクリプトの最初の4行目、すなわち「#as it does use of the/proc filesystem.」の1行に2つのコードを挿入します.そうしないと、後でコマンドを実行するときに、権限の問題が表示されます.
四、起動有効
#POSTサーバに設定(redisdは/etc/init.d/ディレクトリの下でさっき自分で作成したスクリプト名、以下同じ)
chkconfig redisd on
#サービスが有効かどうかをテストするためのサービスを開く
service redisd start
#サービスのクローズ
service redisd stop
#システムを再起動し、有効かどうかをテストする
reboot
システムが再起動したら、redisインスタンスが予想通りに起動しているかどうかを確認します.
redis-cli–hあなたが設定したIP–pあなたが設定したポート
2.1プロファイル名
redisディレクトリの下にredisがあります.confファイル、コピー、6379などのポート名で命名することをお勧めします.conf、ルールは、まず、第3章のスクリプトの中の構成と一致する必要があります.次に、異なるインスタンスが異なる構成ファイルに対応し、混同してはいけません.それからviでファイルを編集します.
2.2プロファイルの編集
以下注意すべき項目を説明する
redis , redis , :
daemonize yes
,redis sever pid “/var/run/redis.pid” , , , redis , ,Linux , :
pidfile /var/run/redis_6379.pid
Redis TCP 6379, 0, TCP 。 , 。
port 6379
Redis server , IP , , , :
bind 192.168.1.100 10.0.0.1
bind 127.0.0.1
, dump.rdb, , 。 redis , , 。
dbfilename dump.rdb
以上(第4节)只是设置的文件名,而非路径,通过命令dir可以指定路径,文件将按指定路径与指定的文件名存储。同时AOF(Append Only File)也是参照此路径的。多实例可以共用此路径,如果共用工作路径,那其他配置需要配置成不同,以防冲突,所以建议设置成不同工作路径,这样就避免了这些问题。
dir ./
, , , , /dev/null。 , 。
logfile ""
三、処理スクリプト
3.1スクリプトのコピー
redis/utilsディレクトリの下にredis_がありますinit_scriptファイルをetc/initにコピーします.dパスの下で、ファイル名をredisインスタンスポートに関連する6379ポートのこのスクリプト名、etc/initに変更することを提案する.dパスの下で6379 redisdに変更します.3.2スクリプトの編集
2.1節を/etc/initにコピーする.dパスの下のスクリプトを編集します.以下のようにします.
#!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the/proc filesystem. # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database REDISIP=localhost REDISPORT=31001 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/redis/${REDISPORT}.conf"case "$1"in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -h $REDISIP -p $REDISPORT shutdown while [ -x/proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
以下、以上のスクリプトについて説明します.
REDISPORT=6379
これは定義された変数にすぎません.今インストールして、redisインスタンスがどのポートを使用するかを提案します.ここではどのポートを構成するかを提案します.サーバーのマルチインスタンスであれば、これは異なるように構成する必要があります.
EXEC=/usr/local/bin/redis-server
あなたのredis-serverのパスは、redisソースコードのコンパイル後にmake installを実行して成功した場合、redis-serverは/usr/local/bin/パスの下にredis-serverのリンクがあります.または、後で構成するにはredis-serverがいる本当のパスに直接構成する必要があります.
CLIEXEC=/usr/local/bin/redis-cli
redis-cliが存在するパスは、redis-serverと同様に、redisソースコードのコンパイル後にmake installを実行して成功した場合、redis-cliは/usr/local/bin/パスの下にredis-cliのリンクがあります.または、後で構成するには、redis-cliが存在する実際のパスに直接構成する必要があります.これにより、linuxの下でredis-cliコマンドを直接叩くことができ、パスを指定することなく、通常のコマンドとして実行することができます.
PIDFILE=/var/run/redis_${REDISPORT}.pid
これはpidファイルパスで、redisインスタンスが値守モード(daemonize)に設定されている場合、起動するとpidファイルが生成され、どこで生成され、ファイル名が何なのか、redisのconfigファイルで構成する必要があります.したがって、1つのサーバに複数のredisインスタンスがある場合、このファイル名は異なる必要があります.そうしないと、面倒になります.したがって、このプロファイルはredisのプロファイル内のプロファイルと一致します.redisプロファイル内の関連については、次の章を参照してください.
CONF="/usr/local/src/redis/${REDISPORT}.conf"
Redisインスタンスのプロファイルのパスを指定します.サーバの異なるredisインスタンスとは異なるプロファイルが必要です.これは、同じようにすることはできません.そうしないと、起動に成功します.
スクリプトの後続部分は、管理せずに変更する必要はありません.
アイテムを追加:
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
スクリプトの最初の4行目、すなわち「#as it does use of the/proc filesystem.」の1行に2つのコードを挿入します.そうしないと、後でコマンドを実行するときに、権限の問題が表示されます.
四、起動有効
#POSTサーバに設定(redisdは/etc/init.d/ディレクトリの下でさっき自分で作成したスクリプト名、以下同じ)
chkconfig redisd on
#サービスが有効かどうかをテストするためのサービスを開く
service redisd start
#サービスのクローズ
service redisd stop
#システムを再起動し、有効かどうかをテストする
reboot
システムが再起動したら、redisインスタンスが予想通りに起動しているかどうかを確認します.
redis-cli–hあなたが設定したIP–pあなたが設定したポート