Gogs 的一篇文章

介绍

Gogs 是一个用 Go 编写的自托管 Git 服务,非常容易运行并且系统使用率低。它渴望成为设置自托管 Git 服务的最简单、最快和最轻松的方式。

在本教程结束时,您将拥有一个正在运行的 Gogs 实例,其中包括一个 Web 界面、一个管理仪表板,以及对 Git 拉取和推送等操作的访问权限。

先决条件

要遵循本教程,您将需要:

  • 任意大小的 Ubuntu 14.04 Droplet。

  • sudo 非 root 用户。在本教程中,出于安全考虑,我们将为 Gogs 使用单独的 sudo 非 root 用户。本教程假设此专用用户名为 git,遵循 Git 服务的约定;本教程应以 git 用户身份进行操作。

步骤 1 — 安装数据库

在这一步中,我们将创建后端 Gogs 数据库。

登录后,请确保您的系统包是最新的。

sudo apt-get 更新
-y
sudo apt-get -y 安装 mysql-server

安装过程中会要求输入数据库root用户的密码。确保使用安全的,并记住它,因为本教程后面会用到它。

nano
纳米 gogs.sql

将以下内容粘贴到文件中,然后保存并关闭它。

如果存在 gogs,则删除数据库;
如果不存在则创建数据库 gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
your_password
-p
mysql -u root -pyour_password < gogs.sql

要从源代码安装 Gogs,需要 Git 和 Mercurial 等版本控制工具,所以接下来安装它们。

sudo apt-get -y 安装 mercurial git

如果您计划通过 SSH 克隆存储库,则需要一个正常运行的 SSH 服务器,但幸运的是,Ubuntu 14.04 提供了一个开箱即用的服务。

第 2 步 — 安装 Go

因为 Gogs 是用 Go 编写的,所以我们需要在编译 Gogs 之前安装它。

~/.bashrc
纳米〜/ .bashrc

将以下行添加到文件末尾,然后关闭并保存它。

导出 GOPATHu003d/home/git/go
导出 GOROOTu003d/usr/local/src/go
导出 PATHu003d${PATH}:$GOROOT/bin

接下来,应用您的更改。

源〜/ .bashrc
wgetgo1.4.2.linux-amd64.tar.gz
wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
tar
tar zxf go1.4.2.linux-amd64.tar.gz
~/.bashrc$GOROOT
sudo mv 去 $GOROOT
go

您应该看到如下内容:

Go 是一个管理 Go 源代码的工具。

用法:

go 命令 [参数]

...

使用“go help [topic]”获取有关该主题的更多信息。

第 3 步 — 安装并启动 Gogs 即服务

Go 有一个内置命令“get”,用于轻松下载 Go 项目的源代码及其所有依赖项,我们将使用它来下载 Gogs。

go get -d github.com/gogits/gogs
$GOPATH/src/github.com/gogits/gogs
高度 $gopath/sars/github.com/gottus/gauss

接下来,构建并生成二进制文件。此命令可能需要一些时间才能运行。

去建造

我们将使用 Supervisor 来管理 Gogs 服务。

首先,让我们安装它。

sudo apt-get -y 安装主管

让我们通过创建一个 Supervisor 配置部分来制作一个 Gogs 守护进程。首先,为日志文件创建一个目录。

sudo mkdir -p /var/log/gogs

接下来,我们将打开 Supervisor 配置文件进行编辑。

Sudonano / 等 / Super Weissor / Special Weiss rd. conf

将以下内容附加到文件以创建 Gogs 部分。

[程序:gogs]
目录u003d/home/git/go/src/github.com/gogits/gogs/
命令u003d/home/git/go/src/github.com/gogits/gogs/gogs web
自动启动u003d真
自动重启u003d真
开始秒u003d10
stdout_logfileu003d/var/log/gogs/stdout.log
stdout_logfile_maxbytesu003d1MB
标准输出日志文件备份u003d10
stdout_capture_maxbytesu003d1MB
stderr_logfileu003d/var/log/gogs/stderr.log
stderr_logfile_maxbytesu003d1MB
stderr_logfile_backupsu003d10
stderr_capture_maxbytesu003d1MB
环境 u003d HOMEu003d"/home/git", USERu003d"git"
用户 u003d git

这部分定义了我们要执行的启动 Gogs 的命令,自动用 Supervisor 启动,并指定日志文件的位置和对应的环境变量。有关 Supervisor 配置的更多信息,请阅读此 教程。

现在重新启动主管。

sudo 服务主管重启

我们可以使用以下命令检查 Gogs 是否正在运行。

ps -ef | grep 高斯

您应该看到类似这样的输出。

根 1344 1343 0 08:55? 00:00:00 /home/git/go/src/github.com/gogits/gogs/gogs 网络

您也可以通过查看“stdout.log”文件来验证服务器是否正在运行。

尾 /var/log/gogs/stdout.log

你应该看到这样的一行:

2015/03/09 14:24:42 [I] Gogs:Go Git 服务 0.5.16.0301 Beta

您还应该能够访问 URL 为“http://your_server_ip:3000/”的网页。这将重定向到安装页面,但暂时不要填写。

第 4 步 — 将 Nginx 设置为反向代理

让我们继续将 Nginx 配置为反向代理,以便您可以轻松地将域名绑定到 Gogs。

首先,安装 Nginx。

sudo apt-get -y 安装 nginx

接下来,为 gogs 创建一个 Nginx 配置文件。

sudo nano /etc/nginx/sites-available/gogs
your_server_ip
服务器 {
听 80;
server_name your_server_ip;

proxy_set_header X-Real-IP $remote_addr; # 传递真实的客户端 IP

地点 / {
proxy_pass http://localhost:3000;
}
}

并对其进行符号链接,以便 Nginx 可以使用它。

sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs

有关 Nginx 虚拟主机配置文件的更多信息,请参阅此 [教程](https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu -14-04-lts)。

最后,重启 Nginx 以激活虚拟主机配置。

sudo 服务 nginx 重启
http://your_server_ip/

步骤 5 — 初始化 Gogs

还有一个更简单的步骤来初始化 Gogs 的第一次运行。

http://your_server_ip/install

在第一部分,Gogs 需要 MySQL、PostgreSQL 或 SQLite3,填写:

MySQL127.0.0.1:3306rootyour_database_passwordgogs

在第二部分,Gogs 的常规设置,填写:

/home/git/gogs-repositoriesgityour_server_ip3000http://your_server_ip/

跳过可选的电子邮件和通知设置,然后在管理员帐户设置下,选择管理员用户名和密码,并包括您的电子邮件地址。我们将在下一步中将管理员用户名称为“your_admin_username”。

最后点击安装Gogs,然后登录。

第 6 步 — 测试 Gogs

你们都完成了!让我们做一个简单的拉/推测试,以确保 Gogs 正常运行。

http://your_server_ip/repo/create

现在你应该可以克隆它了。首先,移动到您的主目录。

光盘

接下来,克隆存储库。

git clone http://your_server_ip/your_admin_username/my-test-repo.git

切换到存储库目录。

cd my-test-repo

更新“README.md”。

echo '我爱 Gogs! >> 自述文件.md

提交您的更改并推送它们。该命令将询问您的 Gogs 用户名和密码。

git add --all && git commit -m "init commit" && git push origin master

结论

http://your_server_ip/your_admin_username/my-test-repo