Gogs是一个用Go编写的自托管Git服务,它很容易运行并且系统使用率也很低。它渴望成为建立自托管Git服务的最简单,最快速,最轻松的方式。
在本教程结束时,您将拥有一个正在运行的Gogs实例,其中包括一个Web界面,一个管理仪表板,以及对Git pull和push等操作的访问。
要学习本教程,您需要:
在这一步中,我们将创建后端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提供了一个开箱即用的服务器。
因为Gogs是用Go编写的,所以我们需要在编译Gog之前安装它。
首先,我们需要为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.
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:
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
您还应该能够访问带有http://your_server_ip:3000/
URL的网页。这将重定向到安装页面,但尚未填写。
让我们继续将Nginx配置为反向代理,这样您就可以轻松地将域名绑定到Gogs。
首先,安装Nginx。
sudo apt-get -y install nginx
接下来,为gogs创建一个Nginx配置文件。
sudo nano /etc/nginx/sites-available/gogs
添加以下内容,用你的腾讯CVM的IP地址替换your_server_ip
。如果您使用的是腾讯CVM的域名,则可以在此处使用您的域名。
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以激活虚拟主机配置。
sudo service nginx restart
您现在应该可以使用URLvhttp://your_server_ip/
访问网页,而无需指定端口。
还有一个简单的步骤可以在第一次运行时初始化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
3000
http://your_server_ip/
跳过可选的电子邮件和通知设置,然后在“ 管理员帐户设置”下,选择管理员用户名和密码,并包含您的电子邮件地址。我们将在下一步中将管理员用户名设置为your_admin_username
。
最后,单击“ 安装Gogs”,然后登录。
你们都完成了!让我们做一个简单的拉/推测试,以确保Gogs正常运行。
首先,转到http://your_server_ip/repo/create
并创建名为my-test-repo的存储库,然后单击“ 使用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!” 附加到README的行。就这么简单!
更多Ubuntu教程请前往腾讯云+社区学习更多知识。
参考文献:《How To Set Up Gogs on Ubuntu 14.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。