Let’s encryptの証明書自動更新のためのcrontabとの戦い

fusha

はいどーも!
Let’s encryptの証明書自動更新これでオッケー、と思っていたcrontabの設定ですが、
全然オッケーじゃなく、気付いたらwebサーバーのNginxが止まっていました..!!
証明書も更新されてないし..

設定内容はこちら。

毎月一日の朝5時に実行されるようになっています。
自動更新できてなかったことが発覚して色々ググってから分かったのですが、
同時刻に上記のように設定しても、どうやら同期実行はされないという….

非同期実行ということは、上記の例だと/etc/init.d/nginx stopの終了を待たずに、速攻で他のコマンド達の実行が開始されるということなので、それはおかしくなるなと..

じゃあ同時刻に同期実行するにはどうすればいいの、ということですが答えは「セミコロンでコマンドを区切る」でした。

今回はとりあえずこれで設定し直しました。
これで大丈夫なのか、テストはしてません!
Let’s encryptの証明書は頻繁に更新すると何かに引っかかるとどっかに書いてあったので…(曖昧)
来月の1日を楽しみにしたいと思います。

ちなみに、

ですが、
pythonのバージョンが何か噛み合わないらしく、このコマンドの挿入を強いられています。記憶が曖昧です。
Nginxのstopとstartもスマートにできそうですが、今はちょっと目をつぶります。

最後に、サイトの監視について書いて今日は終わります。

現状、ping監視とリソース監視はこのサイトのホストサーバーを契約しているKAGOYA VPSの管理画面から設定しているのですが、
今回みたいに証明書の問題でサイトにアクセスできなくなってしまった場合に、メール等何も通知が来ないことに気づいてしまいました。
Oh My Gosh…
これはあかんということで、これだけのために監視ツールであるZabbixを使おうと思ってます。
ちょうど今の会社で、Zabbixを使ってサイトが落ちてるかどうか監視するフローが共有されていたので、それに沿ってやってみます。

それでは、来月1日に証明書自動更新が成功することを祈ります!
(その設定じゃ成功しないよ、って分かった方、内緒で教えて下さい)

芦野

追記:
サイトが落ちてるかどうかだけの監視だと、
Uptime Robotという便利なWebサービスがありました。
参考記事↓
https://kotonova.com/4678
使ってみたところ、操作や設定がかなり簡単で、
サイトのダウン時は通知してくれるという目的を完全に果たしているので、
Zabbixと戦わず今の所これを利用していこうと思います(^3^)

追記:12月14日
見事に自動更新できてませんでした!!!
crontabに書いてることを手動で実行すると完全にうまくいくんですけど…

を実行したところで、
is this OK? y/n
が毎回聞かれるので、ここで止まってるんじゃないかと今疑ってます。
なので、

に修正して自動更新されるようにならないかまた見守ってみます

追記:1月29日
自動更新されてません!!w
グアー

毎回、

するのをやめてみようと思い永続的にpython2.7を使えるようにするにはどうすればいいか検索しました。

どうやらこいつをbash_profileとかに入れれば良さそう。
ただ、ログインし直してpython -Vとすると

error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

このエラーで検索すると、ナイス記事が見つかりました。
http://kenzo0107.hatenablog.com/entry/2015/02/17/114506

ライブラリがインストールされてるパスは違いましたが、
症状は全く同じだったので以下のコマンドを実行したらいつでもpython -Vで2.7と表示されるようになりました!よし!

ということで、

こいつをcrontabから削除して自動更新再トライ…

 

 

 

 

いけたー!!!!!

こいつが諸悪の根源でしたね。
最終的に以下の感じになりました。

いやー良かったです。
もうこの投稿は追記しません( ˙-˙ )

追記: 7月10日
まーーーーーーーーーーーーーた自動更新されてませんでした。
調べてみたらpythonのバージョンが2.6に戻ってました.. 最近あったサーバーメンテナンスで再起動かかったから..?
「いつでもpython -Vで2.7と表示されるようになりました!よし!」って1月に書いてたんですが…
ちなみに、suする時、- つけない癖がついてたせいで、.bash_profileに書いてたsource /opt/rh/python27/enableが、
rootユーザーじゃなくて一般ユーザーの方に書かれてました..!
とりあえずそれを直しましたが、cronはbash関係ないか..
と思ったので、cronのタスクの後ろに 2>> /home/ユーザー名/cronlog を追加して、
標準エラー出力をファイルに出力して見ることにして様子をみてみます

追記: 7月13日
/var/spool/mail/root
ここを見てみたら、cronのログがたんまり残ってました….!!
どうやら5月は成功してますが、6月と7月1日のコマンド実行時には
virtualenv: command not found
で証明書更新できてませんでした。
やっぱりpythonのせいですね….

crontabに1分ごとにpython -Vの結果を出力して色々調査した結果、答えが出ました…!!!!!!
結論:

これで間違いなく今後はエラーなく自動更新されます!!
でも出たとしても/var/spool/mail/root見ればエラー内容わかるのでもう苦しむことはなさそうです。
さようなら!!!!!!!!!!!!!

Posted by てりやき
Twitter→@teriyakiegg

Comments are closed.