今天在部署服务的时候遇到了一个很罕见的现象,线上有15台服务器是手机推送消息的服务,新来的小运维使用ansible批量跑部署脚本的时候,发现手机端接收到来的消息全是乱码,然后登陆到服务器,查看日志发现,日志里面就是乱码,如图:
由于这个问题用户是有感知的,所以属于“事故”级别了,于是小boss大怒,叫运维赶快回滚,然后让开发赶紧重新检查代码,然后开骂测试都是吃屎的么这么大的一个问题都看不出来真是一群猪伤不起啊。
开发看了半天自己的代码,发现没有任何问题,战战兢兢跑来跟新来的小运维窃窃私语,结果我发现这个模块用手动单独部署,日志却是正常的,中文显示十分OK。
这一下开发就腰杆硬了,说这不是我的锅啊我是无辜的啊老子天天辛苦加班没有功劳也有苦劳没有苦劳也有疲劳老子的代码经得住考验这一切就是部署的问题。
于是我就查看了一下ansible的配置文件,vim /etc/ansible/ansible.cfg
,发现了问题所在:
这里最后三行需要改成下面的样子,这样就解决了乱码问题。
1
2
3
4#module_lang = C
#module_set_locale = False
module_lang = zh_CN.UTF-8
module_set_locale = True