文章目录
{ .ImgAlt }}

Gogs 是一个用 Go 语言编写的自托管开源 git 服务器。它包括一个仓库文件编辑器,项目问题跟踪,和一个内建的 wiki。

Gogs 是一个轻量级应用,并且可以在低功率系统上安装。如果你想要寻找一个比 Gitlab 占用内存更小的替代品,又不需要 Gitlab 那么多花里胡哨的功能,那么你一定要试试 Gogs。

这篇指南讲述在 Ubuntu 18.04 上安装和配置 Gogs 的几个步骤。同样的指令适合于 Ubuntu 16.04 和其他任何基于 Ubuntu 的发行版。

一、在你开始之前

Gogs 可以使用 SQLite,PostgreSQL 和 MySQL/MariaDB 数据库来存储它的数据。

在这篇指南中,我们将会使用 SQLite 作为数据库。如果 SQLite 没有在你的系统上安装,你应该输入下面的命令,进行安装:

sudo apt install sqlite3

为了更加安全,我们推荐设置一个基本的防火墙。你可以参考《How To Set Up a Firewall with UFW on Ubuntu 18.04 》中的步骤。

二、安装 Gogs

我们将从二进制进行安装 Gogs。安装过程非常简单直接。

2.1 安装 Git

第一步就是在你的服务器上安装 Git。想要这么做,以 sudo 用户身份登录系统,刷新本地软件包索引,并且通过下面的命令安装 git 软件包:

sudo apt update
sudo apt install git

通过显示 Git 版本,验证安装过程:

git --version
git version 2.17.1

2.2 创建一个 Git 用户

创建一个新的系统用户,运行 Gogs 服务,输入:

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:

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 服务:

sudo systemctl start gogs
sudo systemctl enable gogs

验证服务已经成功启动:

* 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 证书:

一旦完成,打开你的文本编辑器,并且编辑域名服务器块:

腾讯云学生服务器_学生机_云服务器优惠套餐-云+校园 - 腾讯云

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;
    }
}
 不要忘记将gogs.example.com替换成你的域名,并且设置正确的 SSL 证书文件位置。所有的 HTTP 请求都会被转向到 HTTPS。

重启 Nginx 服务,使修改生效:

sudo systemctl restart nginx

下一步,我们会修改 Gogs 域名和根地址。想要这么做,打开配置文件并且编辑下面的行:

sudo nano /home/git/gogs/custom/conf/app.ini
[server]
DOMAIN           = gogs.example.com
ROOT_URL         = https://gogs.example.com/

重启 Gogs 服务,输入:

sudo systemctl restart gogs

此时,Gogs 被配置好,并且你可以访问它了:https://gogs.example.com

2.7 配置邮件通知

想要 Gogs 能够发送通知邮件,你需要安装 Postfix 或者使用一些其他的业务邮件服务,例如: SendGrid, MailChimp, MailGun 或者 SES。

想要启用邮件通知,打开配置文件,并且编辑下面的行:

sudo nano /home/git/gogs/custom/conf/app.ini
[mailer]
ENABLED = true
HOST    = SMTP_SERVER:SMTP_PORT
FROM    = SENDER_EMAIL
USER    = SMTP_USER
PASSWD  = YOUR_SMTP_PASSWORD

确认你放入了正确的 SMTP 服务器信息。

重启 Gogs 服务,使应用生效:

sudo systemctl restart gogs

Gogs 也允许你通过创建 web hook连接到 Slack,并且发送通知到你的 Slack 频道

三、升级 Gogs

想要升级 Gogs,需要一些手动步骤。

01.第一步停止 Gogs 服务:

sudo systemctl stop gogs

02.重命名 Gogs 安装目录。

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 命令,拷贝customdatalog目录到解压缩的目录:

sudo rsync -a /home/git/gogs_old/{custom,data,log} /home/git/gogs/

05.最后,启动 Gogs 服务:

sudo systemctl restart gogs

就这些。

四、总结

这个教程带你一起看了在 Ubuntu 18.04 上安装和配置 Gogs。

你可以创建你的第一个项目,并且开始使用你的新 Gogs 服务器。




如果你有任何疑问,请通过以下方式联系我们:

微信:

微信群: 加上面的微信,备注微信群

QQ: 3217680847

QQ 群: 82695646 雪梦科技交流群

原文 :https://linuxize.com/post/how-to-install-and-configure-gogs-on-ubuntu-18-04/

    版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。知识共享许可协议
腾讯云学生服务器_学生机_云服务器优惠套餐-云+校园 - 腾讯云

相关推荐