每一次故障排查都是一笔财富 , 各种狗血经过不表 , 解决问题之后的那种满足是不可替代的 。背景 发布系统架构图简化如下:
发布架构图
管理员通过Jenkins调用“发布程序(代号varian , 以下简称varian)” , 发布程序会进行一系列的初始化操作 , 完成后生成Docker镜像上传到Docker仓库 , 容器集群更新镜像 , 用户通过负载均衡访问我们的容器集群 。
老的varian采用shell python开发 , 配合Jenkins(jdk1.7)进行发布 , 因内部项目较多 , 写了很多兼容脚本 , 代码比较乱 。
我们计划对varian进行重构 , 完全采用python开发 , 各个功能模块化 , 不同类型的项目用乐高的思想拼装模块部署发布 , 降低耦合 。
并将jenkins升级到最新版本 , jdk同样升级到1.8 。新的varian已经开发完成 , 现在开始部署测试了 , 故事就由此开始 。
为了降低对现有项目的影响决定重新部署一套新的环境 , 完全测试通过后将老环境废弃 , 直接启用新环境 , 新环境信息如下:
系统:Debian8语言:Python3.4JDK1.8Jenkins2.134故障处理过程 解决nginx访问403的问题 通过 Jenkins 调用varian正常部署了一个静态项目(纯html , css , js等静态资源) , 通过负载均衡访问容器集群(参考上边架构图) , 发现页面样式无法加载 , 浏览器按F12调出控制台发现个CSS文件返回403状态:
chrome F12调试
web服务用的nginx , 脑海里迅速过了一遍什么情况下nginx会返回403:
nginx配置了白名单 , client端访问的IP不在白名单内
【nginx转发请求403的原因 nginx403错误怎么解决】访问的路径是个目录 , 而nginx配置了禁止列目录
访问的路径是个文件 , 但nginx服务配置的用户和用户组对文件没有读取权限
目录索引index 配置错误 , 例如你的目录下只有index.html , 你却配置了index.shmtl或index.php等等
index index.shtml index.php; 常见的有以上问题会导致nginx返回403 , 迅速排查了一下 , 发现就是权限的问题导致的 , nginx配置的用户和用户组为www-data , 而css文件的属主属组都是root , 且其他用户没有任何权限:这里再详细讲解下linux下的文件权限 , 以上边的csl.css文件为例:
-rw-r----- 1 root root 7.9K Jul 24 12:34 csl.css 以空格分割第一段-rw-r——-10个字符定义了文件的权限第一个字符 , 这里为
-代表这是一个文件 , 还会看到像d代表目录、l代表连接剩下九个字符 , 每三个一组 , 第2-4个字符代表属主权限 , 第5-7个字符代表属组权限 , 第8-10个字符代表其他用户的权限其中每一组三个字符分别为r、w、x , 用数字表示r=4、w=2、x=1 , 分别代表读、写、执行权限 , 如果这个字符有值表明有这个权限 , 例如上边css文件的权限就为属主有rw读写权限 , 属组只有r权限 , 其他用户没有权限第二段为一个数字 , 表示文件的连接数第三段root表示用户的属主为root第四段root表示用户的属组也为root第五段则表示文件大小后边三段为修改时间最后一段为文件名tomcat8 UMASK 经过反复测试 , 发现我直接在linux下通过控制台执行python脚本的方式发布部署最终文件权限正常 , 但是同样的脚本经过Jenkins执行后权限就不对了 。
猜你喜欢
- ajax请求的五个步骤 同步ajax请求
- 怎么连图带文字一起转发 微信怎样发朋友圈
- 数码知识:微信语音信息怎么转发给别人语音怎么转发
- 转发他人文章的好处 头条转发别人的文章有收益吗
- 教大家抖音怎么删除转发的视频的方法
- 微博批量点赞 微博转发
- 如何一次性在多个群转发文件图片 微信换手机能同步聊天记录吗
- 能赚钱的文章平台有哪些,正规转发文章赚钱平台推荐
- 免费科普nginx启动命令应用 nginx怎么启动和关闭
- nginx如何配置文件 nginx配置php环境
