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

推薦する

pagodaを使用してionCube拡張機能をインストールする方法

1. まずパゴダを設置するインストール要件: Python バージョン: 2.6/2.7 (Pago...

情報製品の読書リストのインタラクティブなデザインに関する考えと経験の共有

リストは、テーブルをコンテナーとして使用するテキストまたはグラフの形式として定義されます。商品の種類...

Linux での MySQL 5.7.19 (tar.gz) インストール グラフィック チュートリアル

Linux で MySQL-5.7.19 バージョンをインストールするための最初のチュートリアル。す...

HTTPプロトコルにおけるステータスコードの意味

暫定的な応答を示し、要求者に操作の続行を要求するステータス コード。コードの説明100 (続行) リ...

HTML に埋め込まれた MP4 形式のビデオが再生できないのはなぜですか?

次のコードは、私の test.html にあります。ビデオは、c:\test.html などの絶対パ...

HTML+CSS で div タグの右上隅に削除アイコンを追加するサンプルコード

1. 要件の説明Divタグの右上隅に削除アイコンを表示します2. 実装html、CSS 3. 参照コ...

バッテリー残量が少なくなったときに Linux を自動シャットダウンする方法

序文最近、私の住居の電力事情が不安定で、突然の停電が頻繁に起こります。ノートパソコンを持っているので...

ネイティブWeChatアプレット開発におけるreduxの使用の詳細な説明

前提複雑なシナリオでは、複数の異なるページ間で大量のデータを使用したり変更したりする必要があります。...

MySQL クエリの最適化: クエリが遅い原因と解決策

開発に携わっている友人、特に MySQL に関係のある友人は、非常に遅い MySQL クエリに遭遇す...

Dockerfileを使用してDockerイメージを構築する

目次Dockerfileを使用してDockerイメージを構築する1. Dockerfile とは何で...

HTML 基本コントロール入門_PowerNode Java アカデミー

<input> タグ<input> タグはユーザー情報を収集するために使用さ...

マージンの重複問題を解決する方法

1. まず、2つ以上の隣接する通常フローブロック要素の垂直マージンの崩壊を引き起こす原因を知る必要が...

JavaScript でオブジェクトのプロパティを削除する方法

1. 削除delete は、オブジェクトのプロパティを残さずに削除する唯一の方法ですが、その「代替」...

Ubuntu 18.04 に Anaconda3 をインストールするための詳細なチュートリアル

Anaconda は、conda、Python、およびそれらの依存関係など、180 を超える科学パッ...

ブートストラップテーブルの使い方のまとめ

この記事では、bootstrapテーブルの使い方を参考までに紹介します。具体的な内容は次のとおりです...