逐步搭建gogs+drone自动化---gogs篇
什么是gogs
Gogs(go git serve)是一款极易搭建的轻量级自助的Git服务,基本能使用到git功能全部都,还有工单系统也挺适合于小团队的,并且市面上最低配置的服务器都能满足系统最低硬件要求。
前期准备
首先准备好服务器(也可以本地搭建),其次了解一些基础的docker操作和linux命令。因为此次是基于阿里云服务器进行,所以本地搭建不做介绍。
- 服务器: 阿里云(1核2G) centOS 7.7.1908
- mysql:5.7 (5.7及以上,低版本会产生gogs报错主索引长度不够 Specified key was too long; max key length is 764 bytes )
- gogs镜像:gogs/gogs:0.12.3
安装gogs
准备一个映射目录,存放gogs的配置文件,方便后期修改配置。
cd var mkdir gogs这里主机路径使用的是:
/var/gogsgogs容器目录结构: /data ├── /git │ ├── /.ssh │ │ └──environment 环境变量 │ ├── /gogs-repositories git仓库 │ └── .gitconfig 配置 ├── /gogs │ ├──/conf gogs 配置文件 │ │ └── app.ini (/install 页面的配置)) │ ├──/data 数据 │ └──/log 日志 └── /ssh 存放秘钥 一般来说,我们只需要映射 /var/gogs:/data/gogs。端口映射,安全组需要放行两个端口,一个http服务,一个ssh服务。我这里使用的使用的(1000,1001)
- 主机端口:容器内部端口
- 1001:22 ssh端口映射(git@xxx.xx.xx.xx:1001/username/test.git 下载路径)
- 1000:3000 http映射(访问gogs页面的端口)
运行
docker pull gogs/gogs:0.12.3mkdir -p /var/gogsdocker run --name=gogs -d -p 1001:22 -p 1000:3000 -v /var/gogs:/data/gogs
访问ip+上面映射主机的端口号(xxx.xxx.xxx.xxxx:1000)
如果,上面映射文件中,没有默认提供的/var/gogs/conf/app.ini文件,那么我们就会被重定向到xxx.xxx.xxx.xxxx:1000/install进行配置。具体如下,需要修改的地方请对照自己情况修改,其余地方可以不改。

这部分需要修改的地方
1. 配置数据库,如果不需要可以直接使用内置的SQLite3
2. 修改域名,此处影响ssh clone地址
3. 修改ssh端口为 服务器映射端口 而不是 容器自身的22端口
4. 修改应用url
其余地方都可以使用默认配置。
ps:如果是第一次搭建,建议不要勾选 `需要登录后浏览`,如果勾选了这个选项会增加后续构建的工作量。
如果不想带端口号,可以设置2.域名(gogs.my.com)4. 应用url(http://gogs.my.com), 然后再nignx中将这个域名(gogs.my.com)的访问全部代理到映射的http端口(1000)。
server
{
listen 80;
server_name gogs.my.com;
location /{
proxy_pass http://localhost:2020;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /www/wwwlogs/access.log;
}还需要在nignx里面配置允许下划线开头的cookie,不然创建仓库会报错。
underscores_in_headers on; # 加载http和serve都可以如果在/var/gogs/conf/app.ini中配置了,则直接跳过install这一步,进入首页. 配置文件,加注释的部分是需要修改的,其余可以直接使用默认。(使用的时候请删掉注释,app.ini中不允许有注释)
BRAND_NAME = Gogs
RUN_USER = git
RUN_MODE = prod
[database]
TYPE = mysql
HOST = 公网ip地址:3306 #mysql链接地址
NAME = gogs
USER = gogs
PASSWORD = gogs
SSL_MODE = disable
PATH = /app/gogs/data/gogs.db
[repository]
ROOT = /data/git/gogs-repositories
[server]
DOMAIN = gogs.my.club # ssh 域名
HTTP_PORT = 3000
EXTERNAL_URL = http://gogs.my.club/ # 应用url
DISABLE_SSH = false
SSH_PORT = 1000 # 应用端口
START_SSH_SERVER = false
OFFLINE_MODE = false
[mailer]
ENABLED = false
[auth]
REQUIRE_EMAIL_CONFIRMATION = false
DISABLE_REGISTRATION = false
ENABLE_REGISTRATION_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false
[user]
ENABLE_EMAIL_NOTIFICATION = false
[picture]
DISABLE_GRAVATAR = false
ENABLE_FEDERATED_AVATAR = false
[session]
PROVIDER = file
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /app/gogs/log
[security]
INSTALL_LOCK = true
SECRET_KEY = BpsA1YSADSocDd7至此,gogs已经搭建完毕,后续我们可以直接修改/var/gogs/conf/app.ini中的配置,然后重启容器就可以修改赔了。
下一篇我们基于gogs用过drone搭建自动话构建。
