实验室的服务器闲着没用,打一个git服务给同学们用,思来想去最终使用gogs搭建,gogs具有轻量级、易安装、跨平台的优点。
方法一:直接搭建
所需环境
- 系统:Ubuntu Server 18.04
- 数据库:MySQL
- 反向代理:nginx
- git
步骤
- 更新软件源
sudo apt-get update
- 添加一个系统用户git
sudo adduser git
- 给git添加sudo权限
sudo usermod -G sudo git
- 切换到git账户
su git
- 下载gogs 安装包
sudo wget -c https://dl.gogs.io/0.11.91/gogs_0.11.91_linux_amd64.tar.gz
- 解压安装包
sudo tar zxvf gogs_0.11.91_linux_amd64.tar.gz
- 进入mysql
SET GLOBAL storage_engine = 'InnoDB';
:设置默认存储引擎
CREATE DATABASE gogs CHARACTER SET utf8 COLLATE utf8_bin;
:创建数据库名称为gogs
CREATE USER 'root'@'localhost' IDENTIFIED BY '123456';
:创建用户名和密码
GRANT ALL PRIVILEGES ON gogs.* TO 'root'@'localhost';
:表示本机可以使用账户为root,密码为123456访问数据库gogs下所有表
FLUSH PRIVILEGES;
:更新权限
QUIT;
:退出命令行
注意:通过mysql --version查询mysql版本号,如果是5.0以上版本,则默认engine就是InnoDB。 - 修改gogs service配置文件
vim /home/git/gogs/scripts/init/debian/gogs
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Go Git Service"
NAME=gogs
SERVICEVERBOSE=yes
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
WORKINGDIR=/home/git/gogs #这个根据自己的目录修改
DAEMON=$WORKINGDIR/$NAME
DAEMON_ARGS="web"
USER=git #如果运行gogs不是用的这个用户,则需要修改为对应用户
注意:
- 如果是创建的git用户 则目录修改为/home/git/gogs.对应的USER修改为git
- 如果是在root用户下安装在/usr/local/gogs/下 则对应的目录为:/usr/local/gogs/gogs.对应的USER修改为root
- 切换回root用户
su ubuntu
- 复制gogs service配置到/etc/init.d/目录下
cp /home/git/gogs/scripts/init/debian/gogs /etc/init.d/
- 增加执行权限
sudo chmod +x /etc/init.d/gogs
- 复制gogs service到/etc/systemd/system/目录下
sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/
- 启动gogs服务
sudo service gogs start
- 通过浏览器访问gogs配置页面进行配置
http://localhost:3000/install,其中localhost需要换成服务器的ip,并且需要开放服务器3000端口。(如果有没有公网ip,只能设置为内网ip了)
在配置页面中需要修改域名为自己的域名。如果改错了或者需要更换,可以通过sudo vi /home/git/gogs/custom/conf/app.ini来修改配置。 - 修改 nginx 配置文件,添加反向代理
sudo vim /etc/nginx/sites-available/gogs
server {
server_name 服务器地址;
listen 80;
location /{
proxy_pass http://127.0.0.1:3000/;
proxy_redirect default;
}
}
这时便可以通过http://服务器地址来访问你的gogs了。
方法二:使用Docker
所需环境
- 系统:Ubuntu Server 18.04
- Docker
- mysql
-
获取镜像
docker pull gogs/gogs
-
创造一个本地目录
mkdir -p /var/gogs
-
开启服务
docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
-
启动服务
docker start gogs
-
创建数据库
CREATE DATABASE gogs CHARACTER SET utf8 COLLATE utf8_bin;
:创建数据库名称为gogs -
通过浏览器访问gogs配置页面进行配置
http://localhost:10080/
域名填写服务器的ip,注意各项信息不要填错。
- 注意:这里可能显示无法连接mysql数据库,原因是docker服务无法访问宿主机的mysql服务
设置一下mysql访问权限即可:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql>flush privileges;
// 其中各字符的含义:
// *.* 对任意数据库任意表有效
// "root" "password" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息
对比总结
经过对比,显而易见Docker安装gogs更简单。所以我选择使用Docker。
后续自定义
gogs的header和footer不支持自定义
添加自定义 CSS 文件
这里展示如何为您的 Gogs 实例添加自定义 CSS 文件,目录和文件名都是为了方便演示,您可以把文件放在任何能够通过网络访问的目录。
- 在
public/css
目录下创建一个名为custom.css
的文件 - 向文件中添加一些 CSS 规则
- 编辑
templates/inject/head.tmpl
文件并添加一行内容<link rel="stylesheet" href="/css/custom.css">
- 重启 Gogs
- 后续对自定义 CSS 文件的编辑不需要重启 Gogs
修改首页内容
首页源码位置 templates/home.tmpl
- 保留该文件的头部和尾部引用 注意保留:头:
{{template "base/head" .}}
,尾:{{template "base/footer" .}}
- 编辑自定义首页中间部分 templates/home.tmpl
- 重启 Gogs
配置文件
地址:/var/gogs/gogs/conf/app.ini
如需变更配置,可以修改其内容