如何在 Ubuntu 16.04 上安装 Gogs Go Git 服务
在此页
- 先决条件
- 我们将做什么
- 第 1 步 - 更新和升级系统
- 第 2 步 - 安装和配置 PostgreSQL
- 第 3 步 - 安装 Go 和 Git
- 第 4 步 - 安装 Gogs Go Git 服务
- 第 5 步 - 配置 Gogs Go Git 服务
- 第 6 步 - 运行 Gogs 即服务
- 第 7 步 - 将 Nginx 配置为 Gogs 的反向代理
- 第 8 步 - 测试
- 参考资料
Gogs 是用 Go 语言编写的免费开源 Git 服务。 Gogs 是一种无痛的自托管 git 服务,允许您在最小的硬件服务器上创建和运行自己的 Git 服务器。 Gogs web-UI 与 GitHub 非常相似,并提供对 MySQL、PostgreSQL 和 SQLite 数据库的支持。
在本教程中,我们将逐步向您展示如何在 Ubuntu 16.04 上使用 Gogs 安装和配置您自己的 Git 服务。本教程将涵盖详细信息,包括如何在 Ubuntu 系统上安装 Go,安装 PostgreSQL,以及安装和配置 Nginx Web 服务器作为 Go 应用程序的反向代理。
先决条件
- Ubuntu 16.04
- 根权限
我们将要做什么
- 更新和升级系统
- 安装和配置 PostgreSQL
- 安装 Go 和 Git
- 安装 Gogs
- 配置 Gogs
- 以服务形式运行 Gogs
- 安装 Nginx 并将其配置为反向代理
- 测试
第 1 步 - 更新和升级系统
在继续之前,更新所有 Ubuntu 存储库并升级所有软件包。
运行下面的 apt 命令。
sudo apt update
sudo apt upgrade
第 2 步 - 安装和配置 PostgreSQL
Gogs 支持 MySQL、PostgreSQL、SQLite3、MSSQL 和 TiDB 数据库系统。
在本指南中,我们将使用 PostgreSQL 作为 Gogs 安装的数据库。
使用下面的 apt 命令安装 PostgreSQL。
sudo apt install -y postgresql postgresql-client libpq-dev
安装完成后,启动 PostgreSQL 服务并使其在每次系统启动时启动。
systemctl start postgresql
systemctl enable postgresql
在 Ubuntu 系统上安装了 PostgreSQL 数据库。
接下来,我们需要为 Gogs 创建一个新的数据库和用户。
以 postgres 用户身份登录并运行 psql 命令以获取 PostgreSQL shell。
su - postgres
psql
创建一个名为 git 的新用户,并赋予该用户 CREATEDB 的权限。
CREATE USER git CREATEDB;
\password git
创建一个名为 gogs_production 的数据库,并将 git 用户设置为数据库的所有者。
CREATE DATABASE gogs_production OWNER git;

已创建用于安装 Gogs 的新 PostgreSQL 数据库 gogs_production 和用户 git。
第 3 步 - 安装 Go 和 Git
使用下面的 apt 命令从存储库安装 Git。
sudo apt install git
现在将新用户 git 添加到系统中。
sudo adduser --disabled-login --gecos 'Gogs' git
以 git 用户身份登录并创建一个新的本地目录。
su - git
mkdir -p /home/git/local
转到本地目录并使用 wget 命令下载 Go(最新版本),如下所示。
cd ~/local
wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz

提取 go 压缩文件,然后将其删除。
tar -xf go1.9.2.linux-amd64.tar.gz
rm -f go1.9.2.linux-amd64.tar.gz
Go 二进制文件已下载到 ~/local/go 目录中。现在我们需要设置环境——我们需要定义 GOROOT 和 GOPATH 目录,这样我们就可以在 git 用户下的系统上运行 go 命令。
运行以下所有命令。
cd ~/
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc
并通过运行 source ~/.bashrc 命令重新加载 Bash,如下所示。
source ~/.bashrc
确保您使用 Bash 作为默认 shell。

现在运行 go 命令来检查版本。
go version
并确保您得到的结果如以下屏幕截图所示。

