LinuxサーバーにRedisをインストールすると、サービス化して自動起動などを設定したくなるかと思う。
サービスとして起動する際は以下のコマンドを実行するだろう。
sudo systemctl start redis.service
しかしコマンドを実行した際にこのようなエラーメッセージが出て実行できないことがある。
Job for redis.service failed because the control process exited with error code. See "systemctl status redis.service" and "journalctl -xe" for details.
手動で起動できなければ自動で起動させることもできない。
コマンド sudo systemctl status redis.service
でサービスの状態を確認しても「code=exited, status=203/EXEC」とエラー終了したメッセージが表示されてしまう。
なぜこのようなエラーが発生するのか。
今回はredis.serviceで「code=exited, status=203/EXEC」エラーで自動起動できない理由について紹介する。
redis.serviceで「code=exited, status=203/EXEC」エラーで自動起動できない理由
redis.serviceで「code=exited, status=203/EXEC」エラーで自動起動できない理由として「コマンドのパス設定の間違い」が考えられる。
redisをサービス化する際に /etc/systemd/system/redis.service
というファイルを作成して、その中に起動コマンドを記入した。
その起動コマンドが間違っていると「code=exited, status=203/EXEC」のエラーになる。
参考サイトの通りに設定すると
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
このようになる。
しかし環境によっては redis-server
や設定ファイルの場所が異なることがある。
筆者の場合は以下の設定で動作するようになった。
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ちなみに redis-server
の場所は whereis
コマンドを使えばわかる。
whereis redis-server