Windowsサービスとして登録されたゴグ

前提

動作バージョン:gogs_0.12.1_windows_amd64

前提

GogsをWindowsサービスとして実行するには、次の2つの条件を満たす必要があります。

  1. minwinsvc[ビルド]タブを使用して、組み込みのWindowsサポートを取得します。
  2. 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

img

[詳細]タブ:

  • 表示名: Gogs
  • 説明: A painless self-hosted Git service.
  • スタートアップの種類: Automatic (Delayed Start)

サービスが早期起動時間に影響を与えないように、遅延開始を選択しことに注意してくださいゴグは、遅延のないサービスの2分後に開始されます。

img

I / Oタブ:

  • 出力(stdout): C:\gogs\log\gogs-nssm.txt
  • エラー(stderr): C:\gogs\log\gogs-nssm.txt

これにより、コマンドラインコンソールでGogsから通常受信するすべてのテキスト出力がキャプチャされ、代わりにそのファイルに記録されます。

img

ファイルローテーションタブ:

  • 小切手: Rotate files
  • ローテーションを以下よりも大きいファイルに制限します。 1000000 bytes

img

[環境]タブ:

  • 環境変数: PATH=%PATH%;C:\gogs;C:\Program Files (x86)\Git\bin

これは、実行時にgogs.exegit.exe両方ともGogsサービスのパス変数に含まれることを保証します。

img

「サービスのインストール」をクリックすると、成功したことを確認できます。

失敗した場合は、起動したコマンドラインコンソールに戻ってエラーメッセージを確認してください。成功したら、コマンドラインに移動して次の手順を実行します。

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.

おすすめ

転載: blog.csdn.net/e891377/article/details/109284761