搭建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/gogs
gogs容器目录结构:
/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.3
mkdir -p /var/gogs
docker 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
进行配置。具体如下,需要修改的地方请对照自己情况修改,其余地方可以不改。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t2FBYTnP-1605539537105)(/images/gogsinstall.png)]
这部分需要修改的地方
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搭建自动话构建。