开源的 git 实现有很多,gitlab community 算是一种,但是对硬件要求有点高,这里我使用了开源的gogs,gogs 是用 golang 写的,足够轻量级。
一、环境
Ubuntu 18.04
数据库:MySQL>=5.7,PosgreSQL、MSSQL、TiDB
我选择了 MySQL。
1、 安装MySQL
MySQL的安装非常简单,首先更新包索引,然后安装mysql-server包,最后运行安全设置脚本。
sudo apt update
sudo apt install mysql-server
默认情况下APT包库只有最新版的MySQL,当前的MySQL版本是5.7。
2、配置MySQL
对于全新安装,需运行包含的安全设置脚本。该脚本改变一些诸如远程root登录和简单用户等不安全的默认选项。
运行安全脚本:
sudo mysql_secure_installation
3、调整用户认证和权限
sudo mysql
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
mysql authentication
在Ubuntu系统中MySQL 5.7及之后的版本,MySQL的root用户被默认设置成通过auth_socket插件进行认证,而不是通过密码。当前的root用户通过auth_socket插件的方式进行认证。
为了能够以root用户通过密码的方式连接MySQL,需要将其认证方式从 auth_socket 方式变更为mysql_native_password。
要将root用户设置为通过密码认证,运行如下ALTER USER命令。务必将密码设置为高强度的密码,需要注意的是该操作将改变您在步骤2中设置的密码。
sudo mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ab123456MML#';
然后运行 FLUSH PRIVILEGES, 这将让数据库系统重新加载授权表是变更生效:
FLUSH PRIVILEGES;
检查每个用户的授权方法,确认root用户不再使用auth_socket插件进行认证。
MYSQL密码认证
退出MySQL终端:exit
使用专用用户连接到MySQL更适合他们的工作流。要创建这样的用户,请再次打开mysql 终端:
sudo mysql
如果您启用的root用户的密码认证,您需要通过不同的命令登录MySQL终端。如上所述,将以常规用户权限运行MySQL客户端。只能通过认证以获得管理员权限。
mysql -u root -p
如下,创建一个新用户,并设置强密码:
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
然后,授予新用户合适的权限。例如,授予新用户访问数据库中所有表的权限,及添加、变更和移除用户的权限,通过如下命令即可:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
这时您不再需要运行FLUSH PRIVILEGES命令。只有通过 INSERT, UPDATE或者DELETE命令的方式变更授权表的时候才需要该命令。由于您创建了一个新用户,而不是改变一个已经存在的用户,因此FLUSH PRIVILEGES并不是必须要运行的。
二、下载和配置 gogs
1. # 创建一个git用户,专门用于运行该服务
2. sudo useradd git -s /bin/bash -m -d /home/GitServer
3. # 为了方便管理,切换到该目录
4. cd /home/GitServer
5. sudo passwd git
6. 输入:gitserver
7. # 切换到该用户
8. su git
9. # 下载二进制并解压缩
wget -c [GOGS_URI]/gogs_0.11.91_linux_amd64.zip
Github gogs仓库
1. unzip gogs_0.11.91_linux_amd64.zip
2. cd gogs
3. # 运行服务
4. ./gogs web
打开浏览器,http://服务器 IP:3000,会进入如下页面
gogs软件安装
此时如果你使用的是 MySQL5.7 以下版本,创建一个字符集是 utf-8 的数据库
CREATE DATABASE gogs DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
MySQL5.7 版本及以上直接创建就好了。
其中域名和应用 url 两项需要填写你的域名或 IP地址。
gogs配置文件在/home/GitServer/gogs/custom/conf/app.ini,可以安装gogs后再手动修改。
gogs web
之后第一个注册的用户会是管理员用户,不论是screen 还是 nohup 还是 supervisor 的。