如何在 Windows 安裝 Gitea 源碼版控系統與 PostgreSQL 14 資料庫
source link: https://blog.miniasp.com/post/2022/02/01/Install-PostgreSQL-and-Gitea-on-Windows
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
如何在 Windows 安裝 Gitea 源碼版控系統與 PostgreSQL 14 資料庫
Gitea 是一套功能相當完整卻又非常輕量的 Git 源碼版控與議題追蹤系統,我在這幾年也幫好幾家公司安裝過,基本上在 Windows 上面安裝 Gitea 的過程十分容易,只要幾個命令就可以安裝到好,但是若真的要一次安裝到好,其實還是有一些門檻,畢竟網路上的資料太多太亂,這篇文章我將分享我的安裝過程,基本上照著做應該都可以順利的安裝到好。
以下命令皆以系統管理員身份執行 Windows PowerShell 命令視窗。
-
安裝 Chocolatey 套件管理器
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
-
安裝 Git for Windows 命令列工具
安裝 Gitea 之前,請務必事先安裝 Git 命令列工具!
choco install git -y
-
安裝 PostgreSQL 資料庫
以下命令會自動安裝好 PostgreSQL 14 資料庫,並自動註冊名為 postgresql-x64-14 - PostgreSQL Server 14 (
postgresql-x64-14
) 的 Windows 服務。除此之外,這個版本也會連帶安裝 pgAdmin 資料庫管理工具!choco install postgresql --version=14.1.1 --params '/Password:8ws9NVXS7s69' --params-global -y
以上命令的
8ws9NVXS7s69
是 PostgreSQL 資料庫的預設管理者密碼,預設使用者名稱為postgres
!安裝完畢請關閉 PowerShell 視窗之後重新開啟!
如果無法透過 Chocolatey 進行安裝,請到 PostgreSQL: Windows installers 下載 postgresql-14.1-1-windows-x64.exe 安裝檔,並執行以下命令進行 Silent 安裝:
postgresql-14.1-1-windows-x64.exe ` --mode "unattended" ` --unattendedmodeui "none" ` --superaccount "postgres" ` --superpassword "8ws9NVXS7s69" ` --enable_acledit 1 ` --install_runtimes 0 ` --serverport 5432 ` --debugtrace postgresql-install.log
-
測試連接 PostgreSQL 資料庫,確認帳號密碼都可以正確連線
$env:PGPASSWORD='8ws9NVXS7s69'; '\conninfo' | psql -Upostgres
請確認看到以下訊息才算安裝成功!
You are connected to database "postgres" as user "postgres" on host "localhost" (address "::1") at port "5432".
-
建立 Gitea 專用的資料庫
# 這是為了讓 psql 可以在執行時免輸入密碼 $env:PGPASSWORD='8ws9NVXS7s69' # 這個是專門給 Gitea 使用的資料庫使用者帳號密碼 $GiteaDbPassword = 'FfW75FW3raWg' "CREATE ROLE gitea WITH LOGIN PASSWORD '${GiteaDbPassword}';" | psql -Upostgres # 建立名為 gitea 的資料庫 "CREATE DATABASE gitea WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';" | psql -Upostgres
-
下載 Gitea 主程式
Gitea 整套系統只有一個約 140 MiB 的單一執行檔而已,完全免安裝,直接下載執行檔就可以執行!
請下載 Current Release 版本,假設我們選擇安裝 Gitea 1.16.0 版本,你可以使用以下命令下載 Gitea 主程式:
mkdir C:\Gitea Invoke-WebRequest -Uri https://dl.gitea.io/gitea/1.16.0/gitea-1.16.0-windows-4.0-amd64.exe -OutFile C:\Gitea\gitea.exe
下載路徑: https://dl.gitea.io/gitea
-
啟動 Gitea 伺服器
C:\Gitea\gitea.exe
第一次啟動會喚醒 Windows Security Alert 視窗,請務必按下 Allow access 按鈕,否則服務會連不上!
開啟瀏覽器並連到 http://localhost:3000/ 網址,並開啟 Initial Configuration 初始化設定頁面!
-
初始化 Gitea 設定 (Initial Configuration)
- Database Type:
PostgreSQL
- Host:
127.0.0.1:5432
- Username:
gitea
- Password:
FfW75FW3raWg
- Database Name:
gitea
- Gitea HTTP Listen Port:
80
- Gitea Base URL:
http://gitea.localhost/
- Server and Third-Party Service Settings
- 建議勾選 Enable Local Mode
- 取消勾選 Enable OpenID Sign-in
- 建議勾選 Disable Self-Registration
- 取消勾選 Allow Creation of Organizations by Default
- 設定欄位 Hidden Email Domain 為你公司的 E-mail 域名
- Administrator Account Settings
- 請設定預設 Gitea 管理者名稱與密碼
所有 Chromium-based 瀏覽器預設會將所有
*.localhost
域名自動導向127.0.0.1
本機 IP 位址,所以你在本機可以不用特別調整 DNS 或hosts
設定!按下 Install Gitea 按鈕之後,完整的 Gitea 設定檔會儲存在
C:/Gitea/custom/conf/app.ini
檔案中,瀏覽器會自動開啟 http://gitea.localhost 網站,你只要使用上述設定的預設 Gitea 管理者名稱與密碼登入即可!接著請回到 Windows PowerShell 視窗按下
Ctrl+C
停止Gitea.exe
執行。 - Database Type:
-
設定 Gitea 支援 HTTPS 與 SSH 安全加密連線
假設你的對外域名是
gitea.localhost
的話,可以使用Gitea.exe
快速幫我們建立 TLS/SSL 自簽憑證。以下命令會在
C:\Gitea\custom
目錄下自動產生cert.pem
(憑證) 與key.pem
(金鑰):cd C:\Gitea\custom; C:\Gitea\gitea.exe cert --host gitea.localhost --ca
以下命令會將
cert.pem
註冊到「受信任的根憑證授權單位」的憑證儲存區,讓你的本機電腦(包含瀏覽器)可以信任這張憑證:certutil -addstore -enterprise Root cert.pem
編輯
C:/Gitea/custom/conf/app.ini
設定檔,並調整[server]
區段,合併以下設定:[server] ROOT_URL = https://gitea.localhost/ HTTP_PORT = 443 PROTOCOL = https CERT_FILE = cert.pem KEY_FILE = key.pem REDIRECT_OTHER_PORT = true PORT_TO_REDIRECT = 80 START_SSH_SERVER = true BUILTIN_SSH_SERVER_USER = git
相關設定請參見 Gitea Config Cheat Sheet 文件。
-
修復 Gitea 內建的 OpenSSH Server 無法支援 RSA 演算法的問題
目前 Gitea 1.16 版還有個 RSA public keys cannot authenticate against internal SSH if the client has a recent ssh version (which disables ssh-rsa algorithm) #17798 問題尚待解決,所以如果你的 SSH 用戶端使用了太新的 SSH 版本,可能會有無法透過 SSH 連上 Gitea 的問題。
目前暫時的解決方案是在用戶端建立一個
~/.ssh/config
檔案,並放置以下內容:Host localhost HostkeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa
-
將 Gitea 註冊為 Windows 服務
首先你必須先查出目前的電腦名稱:
$env:COMPUTERNAME
然後再修改
C:/Gitea/custom/conf/app.ini
設定檔,務必將RUN_USER
修改為電腦名稱
+$
這樣的格式(這是電腦帳戶的格式):RUN_USER = COMPUTERNAME$
預設
C:/Gitea/custom/conf/app.ini
設定檔將所有 Log 輸出到 Console,如果我們要跑在 Windows 服務下,你必須修改[log]
區段的設定,將所有 Log 改儲存到C:/Gitea/log/gitea.log
檔案中。完整設定請參見 Advanced: Logging Configuration 說明。[log] MODE = file LEVEL = info ROOT_PATH = C:/Gitea/log FILE_NAME = %(ROOT_PATH)/gitea.log ROUTER = console
最後直接利用
sc.exe
自動註冊並啟動Gitea
的 Windows 服務sc.exe create gitea start= auto binPath= '"C:\gitea\gitea.exe" web --config "C:\gitea\custom\conf\app.ini"' sc.exe start gitea
設定 Git 用戶端工具信任 Gitea 的自簽憑證
由於 Git for Windows 自己有一份 CA 清單,跟 Windows 憑證儲存區的 CA 憑證是分開的,因此使用自簽憑證架設 Gitea 的話,預設所有使用者都將無法成功利用 git clone
複製專案回去,你必須請每個人都使用以下步驟進行設定,就可以順利透過 Git 連上 Gitea 下載原始碼。
-
先將 Git 預設安裝的 CA 清單加入到個人的家目錄中,並修改 Git 設定使用自訂的路徑
$CABundlePath=$(git config --system http.sslCAInfo) Copy-Item -Path $CABundlePath -Destination "$env:USERPROFILE\ca-bundle.crt" git config --global http.sslCAInfo "$env:USERPROFILE\ca-bundle.crt"
注意:千萬不要關閉
http.sslVerify
設定,這會大幅降低 Git 連線的安全性!🔥 -
將 Gitea 安裝的伺服器自簽憑證加入到
ca-bundle.crt
檔案中Get-Content C:/Gitea/custom/cert.pem | Out-File -Append -FilePath "$env:USERPROFILE\ca-bundle.crt" -Encoding ascii
解除安裝 Gitea 與 PostgreSQL
-
停止並刪除 Windows 服務
sc.exe stop gitea sc.exe delete gitea
-
解除安裝 PostgreSQL 資料庫
cuninst postgresql --force-dependencies -y
-
移除 Gitea 安裝目錄
CD C:\; Remove-Item C:\Gitea\ -Recurse -Force
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK