Git是什么就不多赘述,原先个人项目就是直接托管到github上,相对来说稳定又比较方便。  

现在公司原有代码管理方式相对比较局限,所以考虑再搭建一个单独的Git服务器来处理。看了挺多Git服务器的选型,一开始考虑的是gitlab,但是我们开发团队不大,有基础的版本管理功能就能满足需求,所以选用了轻量级的gitea。  

当然了,gitlab对服务器要求比较高才是决定性因素。  

 

---

 

## 基础环境

 

### 基础环境准备

 

我用的是 windows server 的服务器来部署,所以本文全文都只讲述window上的搭建,如果有其他系统的需要,可以自行参照官方文档  

 

系统要求:如果用于团队项目,建议使用 2 核 CPU 及 1GB 内存  

> 官方文档说是一个廉价的树莓派也能支持运行,但是做长期服务的话,还是用稍微好一点点的配置比较稳定  

> 毕竟,能用,和好用,是两码事  

 

数据库支持:所有下载均包括 SQLite, MySQL 和 PostgreSQL 的支持,同时所有资源均已嵌入到可执行程序中  

> SQLite是最方便的,因为不用再单独安装软件,直接启用就可以,但是有看到一些文章说是用量比较大以后性能堪忧,emmm,长远考虑还是不图这一下方便了  

> PostgreSQL,没了解过,不予置评  

> 综上,选用了mysql  

 

gitbash:用来做Git服务器的,这个应该是必须的基础环境了文档没看到gitea有没有内置,但是装一个肯定是没错的  

> Git。。每台电脑都有装,但是我平时用的话很少直接用命令行操作,vs和vscode内建的简单git操作对我来说就够了  

 

[gitea二进制文件下载地址](https://dl.gitea.io/gitea)  

[mysql下载地址](https://dev.mysql.com/downloads/mysql/)(直接就放了官方网址了,我电脑上有就直接用了5.7.17的包)  

[Git下载地址](https://git-scm.com/downloads)  

 

### 基础环境安装

 

全部直接下一步,有特别需要的话自行调整即可  

先后顺序也不重要,都有装就行  

此处略  

> 当然了,mysql的root账号和密码是要记住的)手动狗头  

 

## 起航

 

### 注册为Windows服务

 

软件本体直接双击exe运行的话,会用命令行窗口的形式运行,比较容易出现误触和误关闭的情况,所以建议用官方提供的方法换成Windows服务的形式来运行  

需要发布到互联网并在外网访问的话,需要打开防火墙的3000端口(默认是3000端口,端口配置可再配置文件里自行更改)  

 

以下为官方文档原文:  

要注册为Windows服务,首先以Administrator身份运行 ```cmd```,然后执行以下命令:  

 

sc create gitea start= auto binPath= "\"C:\gitea\gitea.exe\" web --config \"C:\gitea\custom\conf\app.ini\""

 别忘了将 ```C:\gitea``` 替换成你的 Gitea 安装目录。  

之后在控制面板打开 ```Windows Services```,搜索 ```gitea```,右键选择 ```Run```。在浏览器打开 ```http://localhost:3000``` 就可以访问了。(如果你修改了端口,请访问对应的端口,3000是默认端口)。  

 

从Windows服务中删除  

以Administrator身份运行 ```cmd```,然后执行以下命令:  

 

sc delete gitea
 
### 平台初始化

把服务器的管理员名字或者其他有权限的用户名填进去,mysql的账号密码填进去,基础信息设置一下就好了,这些都能在配置文件里再更改,问题不大  

填完以后稍微等一下,后台进度走完以后就可以  

> 要注意的是涉及到地址的,都要填其他电脑访问服务器的地址,有域名的话最好填域名,没有的话,简单的把localhost换成IP也可以,保证都能访问就行  

> 这里填的配置文件里也能改,不确定或者先调试的话,可以先用localhost代替  

 

仓库根目录授权  

> 涉及到web发布,建议将储存仓库的根目录授予everyone完全控制权限,这样可以解决很多奇奇怪怪的问题  

 

### 创建项目

 

直接点网页右上角加号,然后创建新项目即可,输入信息以后就可以直接用惹  

有直接提供一些```.gitignore```模板和授权许可模板,直接选用即可  

其他部分就是正常的git操作流程  

需要多人♂协作的话,在```仓库设置 - 管理协作者```里搜索用户名添加到名单里并授权即可  

 

## 避坑指南

 

上面的步骤应该都是很顺利的,一直到克隆项目到本地都是很正常的  

但是在push项目到服务器上的时候,emmm,容易出问题,比如

 

error: RPC failed; result=22, HTTP code = 401
    fatal: The remote end hung up unexpectedly
    fatal: The remote end hung up unexpectedly

这就是我本人没错了,从Stack Overflow查到同样的问题,问题定位到Windows凭据出错  

后面排查发现可能是因为我电脑之前用过其他git服务器,所以凭据有点错乱,把git凭据全部删掉以后重新push,要输入凭据的时候输入正确的用户名和密码,再尝试就可以正常推送了  

修改Windows凭据的方法见参考资料  

 

## 参考资料

 

[Github项目地址](https://github.com/go-gitea/gitea)  

[官方中文文档](https://docs.gitea.io/zh-cn/)  

[Git - error: RPC failed; result=22, HTTP code = 401 fatal: The remote end hung up unexpectedly - Stack Overflow](https://stackoverflow.com/questions/12544142/git-error-rpc-failed-result-22-http-code-401-fatal-the-remote-end-hung-u)  

[访问凭据管理器](https://support.microsoft.com/zh-cn/help/4026814/windows-accessing-credential-manager)  

[gitea二进制文件下载地址](https://dl.gitea.io/gitea)  

[mysql下载地址](https://dev.mysql.com/downloads/mysql/)  

[Git下载地址](https://git-scm.com/downloads)