所解决的问题
服务器重启后无法访问GitLab服务UI,服务页面显示code 500
说明
此处介绍自建Gitlab 由子服务运行失败所引起的 code 500 异常案例 和 其解决方法
处理过程
-
首先查看gitlab各子服务运行状态;
-
查看运行异常的子服务日志;
# 查看服务日志
gitlab-ctl tail redis-exporter
发现日志中提示子服务 redis_exporter 脚本: access denied 拒绝访问!
- 此处的access denied是由文件权限发生变化权限降级所引起(和许多博客由本地密钥所引起的情况不一样);
查看文件权限信息 显示脚本文件权限全部为 -
- root用户被提示:Operation not permitted(若没有这种情况可跳过);
执行chmod命令会发现无法没有权限修改,即使是root用户也不行
# 查看当前文件属性
lsattr ./redis_exporter
执行 lsattr 命令后可以看到当前文件有个 i 属性,查阅命令帮助文档可以看到有i属性的文件是不能修改的,更不可被删除,即使是root用户也不可
去除文件中 i 属性
# 去除 "i" 属性
chattr -i webapps
- 修改文件权限;
chmod 777 ./redis_exporter
- 重复以上步骤将gitlab服务中出现降权问题的脚本重新赋权,完成后重新启动gitlab服务即可正常运行;
问题
access denied 文件权限自动发生降权的具体原因没有排查到,有遇到相同情况的朋友可以一起交流 ~
补充
此处记录一些过程中可能会用到额外命令(Linux)
#单独执行脚本时提示 exec: chpst: not found (找不到chpst)
#可以设置临时的环境变量 (路径/opt/gitlab/embedded/bin 为chpst位置)
export PATH=/opt/gitlab/embedded/bin:$PATH
#执行GitLab 异常检查
gitlab-rake gitlab:check
以上案例解决方案如果能帮助到您可以点赞关注支持下~
有问题可直接下方列表提问,博主看到会及时回复。