私はredisをインストールしましたが、コマンドでサービスを開始しようとするとまったく機能しません:
Sudo service redis-server start
これはjournalctl -xe
の結果です:
Subject: Unit redis-server.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit redis-server.service has finished shutting down.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Start request repeated too quickly.
Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.
これはsystemctl status redis-server.service
の結果です:
redis-server.service - Redis Datastore Server
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: inactive (dead) (Result: resources) since Kam 2017-03-02 13:22:46 WIB; 5min ago
Process: 12120 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.
Mar 02 13:22:46 aaaaa-notebook systemd[1]: redis-server.service: Unit entered failed state.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Failed with result 'resources'.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
Mar 02 13:22:46 aaa-notebook systemd[1]: Stopped Redis Datastore Server.
Mar 02 13:22:46 aaa-notebook systemd[1]: redis-server.service: Start request repeated too quickly.
Mar 02 13:22:46 aaa-notebook systemd[1]: Failed to start Redis Datastore Server.
私は同じ問題を抱えていて、どこでも実用的なソリューションを見つけることができませんでした。いくつかの検索の後、次の修正が機能しました(Ubuntu 16.04)
/ etc/systemd/system/redis.serviceで、[Service]
セクションの下に以下を追加します。
Type=forking
任意のエディターを使用してサービスを開きます。
vim /etc/systemd/system/redis.service
ExecStart
の[Service]
セクションを見てください。
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
このコマンドを実行して、発生しているエラーを確認します。私はこれで応答しました:
Fatal error, can't open config file '/etc/redis/redis.conf'
だから私はちょうどその行をこれに更新しました(実際の設定ファイルがあった場所)
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
Redisクイックスタートがデフォルトで配置する場所は... :)
私は同じエラーに直面しました。しかし、私にとっては理由がまったく異なっていました。それはredis.conf
ファイルのタイプミスによるものです。それを修正し、Sudo systemctl restart redis-server
を再起動するとすぐに再起動します。この場合にも同じエラーがスローされるのは誤解を招きます。
redis.serviceファイルが「/ etc/systemd/system /」ディレクトリにありません
Sudo nano /etc/systemd/system/redis.service
次に、これらの行をコピーして貼り付けます
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
このファイルを保存して閉じます
次に、ディレクトリの許可を変更します
$ Sudo adduser --system --group --no-create-home redis
$ Sudo chown redis:redis /var/lib/redis
$ Sudo chmod 770 /var/lib/redis
次にredisサーバーを起動します
$ sudo systemctl start redis
その実行中かどうかを確認します
$ sudo systemctl status redis
参考: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04
/ var/lib/redisフォルダーとredisユーザーおよびグループの両方が必要でした。
Kevin Uptonの https://askubuntu.com/a/981641/451682 アドバイスを使用して問題を見つけました:vim /etc/systemd/system/redis.service
は、/usr/local/bin/redis-server /etc/redis/redis.conf
で作成し、Can't chdir to '/var/lib/redis': No such file or directory
で応答したSudo mkdir /var/lib/redis
に導きました。
それから、Rishik Rohanの https://askubuntu.com/a/918408/451682 に従って、redisユーザーとグループを作成し、/ var/lib/redisディレクトリにそれを配置する必要もありました。 :
Sudo adduser --system --group --no-create-home redis
Sudo chown redis:redis /var/lib/redis
Sudo chmod 770 /var/lib/redis
どうもありがとう!
その問題を解決する手順:-+ ============== + A. 566番号行のredis.confでメモリ制限を設定する
566 maxmemory 256mb 567 maxmemory-policy allkeys-lru
B. Linuxカーネルのオーバーコミットメモリ設定を1に設定します。
$ Sudo sysctl vm.overcommit_memory = 1
または/etc/sysctl.confを1に変更します。
C.今すぐredisサーバーを再起動します。
$ systemctl restart redis
今すぐRedisのステータスを確認してください。
それでも問題が解決しない場合は、Goして編集し、サービスファイルを再編集します。
========= vi /etc/systemd/system/redis.service
次のように表示されます。
[ユニット] Description = Redis In-Memory Data Store After = network.target
[サービス] User = root Group = root ExecStart =/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop =/usr/local/bin/redis-cli shutdown Restart = always
[インストール] WantedBy = multi-user.target
変更してExecStart =/usr/local/bin/redis-server /etc/redis/redis.conf
に
ExecStart =/usr/local/bin/redis-server /etc/redis.conf
さて、redisサービスを開始してください
$ systemctl start redis
これで、Redisはエラーなしで起動します。
+ ============== +
Redisのテスト:-
[root @ server]#redis-cli 127.0.0.1:6379> ping echoコマンドを使用して、指定した文字列をエコーします。127.0.0.1:6379> echo "Tecmint is testing Redis" setコマンドを使用してキー値を設定することもできます。 127.0.0.1:6379> set mykey "is testing Redis" mykeyの値を表示します:127.0.0.1:6379> get mykey "is testing Redis" 127.0.0.1:6379> exit [root @ server]#
これで、redisが正常に起動して実行されました。
+ ================== +
ありがとうございます。それでは、お元気で
すべての設定を行った後、これらのコマンドを試してください
Sudo systemctl daemon-reload
Sudo chown redis:redis /var/lib/redis
Sudo chmod 770 /var/lib/redis
以降
Sudo systemctl start redis
redis.log
を確認してください。次のようなものが表示されるはずです。
41393:M 07 Jun 17:02:19.034 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
41393:M 07 Jun 17:02:19.034 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
41393:M 07 Jun 17:02:19.034 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
41393:M 07 Jun 17:02:19.034 # Can't open the append-only file: Read-only file system
したがって、システムの制限と、おそらくredis
AOF(/var/lib/redis/*
)のファイル許可を確認してください。システムの制限については、 良いガイド です。