作者:matrix
发布时间:2019-09-20
分类:Linux
线上centos服务器有很长时间没有连,今天安装证书无故失败,数据库也不能连接。。。一系列的问题
查找占用情况
$ df -h #查看磁盘占用情况
$ du -h --max-depth=1 ./ #查看当前目录的文件/目录占用大小
然后就是手动一层一层的找到最大的那个目录。 😂
最后找到一个隐藏杀手:/var/spool/postfix/maildrop/
。这个目录下面存在3000W个小文件,占用33GB。主要它还不是tmp之类的目录,没遇见过真是很难查找。
究其原因是crontab任务日志发送到所有者的邮箱导致的问题
解决方案
编辑crontab
顶部首行写上 MAILTO=""
,这样就会把邮箱信息赋空,也就不会发送了。
如果有非root用户的crontab任务也需要在顶部声明MAILTO=""
.
默认crontab -e
是编辑的当前登录的用户定时任务配置,若是以root
登录则为/var/spool/cron/root
同理www
用户的定时任务文件就是/var/spool/cron/www
其次就是每条cron任务的最后把输出信息赋空 >/dev/null 2>&1
* * * * * /root/do.sh >/dev/null 2>&1
p.s.
记下以后排查的顺序
- web程序日志
- nginx/apache日志
- tmp
- crontab 错误邮件发送日志
/var/spool/postfix/maildrop
- /var/log 类型的log目录
/var/log/journal 启动目录的文件很多
...
参考:
https://www.jianshu.com/p/a0aa43707476
https://my.oschina.net/qimhkaiyuan/blog/1631028
作者:matrix
发布时间:2019-09-18
分类:Linux
环境:
阿里云centos + dnspod.cn
acme.sh项目:https://github.com/Neilpang/acme.sh
安装
$ curl https://get.acme.sh | sh
出现Install success!
安装成功。
dns验证方式-获取域名dns token
这里使用域名解析服务商的token来进行域名拥有验证
在dnspod.cn上操作申请获取ID和token。
ssh执行命令设置变量,便于后面脚本读取。
$ export DP_Id="000000"
$ export DP_Key="26****************************ed"
阿里云dns:
$ export Ali_Id="000000"
$ export Ali_Key="26****************************ed"
阿里云dns获取api和key:https://usercenter.console.aliyun.com/#/manage/ak 进去申请AccessKey ID与Access Key Secret就好。
其他域名解析商的api token操作:
https://github.com/Neilpang/acme.sh/wiki/dnsapi
申请泛域名证书
为域名hhtjim.com
申请证书。
$ source .bashrc #执行资源更新 确保acme.sh别名可用
$ acme.sh --issue --dns dns_dp -d hhtjim.com -d *.hhtjim.com
说明:
dns_dp 为dnspod ,如果是阿里云dns则为 dns_ali
前面-d参数指定根域名,后面-d指定子级泛域名
.hhtjim.com的证书只能支持通配符当前级别的域名,也就是xxx.hhtjim.com
如果要三级子域名就需要单独申请:.xxx.hhtjim.com,参数为-d xxx.hhtjim.com -d *.xxx.hhtjim.com
执行之后等待几分钟出现绿色文字提示key,cer证书所在位置就酸完成了。
The domain key is here: /root/.acme.sh/hhtjim.com/hhtjim.com.key
Your cert is in /root/.acme.sh/hhtjim.com/hhtjim.com.cer
Your cert key is in /root/.acme.sh/hhtjim.com/hhtjim.com.key
The intermediate CA cert is in /root/.acme.sh/hhtjim.com/ca.cer
And the full chain certs is there: /root/.acme.sh/hhtjim.com/fullchain.cer
证书生成完成,使用的时候把证书移动到nginx配置相关目录。
nginx证书使用
server {
listen 443;
server_name www.hhtjim.com;
root /htdocs/www.hhtjim.com;
index index.html index.htm index.php;
ssl on;
ssl_certificate /certificate_file_PATH/hhtjim.com/fullchain.cer;
ssl_certificate_key /certificate_file_PATH/hhtjim.com/hhtjim.com.key;
...
ssl_certificate和ssl_certificate_key对应fullchain.cer和域名.key文件即可。
以后的所有子域名都可以使用这个路径的证书。
证书更新
脚本会自行写入crontab
36 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
每天定时检测过期再更新。
参考:
https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E
https://lnmp.org/faq/letsencrypt-wildcard-ssl.html
https://juejin.im/post/5b6542ed51882519d3468d6d