简介:
Gitlab是一个很棒的Git托管服务,几乎像GitHub一样强大,功能丰富,但是搭建过程比较复杂,功能对于普通人来说比较臃肿,而且内存占用太高,对于普通的服务器来说实在是吃不消.
Gogs (Go Git Service) 是一款极易搭建的自助 Git 服务,Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。内存上的压力也会少不少.
安装:
以下安装是在Centos 7 系统下进行
环境要求:
Dockers
数据库:(其中之一符合就可以)
MySQL:版本 >= 5.7
PostgreSQL
MSSQL
TiDB(实验性支持,使用 MySQL 协议连接)
或者 什么都不安装 直接使用 SQLite3
git(bash):系统已经自带,不需要管
SSH 服务器:已经自带不需要管
步骤:
由于我本机已经安装了MySQL,Nginx服务,所以没有全部用Docker来搭建服务.
首先拉取gogs镜像:
docker pull gogs/gogs
2.创建本地目录存放数据:
mkdir -p /data/gogs
3.使用run命令绑定端口和一些配置文件
docker run -d --name=mygogs -p 0.0.0.0:10022:22 -p 0.0.0.0:10080:3000 -v /data/gogs:/data gogs/gogs
注:
这里-d将容器跑到后台,不在当前终端输出
-p用来配置外置端口和内置端口的对应关系,将10022转到22端口,将10080转到3000端口
--name用来给这个容器命名,不能重名
-v用来把本地目录/data/gogs 映射到容器中/data , 使数据保存到本地存储
docker-compose.yml
version: '2' services: gogs: image: gogs/gogs:latest restart: always ports: - "0.0.0.0:10022:22" - "0.0.0.0:10080:3000" volumes: - /data/gogs:/data network_mode: "bridge"
配置Gogs:
容器启动完成后访问: IP:10080 访问安装界面,注意主机厂商的防火墙的端口开放. 80 443 10020 (Gogs ssh方式提交代码用到),10080 初始化安装Gogs 会用到,但是配置完nginx的反向代理之后可以把这个关掉.
往下还有配置邮件和和一些其他的配置,按照自己要求进行配置就可以了.
最后完成后会调到设置的域名上进行访问,但是我们还没有配置nginx所以还只能用Ip:10080进行访问.
Nginx反向代理:
nginx可用配置示例:
这个是一个最简单的配置,可添加一些其他参数进行优化.
server { listen 443 ssl; server_name mygogs.abc.com; #设置ssl访问,该域名下的证书 ssl_certificate /etc/ssl/startssl/gogs.io.unified.crt; ssl_certificate_key /etc/ssl/startssl/gogs.io-decrypted.key; #要缓存文件的后缀,可以在以下设置。 location ~ .*\.(gif|jpg|png|css|js)(.*) { proxy_pass http://localhost:3001; expires 3d; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_pass http://127.0.0.1:3001$request_uri; } } server { listen 80; server_name try.gogs.io; return 301 https://$host$request_uri; }
是用docker 搭还是本机已经有的nginx上加不详写了,视自己情况而定.
修正SSH方式提交代码错误:
当你完成以上的步骤时,应该是可以达到域名访问 gogs,有并且可以使用https方式克隆/提交代码了,但是当你使用ssh方式时你会发现会报错.
需要注意下官方的一句话:
Note: It is important to map the Gogs ssh service from the container to the host and set the appropriate SSH Port and URI settings when setting up Gogs for the first time. To access and clone Gogs Git repositories with the above configuration you would use: git clone ssh://git@hostname:10022/username/myrepo.git for example.
那么我们需要改下配置文件.
当你如果docker 挂载的文件跟我一样时,那么在本机 /data/gogs/gogs/conf 目录下看到 app.ini 这个文件,这个就是gogs的配置文件了,docker 方式直接修改这个文件就可以了,不需要向官方文档所说需要修改 custom/conf/app.ini .
在这个配置文件的server 块添加 SSH_DOMAIN ,值只是域名,前面不要添加https://,前面不要添加https://,前面不要添加https://
[server] DOMAIN = https://mygogs.abc.com HTTP_PORT = 3000 ROOT_URL = https://mygogs.abc.com/ DISABLE_SSH = false SSH_DOMAIN = mygogs.abc.com SSH_PORT = 10022 START_SSH_SERVER = false OFFLINE_MODE = false
修改完成需要重启gogs.才能生效.问题解决.
其他问题:
1. https方式克隆代码,从仓库复制的地址复制到git进行代码克隆会报403的错误,把连接复制到浏览器也是403的报错,但是去掉地址末尾的 .git ,就可以正常克隆代码,提交代码了,网页上也可以打开了.
解决: 经过排查发现是因为我为nginx配置了WAF,是哟郁郁WAF的安全策略导致的403没有权限的错误, 只需要改下WAF的安全策略就可以了.
参考文献:
https://gogs.io/docs/installation
https://github.com/gogs/gogs/tree/master/docker
https://github.com/gogs/gogs/issues/1558
https://gogs.io/docs/advanced/configuration_cheat_sheet
还没有评论,来说两句吧...