web-dev-qa-db-ja.com

bashスクリプトを使用してRedisをインストールし、構成ファイルを設定します

Redisを自動的にインストールするbashスクリプトを作成したい:

私の問題は、2つのファイルの行を変更することです。

#Install Redis
Sudo apt install redis-server
Sudo nano /etc/redis/redis.conf

行を見つけて変更する必要があります。監視指令はデフォルトでnoに設定されています。

# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.    
supervised systemd # this line to change

Sudo systemctl reload redis.service

  1. Sudo nano /etc/redis/redis.conf

    コメントを解除する必要があります(#が存在する場合は削除します):

    bind 127.0.0.1 ::1
    

それをテストすることも可能ですか?

redis-cli

次のプロンプトで、pingコマンドを使用して接続をテストします。

ping

Output
PONG

またはステータスを確認しますか?

Sudo systemctl status redis
1
user3541631

はい、可能ですが、次善策です。これはバッチプロセスなので、nanoは使用せず、テキスト処理ツールを使用してください。各コマンドの前にSudoを付ける代わりに、すべてをスクリプトでラップし、Sudoを使用してスクリプトを実行します。

何かのようなもの(「Something like」とは、「これを試したことがなく、redis-serverをインストールしていません。これを何度も行ったタスクの別の例と考えていますが、動作するはずです」):

#!/bin/bash
if [[ $(id -u) != 0 ]] ; then
    echo "Must be run as root" >&2
    exit 1
fi
apt update
apt install redis-server
# Just in case, ...
systemctl stop redis-server
# Change "supervised no" so "supervised systemd"? Question is unclear
# If "#bind 127.0.0.1 ::1", change to "bind 127.0.0.1 ::1"
sed -e '/^supervised no/supervised systemd/' \
    -e 's/^# *bind 127\.0\.0\.1 ::1/bind 127.0.0.1 ::1' \
    /etc/redis/redis.conf >/etc/redis/redis.conf.new
# $(date +%y%b%d-%H%M%S) == "18Aug13-125913"
mv /etc/redis/redis.conf /etc/redis/redis.conf.$(date +%y%b%d-%H%M%S)
mv /etc/redis/redis.conf.new /etc/redis/redis.conf
systemctl start redis-server
# give redis-server a second to wake up
sleep 1
if [[ "$( echo 'ping' | /usr/bin/redis-cli )" == "PONG" ]] ; then
    echo "ping worked"
else
    echo "ping FAILED"
fi
systemctl status redis
systemctl status redis-server
exit 0
3
waltinator