放置していたサーバーに手を入れる
最近はサーバーウィほぼ放置して、サイトが落ちているのに気が付いた時のみ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
これで様子見します
最後によく参考にするサーバー初心者説明記事のめも