I.はじめに
Redis公式ダウンロードアドレス:https://redis.io/download/#redis-downloads
このチュートリアルは公式ドキュメントを参考に、最新バージョンのRedis6 Redis-6.2.7をクラウドサーバーCentos7にインストールしてデプロイします。ところどころ、作者も踏んで穴を埋めながら埋めていき、チュートリアル内容に指示が出ます。筆者はこれまでにも最新安定版 Redis-7.0.5 の Docker と Centos7 へのインストール チュートリアルについて 2 つのブログを書いているので、必要に応じて参照してください. この記事では主に Redis-6.2 のインストールとデプロイの方法を紹介しています. Centos7 では 7 です。Docker での Redis6 の最新の安定版のインストールとデプロイについて知りたい場合は、チュートリアル [ Docker は最新の Redis6 (redis-6.2.7) をインストールします (公式ドキュメントを参照)
] を参照できます。 Docker での Redis7 の最新の安定版のインストールとデプロイについて知りたい場合は、チュートリアル [ Docker は Redis7 の最新の安定版 (redis-7.0.5) をインストールします (公式ドキュメントを参照) ] を参照してください。Centos7 での Redis7 の最新安定バージョンのインストールとデプロイについて学習したい場合は、チュートリアル [クラウド サーバー Centos7 での Redis7 の最新安定バージョン (redis-7.0.5) のインストールとデプロイのチュートリアルを書く] を 参照できます。(公式ドキュメント参照)] .
本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错,请点点赞,加关注,谢谢!
2. インストールと展開
クラウドサーバーへの接続にはいくつかのツールが必要です. 筆者は Xshell 7 を使用しています. インストールが必要な場合はチュートリアル [ Xshell7 Installation Tutorial ] を参照してください.
Redis 公式インストール ドキュメント チュートリアル: https://redis.io/docs/getting-started/
1. ソース コード パッケージをダウンロードする 方法 1 ( ): ソース不推荐
コード パッケージをアップロードして、 redis-stable.tar.gzをディレクトリ/usr/software/redis/にアップロードします。
(1) パラメータは複数レベルのディレクトリ再帰-p
を表しmkdir
、命令は新しいディレクトリを表します. ソフトウェアと redis ディレクトリが存在する場合は無視され、存在しない場合は作成されます:
mkdir -p /usr/software/redis
(2) /usr/software/redis/ に切り替えます
cd /usr/software/redis/
(3) アップロードコマンド:
rz
rz コマンドが存在しないというメッセージが表示された場合は、対応するコンポーネントをインストールする必要があります。
yum -y install lrzsz
2. ソース コード パッケージをダウンロードする 方法 2 ( 推荐
):ソース コード パッケージを渡すwget
かダウンロードします。curl
(1) パラメータは複数レベルのディレクトリ再帰-p
を表しmkdir
、命令は新しいディレクトリを表します. ソフトウェアと redis ディレクトリが存在する場合は無視され、存在しない場合は作成されます:
mkdir -p /usr/software/redis
(2) /usr/software/redis/ に切り替えます
cd /usr/software/redis/
(3)wget
または ソースコードパッケージをダウンロードする方法はcurl
2 つ。いずれかを選択してください。
wget https://download.redis.io/releases/redis-6.2.7.tar.gz
また
curl -O https://download.redis.io/releases/redis-6.2.7.tar.gz
3./usr/local/
ディレクトリと、展開されたフォルダは ですredis-6.2.7
。
tar -xzf /usr/software/redis/redis-6.2.7.tar.gz -C /usr/local/
4. ソース コードをコンパイルします。ここには 2 つの方法がありますが、著者は方法 1 をお勧めします。もちろん、2 番目の方法でも問題ありませんが、次のチュートリアルのいくつかの手順は少し面倒で、もう 1 手順処理する必要があります。公式のソース コード パッケージ にREADME.md
ドキュメント、ソース コードのコンパイル方法が説明されています。
(1) README.md ファイル内のソースコードのコンパイルに関する注意事項を参照してください。
vim /usr/local/redis-6.2.7/README.md
直接使用 make 命令
Redis ソース コードをコンパイルするとsrc
、ディレクトリに実行可能redis-server
ファイルが生成されます。redis-cli
make 命令后面添加 install
パラメータ を指定して Redis ソース コードをコンパイルすると、と の実行可能ファイルが src ディレクトリではなくディレクトリの下に生成されます。/usr/local/bin/
redis-server
redis-cli
(2)方法 1 ( 推荐
)/usr/local/bin
:ディレクトリに実行ファイルredis-server
とが生成されますredis-cli
。つまり、コンパイルが成功するとインストール (インストール) されます。
1) /usr/local/binディレクトリ内のファイルを確認します。redis-serverおよびredis-cli実行可能ファイルは存在しません。
ll /usr/local/bin
2 make install
) Redis ソース コードがコンパイルされるディレクトリ/usr/local/redis-6.2.7/を使用します。redis -serverおよびredis-cli実行可能ファイルは/usr/local/binディレクトリにコンパイルされます。筆者は、Redis ソースパッケージの src ディレクトリに同じファイルが同時に生成されることを発見しました。
make -C /usr/local/redis-6.2.7/ install
(3)方法 2 ( 也可以,没有方式一优
) : redis-6.2.7 ディレクトリの下のsrc
ディレクトリ本体ファイルredis-cli
とredis-server
実行ファイルのみを生成し、それらをインストールしない。
make -C /usr/local/redis-6.2.7/
5. 【 】 重要
Redisの設定ファイルを格納するディレクトリ( /etc/redis
)とデータディレクトリ( )を作成します/var/redis
。
sudo mkdir /etc/redis
sudo mkdir /var/redis
6. 新しい起動スクリプト ファイルを作成しますredis_6379
。公式のチュートリアルでは、utils ディレクトリから redis_init_script をコピーして、redis_6379 ファイルに名前を変更するというものですが、場合によっては問題が発生することもあるので、これを元に作者が修正し、修正する場所と理由を説明しました。
(1)前のソース コードのコンパイルが最初の方法に従って実行された場合、ここでの指示は無視できます。2 番目の方法に従う場合は、注意して読む必要があります。まず、スクリプトファイルとこの2つのパラメータredis_6379
で注意すべき点を説明しましょう。 公式の初期化スクリプトで redis_init_script, , . デフォルトの EXEC 値は/usr/local/bin/redis-server で、デフォルトの CLIEXEC 値は/usr/local/bin/redis-cliです。次のように:EXEC
CLIEXEC
EXEC 代表要执行二进制文件 redis-server 的绝对路径
CLIEXEC 代表要执行二进制文件 redis-cli 的绝对路径
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
ただし、默认在 /usr/local/bin/ 目录下没有 redis-server 和 redis-cli 这两个可执行文件
redis_6379 スクリプト ファイルを使用して redis-server と redis-cli を実行すると、間違いなくエラーが報告されます。それを解決する方法は?コンパイル済みの redis-server と redis-cli を /usr/local/bin/ ディレクトリにコピーする必要があることも、公式チュートリアルで言及されています。なぜ関係者は /usr/local/bin/ で redis-server と redis-cli を実行するのですか?因为这样配置后,在任何目录都能运行 redis-server 和 redis-cli ,和配置全局路径的效果一样!
cp /usr/local/redis-6.2.7/src/redis-server /usr/local/bin/
cp /usr/local/redis-6.2.7/src/redis-cli /usr/local/bin/
一部のブログ投稿では、redis-server と redis-cli の絶対パスを直接構成しています.この方法は実行可能ですが、不建议这么做
2 つの理由があります: 1. Redis-server と redis-cli は、それらが配置されているディレクトリでのみ実行するように制限されています。フルパスで実行することはできません. もちろん、プロファイル ファイルでグローバル パスをフル パスで実行するように構成することもできます. これは面倒で維持が困難です. 2. Redis のバージョンをアップグレードする場合、スクリプト ファイル redis_6379 内の と の 2 つのパラメーター値をEXEC
変更する必要があります。これは結合度が高く、維持するのが面倒です。CLIEXEC
EXEC=/usr/local/redis-6.2.7/src/redis-server
CLIEXEC=/usr/local/6.2.7/src/redis-cli
(2)正式な方法 ( 不推荐,存在问题
)
1 redis-6.2.7
)ディレクトリutils 目录
配下の初期化スクリプトredis_init_script
を/etc/init.d
ディレクトリにコピーし、同時に修正するredis_6379
。
sudo cp /usr/local/redis-6.2.7/utils/redis_init_script /etc/init.d/redis_6379
2) redis_init_script スクリプト ファイル テンプレートからコピーされた redis_6379 スクリプト ファイルには、どのような隠れた問題がありますか?
只有启动(start)和 停止(stop)
2 つの方法、没有重启(restart)
方法、および再起動 (再起動) をさらに使用します。- 以下の手順で設定します. redis-cli が redis-server に接続できるように
6379.conf 配置文件
パスワード ( ) が設定されている場合, redis-cli と redis-server を起動するには公式コマンドを使用します.コマンドで redis-cli と redis-server を停止して問題ありません。参数 requirepass
sudo /etc/init.d/redis_6379 start
sudo /etc/init.d/redis_6379 stop
- ただし、テスト中に、作成者はエラーが報告されたことを発見しました。エラー ログは、おそらく認証が間違っていたことを意味し、Redis が閉じるのを待っていました。つまり、パスワードが設定されていない場合、次のエラーは報告されません。
(3)作成者が元のスクリプトに変更を加えた ( 推荐
) : redis_init_script のコピーをコピーして公式の方法に従って名前を変更する代わりに、新しい redis_6379 初期化スクリプト ファイルを直接作成します。とパスワードが設定されています。最後に、redis_6379 に実行権限を付与します。
vim /etc/init.d/redis_6379
没有设置
Redis デフォルト ユーザーの場合密码
。restart
スクリプトの内容を追加しました。
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
### BEGIN INIT INFO
# Provides: redis_6379
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFO
REDISPORT=6379
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 -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart)
"$0" stop
sleep 3
"$0" start
;;
*)
echo "Please use start or stop as first argument"
;;
esac
设置
Redis デフォルト ユーザー密码
の場合。restart
スクリプトの内容を追加しました。ファイルの内容の [$CLIEXEC -p $REDISPORT shutdown] を [$CLIEXEC -p $REDISPORT -a 123456 shutdown] に変更してください. パスワードは一例です. 実際にはそれほど参数 -a 代表认证,123456 代表Redis默认用户密码,后面步骤会修改配置文件 6379.conf 对应的 requirepass 参数的值
単純に設定するのは安全ではありません.
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
### BEGIN INIT INFO
# Provides: redis_6379
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFO
REDISPORT=6379
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 -p $REDISPORT -a 123456 shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart)
"$0" stop
sleep 3
"$0" start
;;
*)
echo "Please use start or stop as first argument"
;;
esac
(4) redis_6379 初期化スクリプトに実行権限を割り当てます。
chmod +x /etc/init.d/redis_6379
7. redis-6.2.7 ディレクトリにあるテンプレート設定ファイルredis.conf
を/etc/redis
ディレクトリにコピーし、名前を に変更します6379.conf
。
sudo cp /usr/local/redis-6.2.7/redis.conf /etc/redis/6379.conf
8. Redis のデータおよび作業ディレクトリとして使用される/var/redis
ディレクトリに 1 つ作成します。目录 6379
sudo mkdir /var/redis/6379
9. 方法 1 ( 参数细节说明值得一看,操作麻烦些
) 構成ファイル 6379.conf パラメーターのデフォルト値を変更します。vim を使用して構成ファイルを変更します/etc/redis/6379.conf
。
(1)6379.conf
ファイル。
vim /etc/redis/6379.conf
(2) パラメータ値を変更します。注意
: 6379.conf 構成ファイルには 2053 行あります. 指定されたパラメーターの位置を見つけるのは不便です. 行番号をすばやくジャンプできます. 表示行数とジャンプの設定方法については、チュートリアル「LinuxでのVim編集ファイルの表示行番号(一時的・永続的)」と「Linux vim編集ファイルのジャンプ指定行と列」を参照してください。此处有操作个小技巧
:i
キーて編集モードに入り、内容を変更した後、Esc
キーを押して通常モードに切り替え、入力しngg
てn 行目 ( n代表行号
) にジャンプします。たとえば、66 行目、つまり 66gg にジャンプします。 i キーを押して編集モードに入り、次のセクションを変更します。最後に、:wq
保存して終了するために。
行号 75
、元のコンテンツ [ bind 127.0.0.1 -::1 ]。デフォルトでは、ローカルで redis-server に接続する redis-cli のみをサポートし、サードパーティの視覚化ツールである RESP (古いバージョンは Redis Desktop Manager と呼ばれます) などのリモート接続はサポートしていません。【支持远程连接参数值修改如下】
.
bind * -::*
行号 98
、元のコンテンツ [ポート 6379 ]。公式のデフォルトのポート番号は です6379
。ここで別のポートに変更できますが、変更することはお勧めしません。公式のデフォルト値を使用することをお勧めします。ポートを変更する場合は/etc/init.d/
、変更するポートの下にあるredis_6379
ファイル内のパラメーター " "の値も変更することを忘れないでください。.REDISPORT
【这个参数不用修改,如果修改端口了,需要修改一大堆关联的文件的参数值!】
port 6379
行号 259
、元のコンテンツ [デーモン化なし]。デフォルトno
値は、デーモン プロセス (バックグラウンド) での redis-server の実行を無効にします。【需要修改为 yes】
.
daemonize yes
行号 291
、元のコンテンツ [ pidfile /var/run/redis_6379.pid ]。redis_6379.pid ファイルは、サーバーがデーモン プロセスで実行されている場合にのみ使用され、プログラムはこのファイルにpid
書き込まれ、redis-sever プロセスを停止するために使用できます。[注意
: 上記のポート 6379 を変更する場合は、pid ファイルもredis_修改的端口.pid
スタイル。これは、/etc/init.d/
の下のredis_6379
ファイルで、PIDFILE
パラメーター " " の機能がここのパラメーター構成の機能と同じであり、両方を変更する必要があるためです。一様に設定されるので、勝手にポートを変更しないでください! 】。【这个参数不用修改】
.
pidfile /var/run/redis_6379.pid
行号 299
、元のコンテンツ [ログレベル通知]。ログ レベルには、debug (デバッグ)、verbose (詳細)、notice (アナウンス)、warning (警告) の 4 つがあり、既定値は通知レベルで、運用環境では通知レベルが使用されます。デバッグには debug または verbos レベルを使用します。【这个参数不用修改】
.
loglevel notice
行号 304
、元のコンテンツ [ログファイル "" ]。【这个参数修改为日志文件的路径】
.
logfile /var/log/redis_6379.log
行号 456
、元のコンテンツ [ dir ./ ]。【这个参数修改为要存放的数据目录】
.
dir /var/redis/6379
行号 903
、元のコンテンツ [ # requirepass foobared ]。デフォルト ユーザーのパスワードを設定します。主に redis-cli を使用して redis-server に接続する場合は、パスワードの検証に合格する必要があります。構成ファイルは、デフォルトでこのパラメーターについてコメント化されており、パスワードのない接続を表しています。Redis をクラウド サーバーにインストールするには、Redis ユーザー パスワードを設定する必要があります。ここでの 123456 パスワードは単純すぎるため、お勧めできません。非常に安全ではありません。【此处参数修改为指定的密码,设置的密码不能包含一些特殊字符,如 # & $ 三个,因为初始化脚本 redis_6379 使用这些字符会使Redis服务的stop功能失效,笔者在这里踩了坑。经过验证,包含 @ % * 这三个字符是没有问题的】
.
requirepass 123456
10. 方法 2 ( 参数细节说明请看方法一,操作简单
) 構成ファイル 6379.conf のパラメーターのデフォルト値を変更します。sed を使用して、構成ファイル/etc/redis/6379.conf
の。バックスラッシュ " \
" はエスケープ文字を表します。つまり、一部の特殊文字をエスケープします。
(1) 行号 75
、元のコンテンツ [ bind 127.0.0.1 -::1 ]。
sed -i 's/bind 127.0.0.1 -::1/bind * -::*/' /etc/redis/6379.conf
(2) 行号 259
、元のコンテンツ [デーモン化なし]。
sed -i 's/daemonize no/daemonize yes/' /etc/redis/6379.conf
(3) 行号 304
、元のコンテンツ [ログファイル "" ]。
sed -i 's/logfile \"\"/logfile \/var\/log\/redis_6379.log/' /etc/redis/6379.conf
(4) 行号 456
、元のコンテンツ [ dir ./ ]。
sed -i 's/dir \.\//dir \/var\/redis\/6379/' /etc/redis/6379.conf
(5) 行号 903
、元のコンテンツ【# requirepass foobared】。Redis がクラウド サーバーにデプロイされている場合は、安全ではないため、123456 のような単純なパスワードを設定しないでください。ここで方法 1 の赤いフォントのメモを確認することをお勧めします。
sed -i 's/\# requirepass foobared/requirepass 123456/' /etc/redis/6379.conf
11. redis_6379 初期化スクリプト ファイルを実行するようにスタートアップを設定します. 2 つの方法があります. 公式の方法は、Centos システムでエラーを報告します.
(1)推奨される方法 ( Centos下可行
) : redis_6379 初期化スクリプトを実行する命令を rc.local ファイルに記述します。/etc/rc.d/rc.local
ファイルを に変更してください可执行(x)权限
。デフォルトの /etc/rc.d/rc.local には実行可能 (x) 許可がありません。ソフト リンク /etc/rc.local に実行可能 (x) 許可がある場合でも、役に立ちません。 、そうしないとブートが自動的に行われません。実は/etc/rc.local 只是 /etc/rc.d/rc.local 的软链接
。
- redis_6379 初期化スクリプトを実行する手順は、rc.local ファイルに記述されています。
echo "sudo /etc/init.d/redis_6379 start &" >> /etc/rc.local
/etc/rc.d/rc.local
ファイルを実行可能 (x) パーミッションに変更します。デフォルトは none です。
chmod +x /etc/rc.d/rc.local
(2)公式ドキュメントに記載されている方法 ( Centos下似乎不可行
) :update-rc.d
コマンド、Redis 初期化スクリプト (redis_6379) をデフォルトのラン レベルに追加します。update-rc.d 機能を含む関連コンポーネントをインストールする必要があります. 情報によると、update-rc.d は file-rc, sysv-rc, init-system-helpers に存在します. Ubuntu システム yum を使用してダウンロードしようとすると、利用可能なパッケージがないと表示されます。
sudo update-rc.d redis_6379 defaults
12. redis_6379 初期化スクリプト ファイルを実行します: start (開始)、restart (再起動)、stop (停止)。
(1)スタート(スタート)
sudo /etc/init.d/redis_6379 start
(2)再起動(リスタート)
sudo /etc/init.d/redis_6379 restart
(3)ストップ(ストップ)
sudo /etc/init.d/redis_6379 stop
4. 接続テスト
1. redis-cli を使用してローカル接続をテストします
(1)redis-cli
コマンドredis-server に接続し、ping
テストを使用して、パスワード認証が必要であることを確認します。
redis-cli
(2)auth 123456
パスワードを入力して確認し、OK を返すと確認は成功です。
auth 123456
(3) 継続してping
PONG を返し、検証と redis-server 間の通常の接続を表します。
auth 123456
2. サードパーティの可視化ツールRESP
(旧バージョンRedis Desktop Manager
) を使用してリモート接続テストを行う
(1) クラウド サーバー Centos7 を使用しているため、セキュリティ グループでアクティブ化する必要があります开放 6379 端口
. リーダーは、独自のクラウド サーバーのセキュリティ グループ ルールに従って設定できます. クラウド サーバーのブランドによって設定は異なりますが、原則は次のとおりです.同じ。仮想マシンにインストールした Centos7 を使用する場合は、ファイアウォールをオフにするか、フィルター ポートを設定することができますが、仮想マシンの Centos7 ではファイアウォールをオフにしないことをお勧めします。クラウド サーバー Centos7 のファイアウォールをオフにすることは禁止されています。チュートリアル [ Centos でのファイアウォール (ファイアウォール) 操作 (ポートの許可、ポートの削除、ポート一覧の表示、再起動、停止、起動など) **]を参照できます。
(2) RESP ツールを使用して接続し、IP とパスワードを入力して、接続が正常であることをテストします。
V. まとめ
1. Redisのインストールの詳細と注意事項は、インストールとデプロイで詳細に説明されています, 特にRedisのデフォルトのユーザーパスワードを設定する部分, 一部の特殊文字を含めることはできません. 現在、作成者は特殊な6文字のみを検証しています.
2. の方法kill -9 pid
を使用する强制关闭 redis-server
、再起動すると pid ファイルにエラーが報告されrm -rf
、redis_6379.pid
コマンドを使用して強制的に を削除できます。
rm -rf /var/run/redis_6379.pid