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

推薦する

Nginxにモジュールを動的に追加する方法

前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...

垂直方向の中央揃えをエレガントに実現する方法を教えます(推奨)

序文CSS で水平方向と垂直方向に中央揃えする方法はたくさんあります。この記事で紹介する方法は非常に...

vue3 のコンポーネントの互換性のない変更の詳細な説明

目次機能コンポーネント非同期コンポーネントの書き方とdefineAsyncComponentメソッド...

CSS で平均レイアウトを実現するために負のマージンを使用する例

均等に分散されたレイアウトの場合、通常はネガティブ マージン方式を使用します。次の図は平均的なレイア...

MySQLデータベースのトランザクション分離レベルの詳細な説明

データベーストランザクション分離レベルデータベース トランザクションには、低から高まで 4 つの分離...

MySQLのエンコードの不一致によって発生する可能性のある問題

ストアドプロシージャとコーディングMySQL ストアド プロシージャでは、テーブルとデータのエンコー...

JS ES6における構造化分解についてお話しましょう

概要es6 では、配列またはオブジェクトから指定された要素を取得する新しい方法が追加されました。これ...

MySQLはSQL文を使用してテーブル名を変更します

MySQL では、SQL ステートメント rename table を使用してテーブル名を変更できま...

IDEA 2020.3.1 で Tomcat をデプロイし、最初の Web プロジェクトを作成するプロセスの詳細な説明

目次Tomcat の紹介Tomcat の展開Web プロジェクトの作成tomcatの設定プロジェクト...

Node.js で Bash スクリプトを書くための究極のソリューション

目次序文zxライブラリ$`コマンド` CD()フェッチ()質問()寝る()スローしない()チョークフ...

MySQL テーブル結合クエリでグループ化と重複排除を実装する例

目次ビジネスロジックデータテーブル構造クエリロジックSQL スクリプトスクリプトの説明ビジネスロジッ...

HTML チュートリアル: よく使われる HTML タグのコレクション (4)

導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...

Nginx 環境での WordPress マルチサイト構成の詳細な説明

WordPress のマルチサイト機能を使用すると、1 つの WordPress プログラムをインス...

JSインターセプト文字列の3つの方法の詳細な説明

JS には、文字列をインターセプトするための 3 つのメソッド、 slice() 、 substri...

Dockerネットワーク作成に--subnetを追加した後の問題を解決する

Docker ネットワークの作成に –subnet を追加した後、docker network ls...