Go 现在安装在 git 用户下的系统上。
第 4 步 - 安装 Gogs Go Git 服务
以 git 用户身份登录并使用 go 命令从 GitHub 下载 Gogs。
su - git
go get -u github.com/gogits/gogs
该命令将下载 GOPATH/src 目录中的所有 Gogs 源代码。
转到 $GOPATH/src/github.com/gogits/gogs 目录并使用以下命令构建 gogs。
cd $GOPATH/src/github.com/gogits/gogs
go build
并确保你没有错误。
现在使用下面的命令运行 Gogs Go Git 服务。
./gogs web
该命令将在默认端口 3000 上运行 Gogs。

打开您的网络浏览器并输入您的服务器 IP 地址和端口 3000,我的是 http://192.168.33.10:3000/
你应该得到如下所示的结果。

Gogs 安装在 Ubuntu 系统上。现在回到您的终端并按 Ctrl + c 退出。
第 5 步 - 配置 Gogs Go Git 服务
在这一步中,我们将为 Gogs 创建自定义配置。
转到 Gogs 安装目录并创建一个新的 custom/conf 目录。
cd $GOPATH/src/github.com/gogits/gogs
mkdir -p custom/conf/
将默认配置复制到自定义目录并使用 vim 对其进行编辑。
cp conf/app.ini custom/conf/app.ini
vim custom/conf/app.ini
在 [server] 部分,将服务器 HOST_ADDR 更改为 127.0.0.1。
[server]
PROTOCOL = http
DOMAIN = localhost
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000
在 [database] 部分,使用您自己的数据库信息更改所有内容。
[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = gogs_production
USER = git
PASSWD = #
保存并退出。
现在通过运行如下所示的命令来验证配置。
./gogs web
并确保你得到如下结果。

Gogs 现在使用我们的自定义配置运行,在本地主机下,端口为 3000。
第 6 步 - 运行 Gogs 即服务
在这一步中,我们将 Gogs 配置为 Ubuntu 系统上的一项服务。我们将在/etc/systemd/system目录下新建一个服务文件配置gogs.service。
转到 /etc/systemd/system 目录并使用 vim 编辑器创建一个新的服务文件 gogs.service。
cd /etc/systemd/system
vim gogs.service
将以下 gogs 服务配置粘贴到那里。
[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service redis.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/go/src/github.com/gogits/gogs
ExecStart=/home/git/go/src/github.com/gogits/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git
[Install]
WantedBy=multi-user.target
保存并退出。
现在重新加载系统服务。
systemctl daemon-reload
使用 systemctl 命令启动 gogs 服务并使其每次在系统启动时启动。
systemctl start gogs
systemctl enable gogs

Gogs 现在作为服务运行在 Ubuntu 系统上。
使用以下命令检查它。
netstat -plntu
systemctl status gogs
你应该得到如下所示的结果。

第 7 步 - 将 Nginx 配置为 Gogs 的反向代理
在这一步中,我们将配置 Nginx 作为 Gogs 的反向代理。我们将使用来自其自己的存储库的 Nginx 包。
使用 add-apt 命令添加 Nginx 存储库。
sudo add-apt-repository -y ppa:nginx/stable
现在更新所有 Ubuntu 存储库并使用下面的 apt 命令安装 Nginx。
sudo apt update
sudo apt install nginx -y
接下来,转到 /etc/nginx/sites-available 目录并创建新的虚拟主机文件 gogs。
cd /etc/nginx/sites-available
vim gogs
将以下配置粘贴到那里。
server {
listen 80;
server_name git.hakase-labs.co;
location / {
proxy_pass http://localhost:3000;
}
}
保存并退出。
笔记:
使用您自己的域名更改 server_name 行。
现在激活一个新的虚拟主机并测试 nginx 配置。
ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/
nginx -t
确保没有报错,然后重启Nginx服务。
systemctl restart nginx

第 8 步 - 测试
打开您的网络浏览器并输入您的 gogs URL,我的是 http://git.hakase-labs.co
现在您将获得安装页面。在页面顶部,键入所有 PostgreSQL 数据库信息。

现在滚动到底部,然后单击管理员帐户设置下拉菜单。
输入您的管理员用户、密码和电子邮件。

然后单击安装 Gogs 按钮。
您将被重定向到 Gogs 用户仪表板,如下所示。

下面是 Gogs 管理仪表板。

Gogs 现在在 Ubuntu 16.04 服务器上安装了 PostgreSQL 数据库和 Nginx 网络服务器
参考
- https://gogs.io/docs/installation