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

推薦する

Linux 上のカラフルな猫

Linux システムを使用したことがある友人なら、 catコマンドを使用したことがあるはずです。もち...

VMware での Ubuntu Docker のインストール (コンテナ構築)

1. マインドマップ 2. コンテナの構築方法2.1 実験環境の準備(1)環境選択管理ツール: D...

はじめに: HTML の基本的なタグと属性の簡単な紹介

HTML はタグと属性で構成されており、これらを組み合わせてブラウザにページの表示方法を指示します。...

Nginx で https をアップグレードする方法

購入証明書Alibaba CloudのCloud Shield証明書サービスから購入できます。証明書...

JavaScript イベント委任 (プロキシ) の使用例の詳細

目次導入例: イベントの委任記述方法1: イベント委譲書き方2: 各子要素がイベントをバインドする例...

フォーム内の無効なフォームフィールドの値を送信する方法 サンプルコード

フォーム内のフォーム フィールドが無効に設定されている場合、フォーム フィールドの値は送信されません...

JavaScript の Strict モードの詳細な説明

目次導入厳密モードの使用厳格モードの新機能例外を強制的にスローする変数の使用を簡素化する議論を単純化...

JavaScript における URL オブジェクトの素晴らしい使い方

目次序文解析パラメータURLパラメータを変更する要約する序文URLオブジェクトはページ側ではあまり使...

HTML ハイパーリンク タグ_Powernode Java アカデミー

HTML を学習したり使用したりしたことがある人なら、<a> タグについてよく知っている...

Reactでコンポーネントがどのように通信するかの詳細な説明

1. 何ですかコンポーネント間の通信は、次の 2 つの単語に分けることができます。コンポーネントコ...

JS WebSocket 切断理由とハートビートの仕組みの詳しい説明

1. 切断理由WebSocket が切断される理由は多数あります。WebSocket が切断されたと...

効率を向上できる Linux コマンドエイリアス 10 個のまとめ

序文Linux 環境で作業するエンジニアは、これらの面倒な命令とパラメータのコマンドラインにきっと驚...

tinyMCEの使い方と体験の詳細な説明

tinyMCE の使用方法の詳細な説明初期化TinyMCE を初期化するときは、ページの HEAD ...

Linux での MySQL 5.7 の導入とリモート アクセス構成

前書き: 最近、私はパートナーとチームを組んで .NET Core プロジェクトに取り組む予定です。...

JavaScript を使用してページ要素のオフセットを取得/計算する方法

質問コントロールをクリックすると、コントロールの下にフローティング レイヤーが表示されます。通常の方...