この記事の概要
Gitベースのソース管理ツールであるGiteaを、Windowsサービスとして登録、設置する。
用意するもの
Gitea
まずはじめにGiteaです。
公式文書でさまざまな方法が紹介されていますが、この記事ではビルド済みのgogit-windowsビルドというWindowsバイナリを使います。
ダウンロードエリアから最新版をダウンロードしてください。
この記事執筆時点ではgitea-1.22.2-gogit-windows-4.0-amd64.exeが対象ファイルです。
PortableGit
Giteaは単体では動作せず、別途GitのCLI一式が必要です。
Git for Windows - ReleasesからPortableGit版の最新をダウンロードします。
この記事執筆時点ではPortableGit-2.46.0-64-bit.7z.exeです。
自己解凍形式の実行ファイルになっていますが、7-zipなどの解凍ツールで解凍できるはずです。
ちなみに mingit
では利用できないです。
(たしかコマンドが不足しているとエラーが出たはず、詳細は失念)
WinSW
Windows Service Wrapperは、あらゆるをWindowsサービス化しちゃいます。
過去記事でも紹介しているので参考にしてください。
Giteaの公式文書にはGitea単体でサービス登録する方法も掲載されていますが、ちょっと小細工したいのであえて使います。
alpha版の3.0系を使います。
この記事執筆時点では、Releaseを見ると3.0.0-alpha11というのが出ているので、.net Framework 4.61版の実行ファイルをダウンロードします。
作業内容
今回は(ちょっと諸事情で)手作業での作業内容を説明します。
(普段はScoopのmanifestつくってガリガリ入れてしまうんですが、機会があれば別記事で)
各ファイルの展開・配置
前項で入手したファイル群を配置します。
「Gitea」と「WinSW3」には、それぞれ直下にリネームした実行ファイルを配置しましょう。
「PortableGit」フォルダには、PortableGitの実行ファイルを 7-zip等の解凍ツールで開き、展開して 配置します。
アーカイブには post-install.bat
というバッチが含まれていて、コマンド実行で自己解凍した場合は自動実行されてしまうようでした。
Giteaからの利用には関係なさそうで、実行したくないので。
Giteaとファイル名は展開イメージは以下のとおりです。
D:\app\Git
├─\Gitea
│ └─ gitea.exe
├─\WinSW3
│ └─ WinSW3.exe
└─\PortableGit
├─\bin
└─\cmd
...
Gitea設定ファイルの作成と配置
Giteaの設定は app.ini
というファイルに保存します。
慣例的に D:\app\Git\Gitea\custom\conf\app.ini
として配置することになっているようなので従いますが、任意の場所へ配置可能です。(後述)
まずは最低限、初回起動に含めたいパラメータだけ記載します。
[database]
DB_TYPE = sqlite3
PATH = D:/app/Git/Gitea/data/gitea.db
[repository]
ROOT = D:/app/Git/Gitea/repositories
[log]
ROOT_PATH = D:/app/Git/Gitea/log
[server]
PROTOCOL = http
HTTP_PORT = 2401
gitea.exeのコマンドライン起動
上記設定の確認も兼ねて、まずは gitea.exe
実行ファイルをコマンドプロンプトから起動しましょう。
D:\app\Git\Gitea\gitea.exe web --config D:\app\Git\Gitea\custom\conf\app.ini
上記例のとおり、設定ファイルの場所は引数で指定可能です。
Windowsファイアウォールの許可設定追加
Windows 11などのクライアントOSの場合など、ファイアウォールの受信規則が有効な場合、(許可設定の追加まで)外部から接続できないと思います。
Windowsファイアウオールのブロック時通知を有効にしているならば、起動時に以下のような画面が出て、許可するか確認してくれるはず。
許可できたら、タスクマネージャからプロセス指定killして、あらためてサービス起動する。
設定したURLへのアクセス
本記事ではポート2401を指定しているので、当該マシンの2401ポートへブラウザで接続します。
以下のような画面が開けば一安心。
個々の設定の説明は、すみませんが省きます。
最初の初期ユーザの登録も、この画面から。
画面最下部に、設定ファイルの保存先が記載されているので「Giteaをインストール」ボタンを押下すれば、設定ファイルが保存され、インストール完了です。
保存された設定の確認
あらためて app.ini
開くと、作成時からパラメータが多数増えているのが分かると思います。
また、画面上で設定可能なパラメータと、そうでないパラメータもあるはず。
(暗黙的に設定されるものとか)
指定可能なパラメータは公式文書も参考に。
サービス設定ファイルの作成
本記事のポイントといってもいいかもしれない。。
WinSW3によるサービス化のため、以下内容でサービス定義ファイルを作成します。
<service>
<id>Gitea</id>
<name>Gitea</name>
<description>a painless, self-hosted, all-in-one software development service.</description>
<env name="Path" value="D:\app\PortableGit\bin;%Path%" />
<workingdirectory>D:\app\Git\WinSW3\work</workingdirectory>
<executable>D:\app\Git\Gitea\gitea.exe</executable>
<arguments>web --config D:\app\Git\Gitea\custom\conf\app.ini</arguments>
<log mode="rotate" />
<onfailure action="restart" delay="300 sec" />
<logpath>D:\app\Git\Gitea\log</logpath>
</service>
<env>
要素に記載のとおり、コマンド検索パスにGitのbinフォルダ追加しています。
Giteaサービスの登録
C:\>winsw3 install Gitea.xml
Giteaサービスの起動
C:\>sc start Gitea
その他補足
データベースの保存先
Gitea設定ファイルの作成と配置 の項の記載例では、データベースはSQLite(ファイルベース)としています。
[database]
DB_TYPE = sqlite3
PATH = D:/app/Git/Gitea/data/gitea.db
リポジトリの保存先
同様に、記載例では以下のフォルダ配下に保存されます。
[repository]
ROOT = D:/app/Git/Gitea/repositories
ユーザまたは組織のフォルダが作成され、その下に各プロジェクトのBareリポジトリが作成されます。