問題タブ [win32-service-gem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1182 参照

ruby - Ruby: gem win32-service: 管理者権限でサービスを作成する

win32-serviceRuby (1.9.3-p429、MRI) を使用して Windows サービスを作成するために gem を使用しています。

このコードのスニペットは機能します。

私が抱えている問題は、サービスを管理者権限で実行する必要があることですが、このコード スニペットを呼び出すエンティティはローカル システム アカウントとして実行され、それがデフォルトの権限です。

サービス GUI (services.msc) を開き、サービスにアクセスして停止し、サービス (myservice) プロパティの [ログオン] タブで権限を上げ、管理者/adminpasswd をユーザー/パスワードとして使用できます。次に、十分な権限でサービスを実行します。

ただし、 [サービス] タブで使用したのとまったく同じ値 (コード スニペットの行のコメントを解除することによって) を呼び出しService.createて、:service_start_name設定しようとすると:password、機能しません。このサーバーは、Windows 2008r2 Datacenter Edition を実行している Amazon EC2 サーバーであり、私が知っている Windows ドメインの一部ではありません (私が開始したため)。

この Windows サービスを管理者権限で実行するには、他に何をする必要がありますか?

0 投票する
2 に答える
125 参照

ruby - Rubyのwin32-service gemのfailure_reset_periodオプションの意味

win32-service で新しいサービスを作成していますが、failure_reset_period の意味は何ですか?

他のオプション (failure_reboot_message、failure_command、failure_actions、failure_delay) と例についてもいくつかの言葉をいただければ幸いです。

前もって感謝します。

0 投票する
2 に答える
750 参照

sinatra - サービスとしてのsinatraアプリは動作を停止しますが、サービスのステータスは「実行中」と表示されます

win32-servicegemを使用してサービスとして実行するように設定された sinatra アプリがあります。アプリは正常に起動しますが、しばらくすると壊れます。ただし、サービスのステータスによると、サービスはまだ実行されていますが、外部またはコンピューター自体からアクセスできないようです。修正する唯一の方法は、サービスを停止して削除し、サービスを再インストールして起動することです.

アプリは通常、自己展開 (ビルド パイプラインのためですが、更新をプッシュした場合のみ) であり、chef によりインストールおよび実行されます。そのセットアップ方法は、chef サーバーがすべてのクックブックを 5 分ごとに実行することであり、それが壊れると思います何とか私のアプリですが、方法がわかりません。

どんな洞察も大歓迎です。

psコードを投稿していないことに気づきましたが、それは何が役立つかわからないためです。何を見る必要があるか教えてください。投稿します。

編集:シェフとは何の関係もないことがわかりました:

いくつかのロギングのおかげで、アプリが 5 秒間のヘルス ping (ワニスによって行われる) への応答を停止する前に約 57 分間実行されていたことがわかり、シェフの実行は 30 分ごとに発生します。 -無関係。

ただし、ステータスはまだ「実行中」であるため、停止しておらず、ログにはデーモンの実行を停止させるエラーが報告されていません。

編集:

ここに私のデーモンコードがあります:

編集:

アプリが 50 分前後で応答を停止し、ログ出力なし (例: 例外、サービスの停止など) をギブまたはテイクし、アプリのステータスが として応答することに気付きましたrunning。念のため、ボックスでシェフクライアントを無効にしましたが、アプリはまだ応答を停止しているため、100%シェフではありません.

編集:

また、実際にはログファイルに出力さService is runningれません。Service stopped

編集:私はそれをかなり絞り込みましたが、そうではないことを知っています:

  1. シェフ
  2. ソースコードの読み込みメカニズム
  3. 主な処理、つまりリクエストの処理、データベースからのデータのロードなどを行うアプリの部分 (同じ問題を抱えた 2 つのアプリがあり、原因は両方で同じものと関係があります)

この問題が発生せずに動作していた以前のバージョンの gem にロールバックしましたが、まだ動作しています。

アプリケーションのメインループを作成するために使用しているwin32-systemgemと、sinatraとの相互作用です。

アプリを登録するために使用しているコードは次のとおりです。

主なアプリケーション クラス:

アプリをデーモンとして実行するために使用しているコードを見てきました。

これを修正するには本当に助けが必要です。これを引き起こしている可能性のあるものと修正方法を確認するためのアイデアがまったくありません。

編集:まあ、もう1つ確認できました。それは私のコードでそれを引き起こしているものではありません。それでも停止しましたが、ローカル マシンで実行したままにしていたバージョンは停止しませんでした。サーバーが応答しなくなる原因は、サーバー上で実行されている何かです。

さらに編集:

それはまったく問題ではないことが判明しました、私はまだ何も得ていません

編集:

わかりました、嘘をつくことはできませんでしたので、戻って、system32デーモンクラスを使用せずにアプリをデーモンとして実行することができました. time) 、まあ、サービス gem なしで開始したので、まだハングしているので、他に何ができるのだろうかと思っています。シナトラがハングアップする原因は何ですか?

また、ping localhost返信があれば(0%ロス)でもcurlだと繋がらない。

編集:

Hello World アプリケーションになるまで体系的にすべてを取り除いた後、私の ruby​​ コードとはまったく関係がないと言っても過言ではありません。この時点で、私は:

  1. デーモンでコードをラップして実行するのではなく、ラックアップを使用してアプリをプロセスとして開始します (ただし、メイン スレッドを手動で強制終了する必要がありますが、アプリは引き続き実行されます)。
  2. ロギングをオフにしました
  3. コンパス/サスを取り除きました(他の誰かに明らかにそうしていたので、ぶら下がっているかもしれないと思っていました。それに、付属の機能を使用していないことに気付いたので、それを維持しても意味がありません)
  4. すべてのモジュールをコメントアウトし、次のようにしました。 get '/' do 'Hello World' end

結局、それはまだ死んでいて、この時点では純粋なシナトラの「ハローワールド」アプリでした。したがって、sinatraに何か問題があるか(他の人がこの問題を抱えていたのではないかと思います)、おそらくサーバーに何かが原因である可能性があります。

それを引き起こしている可能性のあるサーバー上のものはわかりません。しかし、少なくとも私はその解決に一歩近づきました。