本文使用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://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)