Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何在Ubuntu 14.04上设置Gogs

如何在Ubuntu 14.04上设置Gogs

原创
作者头像
心语花束
修改于 2018-10-25 02:58:14
修改于 2018-10-25 02:58:14
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

Gogs是一个用Go编写的自托管Git服务,它很容易运行并且系统使用率也很低。它渴望成为建立自托管Git服务的最简单,最快速,最轻松的方式。

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

先决条件

要学习本教程,您需要:

  • 任何大小的Ubuntu 14.04 腾讯CVM。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 一具有sudo权限的非root用户。在本教程中,我们将仅为Gogs使用单独的sudo非root用户以解决安全问题。本教程假定此专用用户名为git,遵循Git服务的约定; 应该遵循本教程作为git用户。

第1步 - 安装数据库

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get update

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get -y install mysql-server

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nano gogs.sql

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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标志和密码之间没有空格。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -u root -pyour_password < gogs.sql

要从源代码安装Gogs,需要使用Git和Mercurial等版本控制工具,然后再安装它们。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get -y install mercurial git

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

第2步 - 安装Go

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nano ~/.bashrc

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export GOPATH=/home/git/go
export GOROOT=/usr/local/src/go
export PATH=${PATH}:$GOROOT/bin

接下来,应用您的更改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source ~/.bashrc

然后使用wget从其网站下载Go的最新编译版本。在撰写本文时,最新的文件是go1.4.2.linux-amd64.tar.gz

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz

使用tar就能解除封存。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar zxf go1.4.2.linux-amd64.tar.gz

将目录更改为我们在~/.bashrc中定义的$GOROOT目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mv go $GOROOT

现在,如果您输入go您的终端:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go

你应该看到这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get -d github.com/gogits/gogs

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd $GOPATH/src/github.com/gogits/gogs

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go build

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

首先,让我们安装它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get -y install supervisor

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mkdir -p /var/log/gogs

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /etc/supervisor/supervisord.conf

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo service supervisor restart

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ps -ef | grep gogs

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root      1344  1343  0 08:55 ?        00:00:00 /home/git/go/src/github.com/gogits/gogs/gogs web

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tail /var/log/gogs/stdout.log

你应该看到这样的一行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2015/03/09 14:24:42 [I] Gogs: Go Git Service 0.5.16.0301 Beta

您还应该能够访问带有http://your_server_ip:3000/URL的网页。这将重定向到安装页面,但尚未填写。

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

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

首先,安装Nginx。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get -y install nginx

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /etc/nginx/sites-available/gogs

添加以下内容,用你的腾讯CVM的IP地址替换your_server_ip。如果您使用的是腾讯CVM的域名,则可以在此处使用您的域名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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可以使用它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo service nginx restart

您现在应该可以使用URLvhttp://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

最后,单击“ 安装Gogs”,然后登录。

第6步 - 测试Gogs

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

首先,转到http://your_server_ip/repo/create并创建名为my-test-repo的存储库,然后单击“ 使用README.md初始化此存储库 ”选项。

现在你应该能够克隆它。首先,转到您的主目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd

接下来,克隆存储库。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone http://your_server_ip/your_admin_username/my-test-repo.git

切换到存储库目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd my-test-repo

更新README.md

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo 'I love Gogs!' >> README.md

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git add --all && git commit -m "init commit" && git push origin master

结论

