如何在Ubuntu14.04上设置Gogs

来自菜鸟教程
跳转至:导航、​搜索

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 update

我们将使用 MySQL 作为我们的后端服务器,所以接下来,安装它。 这里的 -y 标志假定所有提示都是肯定的。

sudo apt-get -y install mysql-server

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

现在创建并打开一个名为 gogs.sql 的文件。 在这里,我们使用 nano,但您可以使用您喜欢的文本编辑器。

nano gogs.sql

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

DROP DATABASE IF EXISTS gogs;
CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;

最后,用 MySQL 执行 gogs.sql 创建 Gogs 数据库。 将 your_password 替换为您在此步骤之前选择的 root 密码。

注意:此命令中的-p标志和您的密码之间没有空格。

mysql -u root -pyour_password < gogs.sql

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

sudo apt-get -y install mercurial git

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

第 2 步 — 安装 Go

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

首先,我们需要为 Go 设置一些环境变量。 为此,打开文件 ~/.bashrc 进行编辑。

nano ~/.bashrc

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

export GOPATH=/home/git/go
export GOROOT=/usr/local/src/go
export PATH=${PATH}:$GOROOT/bin

接下来,应用您的更改。

source ~/.bashrc

然后使用 wget 从其 网站 下载最新编译的 Go 版本。 在撰写本文时,最新的文件是 go1.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 go $GOROOT

现在,如果您在终端中键入 go

go

您应该看到如下内容:

Go is a tool for managing Go source code.

Usage:

    go command [arguments]

...

Use "go help [topic]" for more information about that topic.

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

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

go get -d github.com/gogits/gogs

Gogs 的源代码现在将在 $GOPATH/src/github.com/gogits/gogs 中,所以移到那里。

cd $GOPATH/src/github.com/gogits/gogs

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

go build

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

首先,让我们安装它。

sudo apt-get -y install supervisor

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

sudo mkdir -p /var/log/gogs

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

sudo nano /etc/supervisor/supervisord.conf

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

[program:gogs]
directory=/home/git/go/src/github.com/gogits/gogs/
command=/home/git/go/src/github.com/gogits/gogs/gogs web
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/gogs/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/gogs/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment = HOME="/home/git", USER="git"
user = git

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

现在重新启动主管。

sudo service supervisor restart

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

ps -ef | grep gogs

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

root      1344  1343  0 08:55 ?        00:00:00 /home/git/go/src/github.com/gogits/gogs/gogs web

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

tail /var/log/gogs/stdout.log

你应该看到这样的一行:

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

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

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

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

首先,安装 Nginx。

sudo apt-get -y install nginx

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

sudo nano /etc/nginx/sites-available/gogs

添加以下内容,将 your_server_ip 替换为您的 Droplet 的 IP 地址。 如果您为 Droplet 使用域名,则可以在此处使用您的域名。

server {
    listen 80;
    server_name your_server_ip;

    proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

    location / {
        proxy_pass http://localhost:3000;
    }
}

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

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

有关 Nginx 虚拟主机配置文件的更多信息,请参阅此 tutorial

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

sudo service nginx restart

您现在应该可以使用 URL http://your_server_ip/ 访问网页,而无需指定端口。

第 5 步 — 初始化 Gogs

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

访问http://your_server_ip/install并填写以下选项。 其中许多已经为您填写好了,但请确保将红色变量替换为您的服务器的值。

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

  • 数据库类型:MySQL
  • 主机:127.0.0.1:3306
  • 用户:root
  • 密码:your_database_password
  • 数据库名称:gogs

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

  • 存储库根路径:/home/git/gogs-repositories
  • 运行用户:git
  • 域:your_server_ip
  • HTTP 端口:3000
  • 申请网址:http://your_server_ip/

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

最后点击【X15X】安装Gogs【X31X】,然后登录。

第 6 步 — 测试 Gogs

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

首先,转到 http://your_server_ip/repo/create 并创建一个名为 my-test-repo 的存储库,然后单击选项 Initialize this repository with a README.md

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

cd

接下来,克隆存储库。

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

切换到存储库目录。

cd my-test-repo

更新 README.md

echo 'I love Gogs!' >> README.md

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

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

结论

现在,如果您返回 http://your_server_ip/your_admin_username/my-test-repo,您会看到“我爱 Gogs!” 附加到自述文件的行。 就这么容易!