Gogs 是一个用 Go 语言编写的自托管开源 git 服务器。它包括一个仓库文件编辑器,项目问题跟踪,和一个内建的 wiki。
Gogs 是一个轻量级应用,并且可以在低功率系统上安装。如果你想要寻找一个比 Gitlab 占用内存更小的替代品,又不需要 Gitlab 那么多花里胡哨的功能,那么你一定要试试 Gogs。
这篇指南讲述在 Ubuntu 18.04 上安装和配置 Gogs 的几个步骤。同样的指令适合于 Ubuntu 16.04 和其他任何基于 Ubuntu 的发行版。
一、在你开始之前
Gogs 可以使用 SQLite,PostgreSQL 和 MySQL/MariaDB 数据库来存储它的数据。
在这篇指南中,我们将会使用 SQLite 作为数据库。如果 SQLite 没有在你的系统上安装,你应该输入下面的命令,进行安装:
代码语言:javascript复制sudo apt install sqlite3
为了更加安全,我们推荐设置一个基本的防火墙。
二、安装 Gogs
我们将从二进制进行安装 Gogs。安装过程非常简单直接。
2.1 安装 Git
第一步就是在你的服务器上安装 Git。想要这么做,以 sudo 用户身份登录系统,刷新本地软件包索引,并且通过下面的命令安装 git 软件包:
代码语言:javascript复制sudo apt update
sudo apt install git
通过显示 Git 版本,验证安装过程:
代码语言:javascript复制git --version
代码语言:javascript复制git version 2.17.1
2.2 创建一个 Git 用户
创建一个新的系统用户,运行 Gogs 服务,输入:
代码语言:javascript复制sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos 'Git Version Control' git
这个命令将会创建用户并且设置用户文件夹为/home/git
。输出将会像下面这样:
Adding system user `git' (UID 111) ...
Adding new group `git' (GID 116) ...
Adding new user `git' (UID 111) with group `git' ...
Creating home directory `/home/git' ...
2.3 下载 Gogs 二进制包
浏览 Gogs 下载页面并且按照你的系统架构下载最新的二进制软件包。在写这篇文章的时候,最新版本是 0.11.86,如果有新的版本可用,你应该修改下面命令中的VERSION
字段值。
使用wget
命令下载 Gogs 压缩文件到/tmp
目录:
VERSION=0.11.86
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
一旦下载完成,解压 Gogs tar.gz 文件,并且移动到/home/git
目录:
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
运行下面的命令来修改 Gogs 安装目录的归属用户和归属用户组为 git:
代码语言:javascript复制sudo chown -R git: /home/git/gogs
2.4 创建一个 systemd 单元文件
Gogs 自带 Systemd 单元文件,方便我们的安装配置。
拷贝这个文件到/etc/systemd/system/
目录,输入:
sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
一旦完成,启动并且启用 Gogs 服务:
代码语言:javascript复制sudo systemctl start gogs
sudo systemctl enable gogs
验证服务已经成功启动:
代码语言:javascript复制* gogs.service - Gogs
Loaded: loaded (/etc/systemd/system/gogs.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-04-25 04:13:44 PDT; 9s ago
Main PID: 14376 (gogs)
Tasks: 8 (limit: 2319)
CGroup: /system.slice/gogs.service
`-14376 /home/git/gogs/gogs web
2.5 使用 web 安装器安装 Gogs
下载 Gogsi 已经被下载并且运行了,是时候通过网页界面来完成整个安装过程了。
打开你的浏览器,输入:http://YOUR_DOMAIN_IR_IP:3000
,下面的屏幕将会出现:
数据库设置:
- Database Type: SQLite3
- Path: 使用绝对路径, /home/git/gogs/gogs.db
应用通用设置:
- Application Name: 输入你的组织名字
- Repository Root Path: 留下默认值 /home/git/gogs-repositories
- Run User: git
- Domain: 输入你的域名或者服务器 IP 地址。
- SSH Port: 22, 如果你的 SSH 监听其他端口,请修改它。
- HTTP Port: 3000
- Application URL: 使用 http 和你的域名或者 服务器 IP 地址。
- Log Path: 留下默认值 /home/git/gogs/log 后面你也可以通过编辑 Gogs 配置文件来修改设置。
一旦完成,点击"Install Gogs"按钮。安装将会立刻进行,并且当安装完成时,将会转向到登录页面。
点击 “Sign up now”:
第一个生成的用户被自动添加到 Admin 用户组。
就这些。Gogs 已经在你的 Ubuntu 机器上安装好了。
2.6 配置 Nginx 作为 SSL 代理服务器
这一步是可选的,但是我们强烈推荐。想要使用 Nginx 作为反向代理服务器,你需要有一个域名或者子域名指向你的服务器公网 IP。在这个指南里,我们使用gogs.example.com
。
首先,安装 Nginx,并且按照下面的指南生成一个免费的 Let’s Encrypt SSL 证书:
- How To Install Nginx on Ubuntu 18.04
- Secure Nginx with Let’s Encrypt on Ubuntu 18.04
一旦完成,打开你的文本编辑器,并且编辑域名服务器块:
sudo nano /etc/nginx/sites-enabled/gogs.example.com
server {
listen 80;
server_name gogs.example.com;
include snippets/letsencrypt.conf;
return 301 https://gogs.example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name gogs.example.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
client_max_body_size 50m;
# Proxy headers
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/gogs.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gogs.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/gogs.example.com/chain.pem;
include snippets/letsencrypt.conf;
include snippets/ssl.conf;
# log files
access_log /var/log/nginx/gogs.example.com.access.log;
error_log /var/log/nginx/gogs.example.com.error.log;
# Handle / requests
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
}
代码语言:javascript复制 不要忘记将gogs.example.com替换成你的域名,并且设置正确的 SSL 证书文件位置。所有的 HTTP 请求都会被转向到 HTTPS。
重启 Nginx 服务,使修改生效:
代码语言:javascript复制sudo systemctl restart nginx
下一步,我们会修改 Gogs 域名和根地址。想要这么做,打开配置文件并且编辑下面的行:
代码语言:javascript复制sudo nano /home/git/gogs/custom/conf/app.ini
代码语言:javascript复制[server]
DOMAIN = gogs.example.com
ROOT_URL = https://gogs.example.com/
重启 Gogs 服务,输入:
代码语言:javascript复制sudo systemctl restart gogs
此时,Gogs 被配置好,并且你可以访问它了:https://gogs.example.com
。
2.7 配置邮件通知
想要 Gogs 能够发送通知邮件,你需要安装 Postfix 或者使用一些其他的业务邮件服务,例如: SendGrid, MailChimp, MailGun 或者 SES。
想要启用邮件通知,打开配置文件,并且编辑下面的行:
代码语言:javascript复制sudo nano /home/git/gogs/custom/conf/app.ini
代码语言:javascript复制[mailer]
ENABLED = true
HOST = SMTP_SERVER:SMTP_PORT
FROM = SENDER_EMAIL
USER = SMTP_USER
PASSWD = YOUR_SMTP_PASSWORD
确认你放入了正确的 SMTP 服务器信息。
重启 Gogs 服务,使应用生效:
代码语言:javascript复制sudo systemctl restart gogs
Gogs 也允许你通过创建 web hook连接到 Slack,并且发送通知到你的 Slack 频道。
三、升级 Gogs
想要升级 Gogs,需要一些手动步骤。
01.第一步停止 Gogs 服务:
代码语言:javascript复制sudo systemctl stop gogs
02.重命名 Gogs 安装目录。
代码语言:javascript复制sudo mv /home/git/gogs{,_old}
03.下载最新版的 Gogs 并且将它移动到/home/git
目录:
VERSION=
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp
sudo tar xf /tmp/gogs_*_linux_amd64.tar.gz -C /home/git
确保你将VERSION
修改成你的实际 Gogs 发布版本。
04.使用 rsync 命令,拷贝custom
,data
,log
目录到解压缩的目录:
sudo rsync -a /home/git/gogs_old/{custom,data,log} /home/git/gogs/
05.最后,启动 Gogs 服务:
代码语言:javascript复制sudo systemctl restart gogs
就这些。
四、总结
这个教程带你一起看了在 Ubuntu 18.04 上安装和配置 Gogs。
你可以创建你的第一个项目,并且开始使用你的新 Gogs 服务器。