communityfield’s diary

サイト開発のメモです。メモなので結構適当です

放置していたサーバーに手を入れる

最近はサーバーウィほぼ放置して、サイトが落ちているのに気が付いた時のみhttpd再起動をかけて復旧させていた

めんどくさいのでタスクスケジュールして定期的に自動で再起動かける様にしたい

時間余裕あればもっといじりたいのだが最近WOWSにハマっており忙しいのでいじる気にならない

 

sslをサイトに導入しているとhttpd再起動にパスフレーズを求められる

なのでスケジュール化できないので以下のサイトを参考にパスフレーズ自動化大作戦

https://qiita.com/yoshizaki_kkgk/items/26b01edb577861fbcfe6

-------

パスワード自動応答スクリプトを作成
パスワードを出力するシェルスクリプトを作成しておき、それを読み出すだけで出来ます。

シェルスクリプトの作成
$ sudo vim /etc/ssl/certs/pass_ssl.sh
/etc/ssl/certs/pass_ssl.sh
#!/bin/sh
echo 'tVKJDtQf4euzCPss'
rootのみ読み書きできるようにしておきます。

権限の変更
$ sudo chmod 500 /etc/ssl/certs/pass_ssl.sh

-------

試しにsystemctl restart httpdで再起動してみると

おお、パスフレーズを要求されない

お次は自動でhttpd再起動させる

http://boota.mydns.jp/blog/?p=4928

-------

ちなみに定期的に実行させるのはhttpdのリスタートですから、おそらくcronによる処理の実行もroot権限で行われなければならないと思うので、rootで作業を行います。
まずはrootでログインし、crontabコマンドを叩きます。

$ su –
# crontab -e

-eオプションはcronを対話的に記述できます。ってゆーか、エディタ(vi)が立ち上がるので、それに記入していくことになります。viを閉じれば自動的にcronとして保存されます。

viのモードになったら、ここにcrontabの中身を書き込みますが、記述にはルールがあり、

分 時 日 月 曜日 <コマンド>

で記述します。各要素の間は空白で区切ります。詳細はこちらに詳しいのでそちらを見ていただくとして、紹介されている事例で手っ取り早く確認するとこんな感じ。

00 14 * * * /usr/bin/cmd // 毎日14:00に実行
* * * * * /usr/bin/cmd // 毎分実行
15,30 06 * * 2 /usr/bin/cmd // 毎週火曜日の6:15と6:30に実行
05 23 * 3-5 4 /usr/bin/cmd // 3~5月の毎週木曜日23:05に実行

00 14だから14:00の意味になり、*(アスタリスク)は「すべて」を意味するので、一番上の例ならすべての日にち・月・曜日の14:00に実行、となるため、毎日14:00に実行すると解釈される訳ですね。

スパンの指定方法などは細かく色々あるみたいですが、さしあたってこれがわかればOKでしょう。

例えば僕の例ならば、毎日午前0:00にhttpdをリスタートさせようと思っているとして、その書き方はこうなるわけです。

0 0 * * * /etc/init.d/httpd restart

これを記述したらviモードを保存して終了すればcronに登録されます。登録された内容は/var/spool/cron/root(僕はこれをrootで実行させなければならないから)に保存されます。
ちなみに/var/spool/cron/rootはディレクトリではなく「ファイル」です。

ファイルですから、lessして中身を確認すれば、先ほどviモードで記述したそれがそのまま出てきます。つまりviで編集して/var/spool/cronの中にユーザ名で保存している感覚ですね。

-------

ということなので月曜の3時にリスタートする様にしてみる

0 3 * * 1 /etc/init.d/httpd restart

 

これで様子見します

最後によく参考にするサーバー初心者説明記事のめも

https://knowledge.sakura.ad.jp/2691/