本文讲述使用 Gogs 搭建 Git Repository Server
,采用 二进制 安装。Gogs
是一款极易搭建的 Git
服务,使用 Go 语言开发,主要由 Unknown 等人开发。相比于 Gitlab 更加轻量级,对系统配置要求低,支持二进制和源码安装,功能相对简单,比较适合于小型团队和个人。
环境要求
数据库(选择以下一项):
- MySQL: 版本 >= 5.5.3
- PostgreSQL
git (bash):
- 服务端和客户端均需要版本 >= 1.7.1
- SSH服务器
服务器环境
本文以以下配置搭建 Gogs
- CentOS 7.4
- lnmp 1.5(php-7.2.4、mysql-5.9.59、nginx-1.12.2)
软件安装
安装
lnmp
软件包mkdir ~/src/ cd ~/src/ wget -c http://soft.vpser.net/lnmp/lnmp1.5beta.tar.gz tar zxf lnmp1.5beta.tar.gz cd lnmp1.5 ./install.sh lnmp
添加
vhost
,详细内容请参考 LNMP添加、删除虚拟主机及伪静态使用教程,这里需要注意的以下几点:- 需要创建MySQL数据库
- 需要添加SSL Certificate来启用https访问。
lnmp vhost add
添加用户
git
(或者其它名称的用户),添加用户意义在于我们使用git
帐户来运行gogs
(安全限制)。adduser git passwd git
下载
gogs
二进制包,注意要查根据你当前系统版本选择相应的二进包,执行uname -a
来查看系统信息。su - git wget https://dl.gogs.io/0.11.43/gogs_0.11.43_linux_amd64.tar.gz tar zxf gogs_0.11.43_linux_amd64.tar.gz
运行
gogs
,进入gogs
目录后,执行./gogs web
,尝试运行gogs
。到这一步已经可以从外网访问gogs
,访问地址为:http://hostaddress:3000/
(默认端口为3000),并对gogs
配置了。cd gogs/ ./gogs web
在第5步已经能运行
gogs
,但这种运行方式不科学(有点low),当然你也可以使用nohup
来后台运行,推荐使用 systemd 的方式来运行。# gogs执行脚本到/etc/init.d目录下 cp ~/gogs/scripts/init/centos/gogs /etc/init.d/ # 为脚本添加执行权限 sudo chmod 755 /etc/init.d/gogs # 修改~/gogs/scripts/systemd/gogs.service文件 请查阅参考资料 如何以守护进程形式运行 cp ~/gogs/scripts/systemd/gogs.service /etc/systemd/system/gogs.service # 激活gogs.service sudo systemctl enable gogs # 启动gogs sudo systemctl start gogs # 查看gogs运行状态 sudo systemctl status gogs -l
- 到此软件安装已经结束了。
软件配置
使用
nginx
做反向代理,并启用ssl
访问网站,这里需要注意的是,由于使用了lnmp vhost add
命令,nginx
配置文件会有多余的选项,而我们并不需要这些选项,因此要把这些选项去掉。所有的请求都应交于gogs
服务来处理(包含静态文件,还有.gitignore
这种类似于系统目录的文件),nginx
配置如下:# /usr/local/nginx/conf/vhost/domain.conf server { listen 80; server_name domain; location / { # 强制网站使用https访问 return 301 https://$host$request_uri; } location ~ /.well-known { # 此处保留的原因是由于使用Lent's Encrypt证书 刷新证书时 # 服务器请求此域名下这个地址来验证 详细内容 请参见 参考资料 allow all; } } server { listen 443 ssl http2; server_name domain; ssl on; # 此处省略ssl配置 location / { proxy_set_header X-Real-IP $remote_addr; proxy_pass http://127.0.0.1:3000$request_uri; } location ~ /.well-known { allow all; } }
修改 app.ini 文件,在[server]配置节,添加
HTTP_ADDR
其值为127.0.0.1
,仅允许本机访问。[server] HTTP_ADDR = 127.0.0.1
重启
nginx
和gogs
service nginx restart systemctl restart gogs
参考资料
本文由 waynelone 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。