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はユーザー登録インターフェース機能を実装します

推薦する

データベース復旧エラーの原因となる MySQL 文字セットの簡単な分析

MySQL の文字セットエンコーディングが正しくないデータをインポートすると、エラーが表示されます。...

ミニプログラムカスタムタブバーコンポーネントのカプセル化

この記事の例では、ミニプログラムのカスタムタブバーコンポーネントをカプセル化するための具体的なコード...

スプレッド演算子のサンプルコードと JavaScript での応用

スプレッド演算子を使用すると、式をある時点で展開できます。スプレッド演算子は、複数のパラメーター (...

MySQL 中断された接続警告ログの分析

序文:場合によっては、MySQL に接続されたセッションが異常終了することが多く、エラー ログに「通...

携帯電話番号の歩数記録を取得するWeChatアプレット

序文最近、小さなプログラムを開発しているときに、このような問題に遭遇しました。ユーザーが認証をクリッ...

Ubuntu 20.04 CUDA & cuDNN のインストール方法 (グラフィカル チュートリアル)

CUDA インストール cuda をダウンロードサポートされているcudaバージョンを表示するには...

MySQL インデックスの長所と短所、およびインデックス作成のガイドライン

1. インデックスを作成する理由(メリット)インデックスを作成するとシステムのパフォーマンスが大幅に...

Linux における「!」の知られざる使用法のまとめ

序文実際、Linux では、控えめな「!」が驚くほど多くの用途で使用されています。この記事では、「!...

CSS 複合セレクタの具体的な使用法

交差点セレクター交差セレクターは、直接接続された 2 つのセレクターで構成されます。最初のセレクター...

MySQL ページング分析の原理と効率改善

MySQL ページング分析の原理と効率改善PERCONA PERFORMANCE CONFERENC...

Vueのウェブページスクリーンショット機能の詳しい説明

最近、プロジェクトで写真をアップロードする要件があるのですが、顧客がアップロードする写真のサイズがま...

Vue ユニットテストに関する予備調査

目次序文なぜユニットテストを導入するのですか?ユニットテストの概要テスト開発パターン1. テスト駆動...

HTMLの基本概念の詳細な説明

HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 •HTML...

Win10 での MySQL 8.0.15 のインストールと設定のグラフィック チュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

WeChatミニプログラムのすべてのページがログインされていることを確認する方法

目次現状解決さらなる解決策やっと現状WeChat ミニプログラムには、ホームページ、個人ページ、いく...