在之前【自建git服务实现hexo博客部署】这篇博文中提到了如何自建git服务远程仓库。这种方式需要在远程端输入命令来创建仓库和配置,比较麻烦,更希望可以搭建一个像github一样的web环境来方便地进行管理仓库以及配置。
突然想到chino把TIS外服的白名单放在自建的git服务下托管,每个部落的管理即使不懂得git也可以在网页上管理各自的白名单。一看原来是用Gogs搭建的
上网搜了一下还有很多人推荐Gitea,gitea是从Gogs源码的基础上开发的,听说使用起来也很不错,而且维护更新也更频繁,于是我就选择了Gitea
官方也是很有趣,官网上写着 「Git with a cup of tea」,这大概也是gitea名字的含义吧。
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证
先来看一下我部署好的gitea的首页界面
安装MySQL数据库
Gitea需要有数据库,支持postgresql、mysql、sqlite,那我这里还是选择MySQL。我们选择安装软件源,用包管理安装
下载软件源
首先要下载软件源,去MySQL的官网下载站点下载软件源,我这里用的是CentOS,所以我使用Yum Repository
选择相应系统版本的软件源下载,然后点击右侧的小感叹号(红框框出),在下面会有链接跳转到用该软件源安装的quick guide(指南),里面会详细的讲解如何使用软件源安装mysql
由于我这里使用的yum,我在下面也简单的描述一下用yum软件源安装的过程,其他的譬如apt可以看指南步骤安装
1 | sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm |
1 | yum repolist all | grep mysql |
1 | sudo yum-config-manager --disable mysql80-community |
1 | yum repolist enabled | grep mysql |
1 | sudo yum install mysql-community-server |
1 | sudo service mysqld start |
1 | grep 'temporary password' /var/log/mysqld.log |
1 | alter user 'root'@'localhost' identified by 'your-new-passwd'; |
假如更新密码时遇到了ERROR 1819 (HY000): Your password does not satisfy the current policy requirements的错误提示
可以看一下这篇文章的解决方法
安装Gitea前的准备
创建git用户(组)
1 | groupadd git |
上面命令创建了一个git用户并加入了git用户组(并且为了安全禁止使用shell登录,这个创建用户后也可以在/etc/passwd文件里修改),我们接下来就用这个git用户运行gitea程序。
当然这一步不做也可以,不用git用户的话用当前用户或者root用户也可以,只是在配置gitea的时候要注意一下
创建gitea数据库
使用下面的sql代码创建gitea数据库
注意将示例代码中的gitea、gitea_user、gitea_password替换成实际的内容
1 | create database gitea DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; |
启动并配置Gitea
启动Gitea与安装配置
第一次启动gitea
1 | chmod +x gitea |
web默认端口在3000,打开gitea页面之后,随便点击界面上的按钮(注册,登录之类的),或者在地址后加上/install,会跳转到『初始配置』页面进行安装前的配置,如下图:
这里的配置按照自己的实际情况来就可以了,配置完之后安装即可
配置之后也是可以更改的,gitea的配置文件在gitea/custom/conf/app.ini
具体的配置项可以去官方文档查看,也可以在本文的参考文章里的文章里查看
创建gitea service来启动Gitea
这里配置的是systemctl命令的系统服务。关于linux的系统服务管理相关,我在这篇博文中提过,建议先去了解一下。
由于我们创建的git账户无法使用shell登录,不好直接用git用户启动gitea,我们选择创建一个服务来启动关闭gitea。下面的创建服务的位置要根据你自己系统的service文件的实际位置改变,我这里是centos,所以在/etc目录下
1 | vim /etc/systemd/system/gitea.service #创建gitea.service |
下面是一份示例,可以根据实际情况修改
1 | [Unit] |
之后就可以通过service gitea start,service gitea stop,service gitea status
或者systemctl start gitea,systemctl stop gitea,systemctl status gitea来开关和查看状态了
Nginx反向代理设置
如果需要用nginx反向代理的话。
这次我贴出一份完整的我的nginx配置(当然域名和证书路径还是假的啦)
我用了ssl证书,监听80重定向到443
1 | server { |