Linux インストール Redis 実装プロセスとエラー解決

Linux インストール Redis 実装プロセスとエラー解決

今日、redis をインストールしたところ、今までになかったいくつかのエラーが発生しました。ここで記録しておきます。

1. Redisとエラーをインストールする

まず、Redis をダウンロードします。公式ダウンロード アドレス ページ: https://redis.io/download

ここでは安定バージョン6.0.1を選択します

通常のインストール手順は次のとおりです。

[root@localhost ~]# yum install gcc
[root@localhost ~]# cd /usr/local
[root@localhost local]# wget http://download.redis.io/releases/redis-6.0.1.tar.gz
[root@localhost local]# tar -xvf redis-6.0.1.tar.gz
[root@localhost local]# cd /usr/local/redis-6.0.1/
[root@localhost redis-6.0.1]# PREFIX=/usr/local/redis をインストールします

ここで次のエラーが報告されています

make[1]: *** [server.o] エラー1
make[1]: ディレクトリ "/usr/redis-6.0.1/src" を離れます
make: *** [すべて] エラー 2

server.c:2402:11: エラー: 'struct redisServer' には 'assert_file' という名前のメンバーがありません
server.assert_file = "<ファイルなし>";
^
server.c:2403:11: エラー: 'struct redisServer' には 'assert_line' という名前のメンバーがありません
server.assert_line = 0;
^
server.c:2404:11: エラー: 'struct redisServer' には 'bug_report_start' という名前のメンバーがありません
server.bug_report_start = 0;
^
server.c:2405:11: エラー: 'struct redisServer' には 'watchdog_period' という名前のメンバーがありません
server.watchdog_period = 0;
^
server.c:2411:11: エラー: 'struct redisServer' には 'lua_always_replicate_commands' という名前のメンバーがありません
server.lua_always_replicate_commands = 1;
^
server.c: 関数 'restartServer' 内:
server.c:2464:32: エラー: 'struct redisServer' には 'maxclients' という名前のメンバーがありません
(j = 3; j < (int)server.maxclients + 1024; j++) の場合 {
^
server.c: 関数 'adjustOpenFilesLimit' 内:
server.c:2491:29: エラー: 'struct redisServer' には 'maxclients' という名前のメンバーがありません
rlim_t maxfiles = server.maxclients+CONFIG_MIN_RESERVED_FDS;
^
server.c:2497:15: エラー: 'struct redisServer' には 'maxclients' という名前のメンバーがありません
server.maxclients = 1024 - CONFIG_MIN_RESERVED_FDS;
^
server.c:2529:53: エラー: 'struct redisServer' には 'maxclients' という名前のメンバーがありません
符号なし整数 old_maxclients = server.maxclients;
^
server.c:2530:23: エラー: 'struct redisServer' には 'maxclients' という名前のメンバーがありません
server.maxclients = ベストリミット-CONFIG_MIN_RESERVED_FDS;
^
server.c:2554:59: エラー: 'struct redisServer' には 'maxclients' という名前のメンバーがありません
(unsigned long long) ベストリミット、server.maxclients);
^
server.c: 関数 'checkTcpBacklogSettings' 内:
server.c:2574:48: エラー: 'struct redisServer' には 'tcp_backlog' という名前のメンバーがありません
somaxconn > 0 && somaxconn < server.tcp_backlog の場合 {
^
server.c:2575:171: エラー: 'struct redisServer' には 'tcp_backlog' という名前のメンバーがありません
serverLog(LL_WARNING,"警告: /proc/sys/net /core/somaxconn が %d の低い値に設定されているため、TCP バックログ設定 %d を適用できません。", server.tcp_backlog, somaxconn);

解決策: gccのバージョンをアップグレードする

[root@localhost redis-6.0.1]# gcc -v # gccのバージョンを表示
[root@localhost redis-6.0.1]# yum -y install centos-release-scl # バージョン 9.1 にアップグレード
[root@localhost redis-6.0.1]# yum -y インストール devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@localhost redis-6.0.1]# scl devtoolset-9 bash を有効にする
上記は一時的な使用です。gcc 9.1 を長期間使用したい場合は、次の手順に従ってください。
[root@localhost redis-6.0.1]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

次にコンパイルします:

[root@mmjredis redis-6.0.1]# PREFIX=/usr/local/redis をインストールします

インストールが成功すると、次のメッセージが表示されます: ヒント: 「make test」を実行することをお勧めします 😉

make test を実行してテストしてみましょう。

次のエラーが発生しました:

[root@localhost redis-6.0.1]# テストを実行する
cd src && テストを作成
make[1]: ディレクトリ「/usr/redis-6.0.1/src」に入る
CC メイクファイル.dep
make[1]: ディレクトリ "/usr/redis-6.0.1/src" を離れます
make[1]: ディレクトリ "/usr/redis-6.0.1/src" に入る
Redisテストを実行するにはtcl 8.5以降が必要です
make[1]: *** [テスト] エラー1
make[1]: ディレクトリ "/usr/redis-6.0.1/src" を離れます
make: *** [テスト] エラー 2

解決:

[root@localhost redis-6.0.1]# yum install tcl[root@localhost redis-6.0.1]# テストを実行します

テストは次のように成功しました。

まず redis を実行して試してください:

[root@localhost redis-6.0.1]# /usr/local/redis-6.0.1/src/redis-server /usr/local/redis-6.0.1/redis.conf
32101:C 2020年5月13日 17:01:48.248 # oO0OoO0OoO0Oo Redis が起動しています oO0OoO0OoO0Oo
32101:C 2020 年 5 月 13 日 17:01:48.248 # Redis バージョン = 6.0.1、ビット = 64、コミット = 00000000、変更 = 0、pid = 32101、開始しました
32101:C 2020年5月13日 17:01:48.248 # 設定が読み込まれました
32101:M 2020 年 5 月 13 日 17:01:48.249 * 開いているファイルの最大数を 10032 に増やしました (元々は 1024 に設定されていました)。
        _._
      _.-``__ ''-._
   _.-`` `. `_. ''-._ Redis 6.0.1 (00000000/0) 64 ビット
 .-`` .-```. ```\/ _.,_ ''-._
 ( ' , .-` | `, ) スタンドアロンモードで実行中
 |`-._`-...-` __...-.``-._|'` _.-'| ポート: 6379
 | `-._ `._ / _.-' | PID: 32101
 `-._ `-._ `-./ _.-' _.-'
 |`-._`-._ `-.__.-' _.-'_.-'|
 | `-._`-._ _.-'_.-' | http://redis.io
 `-._ `-._`-.__.-'_.-' _.-'
 |`-._`-._ `-.__.-' _.-'_.-'|
 | `-._`-._ _.-'_.-' |
 `-._ `-._`-.__.-'_.-' _.-'
   `-._ `-.__.-' _.-'
     「-._ _.-」
       「-.__.-」 

2. バックグラウンド起動

バックグラウンド起動の簡単な変更

[root@localhost redis-6.0.1]# vim redis.conf

daemonize no を daemonize yes に変更します

もう一度実行する

[root@localhost redis-6.0.1]# /usr/redis-6.0.1/src/redis-server /usr/redis-6.0.1/redis.conf
30385:C 2020年5月13日 16:57:58.918 # oO0OoO0OoO0Oo Redis が起動しています oO0OoO0OoO0Oo
30385:C 2020 年 5 月 13 日 16:57:58.918 # Redis バージョン = 6.0.1、ビット = 64、コミット = 00000000、変更 = 0、pid = 30385、開始しました
30385:C 2020年5月13日 16:57:58.918 # 構成が読み込まれました

バックグラウンド操作は成功しました。確認してプログラムを終了しましょう

[root@localhost redis-6.0.1]# ps -aux|grep redis| grep -v grep
ルート 29836 0.0 0.0 162416 7912 ? SSL 16:56 0:00 /usr/redis-6.0.1/src/redis-server 127.0.0.1:6379
[root@localhost redis-6.0.1]# キル -9 29836

ここで使用するのは、バックグラウンドsystemctlでredisを起動することです

まず、サービスにredisを追加します

vim /lib/systemd/system/redis.service

書く

[ユニット]
説明=redis
後=ネットワーク.ターゲット

[サービス]
タイプ=フォーク
PIDファイル=/var/run/redis_6379.pid
ExecStart=/usr/local/redis-6.0.1/src/redis-server /usr/local/redis-6.0.1/etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
プライベートTmp=true

[インストール]
WantedBy=マルチユーザー.ターゲット

パスの問題に注意してください。PIDFileのパスはredis-6.0.1/src/redis-serverのPIDFileに対応しています。

wq 保存して終了

次に以下を実行します

[root@localhost redis-6.0.1]# systemctl enable redis.service # ブートに追加

[root@localhost redis-6.0.1]# systemctl is-enabled redis.service # 起動が成功したかどうかを確認します
有効

[root@localhost redis-6.0.1]# systemctl start redis #redisサービスを開始

[root@localhost redis-6.0.1]# systemctl status redis //redisの実行ステータスを表示します

起動時に問題がある場合は、systemctl status redisでログを表示して修正することができます。

図に示すように、正常に起動しました

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux Redisのインストールとインストールの問題について
  • Linuxでのredis5.0.5のインストール手順と設定方法
  • Redis の概要と Linux への Redis のインストールに関する詳細なチュートリアル
  • Linux で Redis をインストールする詳細な手順

<<:  MySQL のデータの偶発的な削除の解決策と kill ステートメントの原則

>>:  JSはユーザー登録インターフェース機能を実装します

推薦する

JS 日付コントロール My97DatePicker の基本的な使い方

My97DatePicker は非常に柔軟で使いやすい日付コントロールです。使い方はとても簡単です。...

IMG での UserMap の使用例

usemap は <img> タグの属性であり、使用するイメージ マップの名前を指定する...

vscode で Prettier Code プラグインを使用する詳細なチュートリアル

なぜprettierを使うのですか?大企業では、フロントエンド開発コードに独自のコード標準がある場合...

dockerログマウントの問題を解決する

重要なのは、ローカルサーバーに書き込み権限がないことですキーはここにあります(アクセス拒否)。私は肯...

Vue の新しいおもちゃ VueUse の具体的な使い方

目次序文VueUseとは使いやすいおなじみの手ぶれ補正やスロットル機能もありますグローバル状態を共有...

IE6 の歪み問題

質問: <form...> の下の <input type="hidde...

MySQLの再帰問題

MySQL自体は再帰構文をサポートしていませんが、自己接続を通じていくつかの単純な再帰を実現できます...

CentOS7.4 起動時の緊急モードへようこそメッセージに対する解決策

今日は仮想マシンを使って実験をしました。システムをインストールし、いくつかのオプションを最適化した後...

MySql の知識ポイント: トランザクション、インデックス、ロックの原則、使用状況の分析

この記事では、トランザクション、インデックス、ロックなどの MySQL の知識ポイントの原理と使用法...

HTML フォームタグチュートリアル (5): テキストフィールドタグ

<br />このタグは、さらにテキストを入力できる複数行のテキスト フィールドを作成する...

HTML フォーム タグの使用方法を学ぶチュートリアル

HTML のフォームを使用して、ユーザーからさまざまな種類の入力情報を収集できます。フォームは、実際...

ネイティブ js はフォームの定期的な検証を実装します (検証後にのみ送信)

以下の機能が実装されています。 1. ユーザー名: onfouc は msg ルールを表示します。o...

nginx の http リクエスト処理の各段階の詳細な分析

nginx の HTTP モジュールを作成する場合、リクエスト開始時のアクセス許可の有無、コンテンツ...

MySQL がタイムスタンプを使用するときにタイムゾーンの問題を無視できるのはなぜですか?

私はいつも、なぜMySQLデータベースのtimestampタイムゾーンの問題を無視できるのか疑問に思...