本文使用markdown编写,首发于我的知乎专栏
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://*.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)