如何在 Ubuntu 18.04 上安装和配置 Gogs

2020-05-11 15:51:53 浏览数 (1)

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。输出将会像下面这样:

代码语言:javascript复制
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目录:

代码语言:javascript复制
VERSION=0.11.86
wget https://dl.gogs.io/${VERSION}/gogs_${VERSION}_linux_amd64.tar.gz -P /tmp

一旦下载完成,解压 Gogs tar.gz 文件,并且移动到/home/git目录:

代码语言:javascript复制
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/目录,输入:

代码语言:javascript复制
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

代码语言:javascript复制
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目录:

代码语言:javascript复制
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 命令,拷贝customdatalog目录到解压缩的目录:

代码语言:javascript复制
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 服务器。

0 人点赞