非常不幸,博客证书竟然真的失效了,在我认知中OneInStack letsencrypt 证书都是可以自动续期的,而现实打脸了我就说明这脚本自动续期是错的。
网上找了下手动强制续期的魔法咒语
/usr/local/python/bin/certbot renew –force-renew –renew-hook “/etc/init.d/nginx reload”
运行之后并没有什么卵用。是一点反应都没有,连报错都没有。
究其原因,我竟然发现CerBot文件是个0大小的文件,这能有用才真的是奇怪了。
到这里之后,本来我应该到./addons 试试能不能重装CerBot,直接配置吧? 这条路说不定是能走通的。
不过我当时首先想的是更新了OneInStack
./upgrade.sh
更新之后却发现addons里面竟然再也没有手动自动配置证书的功能了!因为新版本OneInStack抛弃了CerBot,改用了acme.sh。
这就是说,我想配置证书,要么自己重新手动安装兼容的CerBot,或是自己慢慢找对应配置文件位置自己直接配置证书,要么就只有删除虚拟主机重建继续沿用OneInStack的一整套方案。
这里必须说说OneInStack的奇葩特性。配置证书功能竟然和新建虚拟主机功能是捆绑的,这就好像强行规定换衣服之前必须吃饭,奇葩到不行了。
手动安装兼容CerBot(EEF的版本是独立的,没看到和Python有关系,而且我还安装失败了)和自己配置证书这种事情,我担心我真动起手来,还必须去花时间研究OneInStack是怎么写配置的,这不是吃饱了撑的吗?
所以只能沿用删除虚拟主机,让这脚本再次自己配置acme.sh吧。
于是就是备份主机了。
首先
./backup_setup.sh
运行之后会生成一份备份配置,
再
./backup.sh
运行之后就能得到网站的完整备份,包括网站目录和数据库。不过我们需要的仅仅是网站目录文件。记下这个压缩文件名字。
现在删除虚拟主机
./vhost.sh del
英文输入法状态删除正确的主机,其他的都不用管。
重新新建主机
./vhost.sh
重新输入和以前完全一样的站点名字,以前怎么写的现在就怎么写。和以前的区别是,现在生成免费证书再也不用CerBot,全自动会套用acme.sh,而且会自动在Crontab生成一个定期任务续期。
站点既然新建好了,现在我们就把文件拷贝回去吧。
cd /data/backup
cp 备份文件名 /data/wwwroot
cd /data/wwwroot
tar zxvf 备份文件名 -C /data/wwwroot/
好了,现在重新打开网站,应该能发现网站已经一切恢复正常。
现在删除过时的CerBot任务
crontab -e
找到关于CerBot的那行,键盘敲击 dd,再输入:wq 退出编辑即可。
如果3个月后还是没更新证书,那么回到Home目录(ROOT目录),手动试试这个
acme.sh –cron –debug 2
注意上面是两根-横线
出于安全考虑,最好是为服务器新建一个快照。
参考:
http://www.daniao.org/945.html