升级Gogs版本
今天早上收到阿里云发的报警短信,大致内容如下:
前提分析:
公司代码代码仓库使用是Gogs搭建的,版本是0.11.34,二进制方式安装的,连接的是其他主机上的MySQL数据库,因此被检测到有这个漏洞
处理方式:
- 先登录Gogs官网,查看Gogs的最新版本,如下图所示:
地址:https://gogs.io/docs/installation/install_from_binary
同时看到官方提供的有这个信息:如何通过二进制升级?
但是不要被这个信息骗了,升级Gogs版本不能采用这种方式。
注意到官方页面左侧导航有从二进制升级,这个是具体的升级方式,可以参考这个进行操作:
地址:https://gogs.io/docs/upgrade/upgrade_from_binary
- 接下来按照官方文档提供的升级方式升级就行了
(1) 先停止主机上的Gogs应用程序进程,直接kill就行了
ps -ef | grep gogs # 查看进程pid
lsof -p pid # 查看进程具体路径, 默认位置在 git 用户下的家目录
kill -9 pid # 杀死进程
# 这里写的有一个gogs.sh脚本,停止进程的话执行这个脚本也行
# gogs.sh
#!/bin/bash
function starT(){
nohup /home/git/gogs/gogs web &
}
function stoP(){
kill -9 `lsof -i:3000 |awk 'NR==2{print $2}'`
}
case $1 in
'start')
starT;
;;
'stop')
stoP;
;;
'restart')
stoP;
starT;
;;
*)
echo '请输入有效的命令(start|stop|restart)'
;;
esac
(2) 原有程序目录重命名,下载最新的二进制文件等
# # 默认位置在 git 用户下的家目录
$ sudo su - git
$ cd ~
$ pwd
/home/git
$ ls
gogs gogs-repositories
# gogs 目录是程序目录
# gogs-repositories 存放仓库文件的目录,在配置文件中指定的
# 将当前目录移动到另一个临时的位置,但不是删除!
$ mv gogs gogs_old
载并解压新的二进制:
# 请根据系统和类型获取相应的二进制版本
$ wget https://dl.gogs.io/0.12.3/gogs_0.12.3_linux_amd64.tar.gz
$ tar -zxvf gogs_0.12.3_linux_amd64.tar.gz
$ ls
gogs gogs_old gogs-repositories gogs_0.12.3_linux_amd64.tar.gz
# 复制 custom、data 和 log 目录到新解压的目录中:
$ cp -R gogs_old/custom gogs
$ cp -R gogs_old/data gogs
$ cp -R gogs_old/log gogs
# 最后,运行并打开浏览器进行测试:
$ cd gogs
$ ./gogs web
- 升级中出现的问题
(1) 启动的时候报错:"./gogs: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by ./gogs)"
分析:当前系统是CentOS release 6.8 (Final),系统的glibc版本太低,软件编译时使用了较高版本的glibc引起的
查看当前系统支持的glibc版本:
# strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_PRIVATE
当前最高版本是GLIBC_2.10,需要升级到GLIBC_2.14才行。
使用命令:yum update glibc
会报错,提示当前使用的yum仓库不可用,查看发现得知使用的是官方的yum仓库,这里更换成使用腾讯云的yum仓库
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos6_base.repo # 适用于6.x系统的
然后使用命令:yum update glibc
进行更新,不过才更新到GLIBC_2.12版本,还不是GLIBC_2.14版本。
采用源码编译方式更新危险性太大,幸好找到了rpm更新包:
地址:https://files.cnblogs.com/files/sanduzxcvbnm/glibc-2.14.1-rpm-all.zip
rpm -Uvh glibc-2.14.1-6.x86_64.rpm glibc-common-2.14.1-6.x86_64.rpm glibc-headers-2.14.1-6.x86_64.rpm glibc-devel-2.14.1-6.x86_64.rpm nscd-2.14.1-6.x86_64.rpm glibc-static-2.14.1-6.x86_64.rpm glibc-utils-2.14.1-6.x86_64.rpm
再次查看发现已经顺利升级成功
t# strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_PRIVATE
(2) 再次启动后报这个错误:[TRACE] Log Mode: File
看这个不知道啥原因,不过通过查看gogs.log文件可以知道:
tail -n 30 /home/git/gogs/log/gogs.log # 日志文件路径
# 最新的日志有这么一句话
[FATAL] [gogs.io/gogs/internal/db/repo.go:121 NewRepoContext()] Gogs requires Git version greater or equal to 1.8.3
通过查看本机使用的git版本,发现是1.7.1的,看来还需要升级git版本
# git --version
git version 1.7.1
但是使用命令:yum update git
进行升级,最新软件版本还是1.7.1,看来只能通过其他方式进行升级了。
这里不采用git源码的方式进行升级,而是通过下载其他的git 仓库源进行升级
yum -y install http://opensource.wandisco.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm
yum install git # 这一步安装比较慢
升级成功后再次查看版本,版本大于1.8.3,符合要求了
t# git --version
git version 2.22.0
(3) 注意:若是使用root用户启动,则会报错:
"[FATAL] [gogs.io/gogs/internal/cmd/web.go:161 runWeb()] Failed to initialize application: init configuration: user configured to run Gogs is "git", but the current user is "root""
需要切换到git用户启动才行
$ sudo su - git
$ cd ~
$ cd gogs
$ ./gogs web
# 我这操作是切换到git用户后,使用gogs.sh脚本进行启动的,脚本内容见上面:bash gogs.sh start
升级总结
1.最新的软件包上没有说明一些注意事项,或者前提条件,比如gilibc和git的版本要求
2.下载软件界面上面有二进制升级方式,若真按照这种方式升级,后果不敢想象
升级Gogs版本的更多相关文章
- 非关系型数据库来了,CRL快速开发框架升级到版本4
轮子?,我很任性,我要造不一样的轮子,同时支持关系型和非关系型的框架有没有 新版数据查询作了些调整,抽象了LabmdaQueryy和DBExtend,升级到版本4,非关系数据库MongoDB被支持了! ...
- ubuntu下升级R版本
ubuntu下升级R版本 在测试<机器学习 实用案例解析>一书的邮件分类代码时,windows系统下rstudio中无法读取特殊字符,在ubuntu下可以.在ubuntu虚拟机下安装t ...
- Mac中使用port升级gcc版本
Mac OS中的gcc版本可能不会满足实际使用要求,需要对其升级. 这里介绍使用port方式来升级gcc版本.Macports是Mac OS中的软件包管理工具. 首先,安装Macports 这里提供O ...
- 如何升级Ceph版本及注意事项
升级软件版本在日常运维中是一个常见操作. 本文分享一下Ceph版本升级的一些经验. 一般升级流程和注意如下: 1. 关注社区Release notes 和 ceph-user邮件订阅列表,获取社区发 ...
- Windows2000安装Winform Clickonce提示升级系统版本的解决方案
Windows2000安装Winform Clickonce提示升级系统版本.只需要把所有应用的DLL的独立性设置为false就可以了.
- wdcp升级php版本到5.3,5.5
官网省级方法 wget http://down.wdlinux.cn/in/php_up53.shsh php_up53.sh 看到"php update is OK"提示表示,顺 ...
- PHPNow升级PHP版本为5.3.5的方法
在WIN上有时候需要测试一些PHP程序,又不会自行独立配置环境,那么PHPNow是非常好的选择,这篇文章主要为大家分享下如果将phpnow的php版本升级为5.3.5 在WIN上有时候需要测试一些 ...
- PHPNow升级PHP版本的方法
在WIN上有时候需要测试一些PHP程序,又不会自行独立配置环境,那么PHPNow是非常好的选择. PHPNow自带的PHP版本为5.2.14,而最后一次更新在于2010-9-22,PHP5.2对于现在 ...
- Linux(Fedora)下NodeJs升级最新版本(制定版本)
Linux(Fedora)下NodeJs升级最新版本(制定版本) 首先安装n模块: npm install -g n 升级node.js到最新稳定版 n stable 升级node.js到制定版本 n ...
随机推荐
- Collection集合和Collection的常用功能
boolean add(E e); 向集合里添加元素 boolean remove(E e); 删除集合中的某个元素 void clear(); 清空集合的所有元素 boolean contains( ...
- react 吸顶实现
今天获取到一个需求,其实就是吸顶的需求,页面下滑,某一块dom隐藏时发生吸顶现象.这种特效其实老生常谈了,但是在这次做的时候,突发奇想,能否将其做成一个 hook ,从而实现出传递ref即可使得 do ...
- 日期字符串转为java.sql.Date
日期字符串转为java.sql.Date类型 问题引出:在将一个日期字符串通过sql语句,插入到数据表的日期字段(字段类型是DATE),时遇到一个问题,如何将一个日期字符串转成java.sql.Dat ...
- AI全流程开发难题破解之钥
摘要:通过对ModelArts.盘古大模型.ModelBox产品技术的解读,帮助开发者更好的了解AI开发生产线. 本文分享自华为云社区<[大厂内参]第16期:华为云AI开发生产线,破解AI全流程 ...
- ToString()格式化输出
C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 E 科学型 25000.ToString ...
- 用JavaScript计算平年闰年
var i = prompt("请输入你要查询的年份") if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0){ conso ...
- java反射的初理解
反射 获取类的方法: Class<?> aClass1 = Class.forName("TestDemo.refection.User");//通过类路径获取 Cla ...
- 出票系统:根据淡旺季的月份和年龄,打印票价[课后练习] 出票系统:根据淡旺季的月份和年龄,打印票价[课后练习] 4 10旺季: 4 10旺季: 成人(18-60) : 60 成人(18-60):60 儿童(<18) :半价 儿童(<18):半价 老人(>60) :1/3 老人(>60):1/3 淡季: 淡季: 成人: 40 成人:40 其他: 20 其他:20
用if适合新手练习 package LianXiTi;import java.util.Scanner;public class first2 {// 出票系统:根据淡旺季的月份和年龄,打印票价[课后 ...
- Radmin自动登录器 v3.0
Radmin自动登录器 v3.0 - By: ybmj@vip.163.com 20150615 用户手册 下载地址:https://download.csdn.net/download/shuren ...
- Apache DolphinScheduler 需要的sudo,还可以这么玩,长见识了!
Apache DolphinScheduler(incubator)需要的sudo,还可以这么玩,长见识了! 在新一代大数据任务调度 - Apache DolphinScheduler(以下简称dol ...