2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

centos7 redis4 systemctl インストールと自動起動

Last updated at Posted at 2019-08-19

systemctl って何よ?

CentOS 7から自動起動や解除を設定する際に「systemctl」コマンドを使う。
この仕組を利用すればサービスの自動起動だけでなく、プロセスの監視を行い停止したら再起動を行うこともできます。

デーモンって何よ?

iphone のバックグランドで動いているアプリのようなもん。

参考
https://www.ritolab.com/entry/74
https://yomon.hatenablog.com/entry/2016/02/20/162648

では、redis4 で 試してみよう。

・redisのインストール
・サーバー再起動時に自動起動
・redisが落ちてたら10秒後に自動起動

firewall を開ける

大切なのは "使うサーバーに向けてのみFirewallを開ける" ということ。
redisのbind は ローカルIPを指すもので、グローバルIPから直接作業する場合はFirewallで制御する。


firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="グローバルIP" port protocol="tcp" port="6379" accept"
firewall-cmd --reload
success

//ポートが空いたかチェック
firewall-cmd --list-all

ソースからインストール


yum install cpan
yum install gettext
yum grouplist 
yum groupinstall 'Development Tools'

yum は古いので


wget http://download.redis.io/releases/redis-4.0.14.tar.gz

# ダウンロードしたソースを解凍する
tar xzf redis-4.0.14.tar.gz
cd redis-4.0.14/
make install
sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/6379.conf


ln -s /home/hideki/redis-4.0.14/src/redis-server /usr/local/bin/redis-server
ln -s /home/hideki/redis-4.0.14/src/redis-cli /usr/local/bin/redis-cli

フォルダ作成とパーミッション変更


useradd redis
mkdir -p /var/lib/redis/6379
mkdir -p /var/log/redis
mkdir -p /etc/redis
chown -R redis:redis /var/log/redis /var/lib/redis

logfile と dir はパーミッションがおかしいと redisの起動すらしないので、とりあえず起動することを確認してから設定しても良い。

/etc/redis/6379.conf

logfile /var/log/redis.log
bind 0.0.0.0 # 全サーバーから接続許可グローバルIPは指定できない。ローカルIPアドレスのみ。

dir /var/lib/redis/6379/
supervised systemd

//パスワードを設定
//ここで設定してうまく動かない場合がある.

//requirepass yourpass

//接続ユーザー数を限定
maxclients 5000

//メモリいっぱいになったら古いデータから消す。期限が設定されていないキーは永遠残るみたいなので。
maxmemory-policy allkeys-lru

//サーバー落ちたらデータ諦める(永続化オフ)
save ""

パスワードを設定する際は、インストール完了後に


/usr/local/bin/redis-cli
redis-cli> CONFIG SET REQUIREPASS '' 

をすると良い。じゃないと
NOAUTH Authentication required ってなる場合がある。

/etc/systemd/system/redis.service

[Unit]
Description=Redis

[Service]
Type=notify
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
ExecStop=/usr/local/bin/redis-cli -p 6379 [先程指定しておいたrequirepass]
User=redis
Group=redis


Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Restart は 停止してたら再起動せよ
RestartSec は 10秒後に。

デーモンをリロード

うまく動かない場合は logファイルのパーミッションを疑う。
また、rebootも試してみる。


systemctl daemon-reload
systemctl start redis
systemctl status redis
systemctl enable redis

再起動するか、テスト

1 redis を kill して停止

systemctl stop redis すると自動開始されないので注意。
ちゃんとkill。


ps -ef | grep redis #プロセス番号を調べ
# redis     1531     1  0 15:55 ?        00:00:00 
kill -9 1531 #強制停止

2 サーバー再起動


reboot

でサーバーを再起動して自動的に redis が始まるか。
設定がうまくいっていれば両方とも自動で起動する。

ただし、それだけではエラーが出るので

ログファイル /var/log/redis.log を見ながら修正していく。

https://www.denet.ad.jp/technology/2017/11/redis-centos7.html
https://blog.megunlabo.net/2018/04/03/redis-install/

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?