现在,如果你回去http://your_server_ip/your_admin_username/my-test-repo,你会看到“我喜欢Gogs!” 附加到README的行。就这么简单!

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Set Up Gogs on Ubuntu 14.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ubuntu 下面配置 go 运行环境
go 的安装需要用到很多的 package, 所以需要很多版本管理应用的支持,所以首先安装这些环境
零式的天空
2022/03/02
8980
自建Git服务器系列——Gitea(Gogs的孪生兄弟)
Gitea其实是Gogs的孪生兄弟,因为这是从Gogs源码的基础上开发的,算是分叉?官方介绍是"Gitea 是一个开源社区驱动的 Gogs 克隆",关于原因可以参考官网上的一篇介绍——>传送门 基本上
Java架构师必看
2020/04/10
6.3K0
如何在Ubuntu 14.04上部署Clojure Web应用程序
人们对函数式编程的兴趣不断增加,更具体地说,是在Clojure中对Web进行编程。许多关于如何构建基本应用程序的教程经常忽略部署细节。本文将向您展示如何将Clojure Web应用程序部署到Ubuntu 14.04 CVM。
风研雨墨
2018/09/25
1.4K0
如何在 Ubuntu 18.04 上安装和配置 Gogs
Gogs 是一个用 Go 语言编写的自托管开源 git 服务器。它包括一个仓库文件编辑器,项目问题跟踪,和一个内建的 wiki。
雪梦科技
2020/05/11
2.3K0
如何在 Ubuntu 18.04 上安装和配置 Gogs
Vapor奇幻之旅(02部署)
在Vapor奇幻之旅(01开篇) 中我介绍了如何用swift来构建web应用,这篇文章我会介绍如何在ubuntu服务器上部署vapor项目。
Leacode
2018/08/22
1.3K0
Vapor奇幻之旅(02部署)
如何使用Prometheus监视您的Ubuntu 14.04服务器
Prometheus是由SoundCloud开发的开源监控系统。与其他监控系统(如InfluxDB和Graphite)一样,Prometheus将其所有数据存储在时间序列数据库中。但是,它提供了多维数据模型和强大的查询语言,使系统管理员不仅可以轻松地微调其指标的定义,还可以生成更准确的报告。
尘埃
2018/10/22
4.3K0
ubuntu下的进程控制系统————Supervisor
我们在部署网站或者在ssh到服务器上去进行一些长时间操作的任务时候,通常不喜欢长时间开启终端在其中等待,尤其是Windows下putty这类软件,长时间不操作就会结束,尴尬的是,我们跑的进程也会直接终端,为了解决这个问题,我们需要把进程扔到后台,让他自己运行
earthchen
2020/09/24
9880
RustDesk 远程桌面
RustDesk[1] 是一款开源远程桌面软件。有云服务器的话,可以几分钟就搭一个,本文是搭建的记录。
GoCoding
2023/08/26
1.1K0
RustDesk 远程桌面
Flask 高并发部署方案详细教程!
虽然标题写的是 Flask,但是下面这个教程不仅仅只适用于 Flask, 还适用于其他Python web 框架,记得帮忙点赞!
Python编程与实战
2019/12/05
5.7K0
Flask 高并发部署方案详细教程!
fabric+supervisor+n
celery+virtualenv+supervisor的情形,其实只要指定celery程序为virtaulenv下面的那个即可,例如/home/xby/venv/mdwiki/bin/celery
py3study
2020/01/06
6230
FRP 内网穿透、反向代理
frp[1] 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
GoCoding
2022/02/23
6170
Supervisor 开始
Supervisor 是 Linux/Unix 操作系统上的进程管理工具。本文介绍了于 Ubuntu 18 上如何使用 Supervisor 开机启动、保活守护自己的服务进程。
GoCoding
2021/06/22
7220
Supervisor 轻松搞定Linux进程管理!让程序后台运行稳定
‌Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。
Tinywan
2025/02/10
1170
Supervisor 轻松搞定Linux进程管理!让程序后台运行稳定
Debian 环境中安装git服务器 Gogs(上)
Gogs 是由 Go 语言编写的,自由开源的 Git 服务。Gogs 是一款无痛式自托管的 Git 服务器,能在尽可能小的硬件资源开销上搭建并运行您的私有 Git 服务器。Gogs 的网页界面和 GitHub 十分相近,且提供 MySQL、PostgreSQL 和 SQLite 数据库支持。
Debian中国
2018/12/21
1.3K0
Debian 环境中安装git服务器 Gogs(下)
在本教程中,我们将使用 Gogs 在 Debian 9 上按步骤指导您安装和配置您的私有 Git 服务器。这篇教程中涵盖了如何在 Debian Stretch 上安装 Go 语言、PostgreSQL 和安装并且配置 Nginx 网页服务器作为 Go 应用的反向代理的细节内容。
Debian中国
2018/12/21
8010
如何在Ubuntu 14.04上使用Ansible部署基本PHP应用程序
本教程介绍使用Ansible配置基本PHP应用程序的过程。本教程结束时的目标是让您新Web服务器为基本的PHP应用程序提供服务,而无需在目标腾讯CVM上运行单个SSH连接或手动命令。
所有的酒都不如你
2018/09/28
6K0
如何在Ubuntu 14.04上使用Hexo创建博客
Hexo是一个基于Node.js的静态博客框架。使用Hexo,您可以以博客文章的形式发布Markdown文档。博客帖子和内容被处理并转换为HTML / CSS,它来自默认或自定义模板主题文件(很像其他静态博客生成器,如Jekyll和Ghost)。Hexo中的所有软件都是模块化的,因此您可以准确安装和设置所需的软件。
木纸鸢
2018/09/25
1.3K0
ubuntu supervisor管理uwsgi+nginx
superviosr是一个Linux/Unix系统上的进程监控工具,他/她upervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。不过同daemontools一样,它不能监控daemon进程(也就是后台进程)
py3study
2020/03/03
1.3K0
Supervisor进程管理详解「建议收藏」
Supervisor是用Python开发的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。
全栈程序员站长
2022/10/03
1.1K0
Supervisor进程管理详解「建议收藏」
如何在Ubuntu 14.04上使用Git Hooks部署Rails应用程序
在本教程中,我们将向您展示如何使用Git hooks自动将Rails应用程序的生产环境部署到远程Ubuntu 14.04服务器。使用Git hooks将允许您通过简单地将更改推送到生产服务器来部署应用程序,而不必手动拉动并执行诸如执行数据库迁移之类的操作。当您继续处理应用程序时,设置某种形式的自动部署(例如Git hooks)将为您节省时间。
楠宝宝
2018/09/26
2.5K0
相关推荐
ubuntu 下面配置 go 运行环境
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验