前提
動作バージョン:gogs_0.12.1_windows_amd64
。
前提
GogsをWindowsサービスとして実行するには、次の2つの条件を満たす必要があります。
minwinsvc
[ビルド]タブを使用して、組み込みのWindowsサポートを取得します。minwinsvc
[ビルド]タブおよびサービスとして登録されているNSSMを使用しないでください。
サービスとして登録する前に、倉庫が保存されているルートディレクトリ([repository] ROOT
)を含む、対応するディレクトリへの読み取りおよび書き込み権限をGogsバイナリに付与する必要があります。
C:\Gogs\custom\conf\app.ini
対応する情報ファイルを変更します。
RUN_USER = COMPUTERNAME$
上記の構成で、Gogsの実行ユーザーをローカルシステムユーザーに設定します。COMPUTERNAME
コマンドecho %COMPUTERNAME%
の戻り値をUSER-PC
使用すると、コマンド値を取得できますRUN_USER = USER-PC$
。
[server]
DOMAIN = gogs
PROTOCOL = http
HTTP_ADDR = 127.0.1.1
HTTP_PORT = 80
OFFLINE_MODE = true
EXTERNAL_URL = http://gogs/
Gogsのリッスンポートをローカルインターフェイスサブネットの80に移動し、その仮想ホストが「gogs」ドメインであることをGogsHTTPdに通知します。これにより、ブラウジング時にポート番号を含める必要がなくなり、他のローカルホストサービスとの衝突を防ぐことができます。IPアドレスは127.0.0.2 - 127.254.254.254
、Gogsに固有である限り、範囲内の任意のものにすることができます。
そのネットワークルートを完了するには、管理者としてNotepad.exeを開き、以下を含めますC:\Windows\System32\drivers\etc\hosts
。
# Gogs local HTTPd
127.0.1.1 gogs
hostsファイルエントリは、「gogs」ドメインへのすべてのリクエストがローカルホストインターフェイスによってキャプチャされることを保証します。Webブラウザーでは、通常、gogs/
アドレスバーでそのルートをトリガーするのに十分です。
方法1:組み込み関数を使用する
管理者としてコマンドプロンプト(コマンドプロンプト)を開きます。次のコマンドを実行します
sc create gogs start= auto binPath= "\"C:\gogs\gogs.exe\" web --config \"C:\gogs\custom\conf\app.ini\""
それぞれの=
後にスペースがあることを確認してください。他のパラメータを追加してサービスをさらに変更するか、サービス管理コンソールで手動で変更するかを選択できます。
サービスを開始するには、次のコマンドを実行します
C:\> net start gogs
次の出力が表示されます。
The gogs service is starting.
The gogs service was started successfully.
##方法2:nssmを使用する
nssm.exeファイルを取得するには、コンピューター(32ビットまたは64ビット。Iainのzipファイルにパッケージ化されています)を使用して、%PATH%環境変数のディレクトリに配置する(または追加する)必要があります。管理者としてコマンドラインを開き、次のコマンドを実行してGogsをサービスとして構成します
管理者としてコマンドラインを開き、次のコマンドを実行してGogsをサービスとして構成します。
C:\>nssm install gogs
「NSSMサービスインストーラー」が表示されます。構成は次のとおりです。
[アプリケーション]タブ:
- 道:
C:\gogs\gogs.exe
- スタートアップディレクトリ:
C:\gogs
- 引数:
web
[詳細]タブ:
- 表示名:
Gogs
- 説明:
A painless self-hosted Git service.
- スタートアップの種類:
Automatic (Delayed Start)
サービスが早期起動時間に影響を与えないように、遅延開始を選択したことに注意してください。ゴグは、遅延のないサービスの2分後に開始されます。
I / Oタブ:
- 出力(stdout):
C:\gogs\log\gogs-nssm.txt
- エラー(stderr):
C:\gogs\log\gogs-nssm.txt
これにより、コマンドラインコンソールでGogsから通常受信するすべてのテキスト出力がキャプチャされ、代わりにそのファイルに記録されます。
ファイルローテーションタブ:
- 小切手:
Rotate files
- ローテーションを以下よりも大きいファイルに制限します。
1000000 bytes
[環境]タブ:
- 環境変数:
PATH=%PATH%;C:\gogs;C:\Program Files (x86)\Git\bin
これは、実行時にgogs.exe
とgit.exe
が両方ともGogsサービスのパス変数に含まれることを保証します。
「サービスのインストール」をクリックすると、成功したことを確認できます。
失敗した場合は、起動したコマンドラインコンソールに戻ってエラーメッセージを確認してください。成功したら、コマンドラインに移動して次の手順を実行します。
nssm start gogs
君は見るべきだ:
gogs: START: The operation completed successfully.
を開いて、これが正しいことを確認しC:\gogs\log\gogs-nssm.txt
ます。Gogsの起動手順が表示されます。末尾は次のとおりです。
timestamp [I] Run Mode: Production
timestamp [I] Listen: http://127.0.1.1:80
次に、Webブラウザをに向けhttp://gogs/
てログインします。
Gogsはサービスとして実行されており、問題が発生しない限り、手動で実行する必要はありません。Gogsサーバーがクラッシュした場合、NSSMはサービスの再起動を試みます。
app.ini
変更後に再起動する必要がある場合は、変更後に管理者コマンドラインに移動し、次の手順を実行します。
nssm restart gogs
設定の参照については、構成に関するチートシートを参照してくださいcustom\conf\app.ini
。
実際のロギングとエラー処理の例:
[log]
ROOT_PATH = C:\gogs\log
この行を書いている時点では、次のように出力されますC:\gogs\log\gogs-nssm.txt
。
timestamp [T] Custom path: C:/gogs/custom
timestamp [T] Log path: C:\gogs\log
timestamp [I] Gogs x.y.z
timestamp [log.go:294 Error()] [E] Fail to set logger(file): invalid character 'g' in string escape code
これはで期待されていたものC:\custom\conf\app.ini
です:
ROOT_PATH = C:/gogs/log
そして、これはnssm
それを解決する間の相互作用でした:
C:\>nssm restart gogs
gogs: STOP: The operation completed successfully.
gogs: Unexpected status SERVICE_PAUSED in response to START control.
C:\>nssm start gogs
gogs: START: An instance of the service is already running.
C:\>nssm stop gogs
gogs: STOP: The operation completed successfully.
C:\>nssm start gogs
gogs: Unexpected status SERVICE_PAUSED in response to START control.
C:\>nssm restart gogs
gogs: STOP: The operation completed successfully.
gogs: START: The operation completed successfully.