質問: ### 前提・実現したいこと 2016/10以前に導入したLet's Encryptで証明書の自動更新が出来なくて困っています。 実際には、Let's Encryptではなく、Linuxのコマンドの設定だと思うので、 Linuxに詳しい方に一読いただけると幸いです。 ### 環境情報 Cent OS 6 (64bit) Let's Encrypt(2016/10以前の導入) Let's Encrypt(2016/10以前の導入の物)は、 python27が必須要件の為、SCLを導入し、使用しています。 また、以下のようなシェルを作成して実行しています。 ``` #!/bin/sh scl enable python27 - << \EOF ./certbot-auto renew --pre-hook "service httpd stop" --post-hook "service httpd start" EOF ``` ### 発生している問題・エラーメッセージ 上記のシェルですが、teraterm等からsh、bashコマンドで実行すると動作してれるのですが、 cronに設定を行うと空振りしているのか、実行されません。 (ログ出力を行ってみても何も出力されませんでした) ### 質問 そもそも、cronからsclコマンド自体が実行できていないように感じています。 上記のようなsclコマンドをcronから実行するには、どのような書き方をすればよいでしょうか? 宜しくお願い致します。 ### 追記 どうやらcronから実行するとLet's Encryptの「pre-hook」コマンドのパスが問題になっているようです。 Let's Encryptの公式サイトにパスの情報が見つけられていません。
回答: こちらの方法でpython27化するのはどうでしょうか? https://blog.offline-net.com/2016/05/08/apache_24_with_letsencrypt/ ``` $ sudo vi /etc/profile.d/enablepython27.sh #!/bin/bash source /opt/rh/python27/enable export X_SCLS="`scl enable python27 'echo $X_SCLS'`" $ sudo chmod +x /etc/profile.d/enablepython27.sh ``` であれば ``` 00 05 01 * * /usr/local/letsencrypt/letsencrypt-auto certonly --renew-by-default --webroot -w /var/www/html/ -d www.offline-net.com && /sbin/service httpd reload ``` なかんじで実行できると思います。