Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
环境
gogs_0.11.91
创建git用户
[root@localhost ~]# useradd git
[root@localhost ~]# echo '123456'|passwd --stdin git
Changing password for user git.
passwd: all authentication tokens updated successfully.
为git用户设置sudo
[root@localhost ~]# visudo
git ALL=(ALL) NOPASSWD: ALL
下载并配置基本环境
[root@localhost ~]# yum -y install tar wget git mariadb mariadb-server
设置mariadb开机启动,并启动mariadb服务
[root@localhost ~]# systemctl enable mariadb --now
创建gogs数据库
# 切换到git用户
[root@localhost ~]# su - git
# 创建数据库
[git@localhost ~]$ mysql -u root -e "CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
[git@localhost ~]$ mysql -u root -e "show databases;"
+--------------------+
| Database |
+--------------------+
| gogs |
| information_schema |
| mysql |
| performance_schema |
+--------------------+
创建数据库gogs用户,并授予访问gogs数据库权限:
[git@localhost ~]$ mysql -u root -e "create user gogs; grant all privileges on gogs.* to gogs@'%' identified by 'gogs123';"
# 查看用户gogs是否添加,是否授予所有访问权。
[git@localhost ~]$ mysql -u root -e "select Host,User,Password from mysql.user; show grants for gogs@'%';"
下载gogs安装包
从gogs的官网 https://gogs.io/docs/installation/install_from_binary 下载对应操作系统的安装包。
[git@localhost ~]$ wget https://dl.gogs.io/0.11.91/gogs_0.11.91_linux_amd64.tar.gz
[git@localhost ~]$ tar xvf gogs_0.11.91_linux_amd64.tar.gz
启动gogs并开放防火墙的端口
[git@localhost gogs]$ sudo firewall-cmd --permanent --add-port=3000/tcp
success
[git@localhost gogs]$ sudo firewall-cmd --reload
success
[git@localhost ~]$ /home/git/gogs/gogs web
打开浏览器输入服务器的ip地址,端口是3000。数据库用户和密码,使用刚才创建的。“应用URL”填写gogs服务器的ip地址。然后点击立即安装。
之后,进入登录界面,我们可以创建一个新用户。
进入注册页面,注册用户。
注册完成,登录进去,我们可以点我的仓库,创建第一个仓库。
复制仓库地址,然后再自己的操作系统中下载该仓库
在仓库中创建一个描述文件,并上传到远程仓库中。
[root@localhost ~]# git clone http://192.168.60.137:3000/user01/example01.git
Cloning into 'example01'...
warning: You appear to have cloned an empty repository.
[root@localhost ~]# cd example01/
[root@localhost example01]# echo "This is example01's README" > README.md
[root@localhost example01]# git add .
[root@localhost example01]# git config --global user.name user01
[root@localhost example01]# git config --global user.email user01@example.com
[root@localhost example01]# git commit -m "add a README.md"
[master (root-commit) 9d7df1d] add a README.md
1 file changed, 1 insertion(+)
create mode 100644 README.md
[root@localhost example01]# git push
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 240 bytes | 240.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Username for 'http://192.168.60.137:3000': user01
Password for 'http://user01@192.168.60.137:3000':
To http://192.168.60.137:3000/user01/example01.git
* [new branch] master -> master
远程仓库中可以看到上传成功。
总结
部署Gogs的方式还有可以使用Docker、Vagrant、基于 Kubernetes 的 Helm Charts等方式安装。