問題タブ [upstart]
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.
node.js - node.js メイン プロセスは ABRT シグナルによって強制終了されましたが、process.on("SIGABRT",...) によってキャッチされませんでした
upstart を使用してデーモンを起動し、node.js (express と connect-redis を使用) http および https サーバー (同じ node .js ファイル内) を実行しています。
http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/
起動時はすべて問題なく、すべてのアプリ機能が期待どおりに動作しているように見えますが、一貫して、さまざまな期間 (数時間後、場合によっては 1 日後) の後、デーモン プロセスが強制終了され、私が持っている唯一のログが
デーモン.ログ:
myserver init: myupstartscript メイン プロセス (3410) が ABRT シグナルによって強制終了されました
ノードjsファイルに、次を配置しました:
どれもイベントをキャッチしません。
イベントをシミュレートする方法がわかりません。使ってみたところ
my process.on('SIGABRT',..) はそれらをキャッチします。
私が気づいた他のこと:
- https サーバーなしでサービスを実行すると、クラッシュは発生しません。
- 私の他のログに基づくと、クラッシュはユーザーがトリガーしたイベントによるものではありません
- 私が依存している他のアプリ固有のサービス (redis-server、mongod) は、イベントに関連しているようには見えず、通常どおりサービスを提供し続けます。
- クラッシュ時に再生成するように upstart スクリプトを設定しました。
それを追跡する方法について何か助けはありますか?
私のセットアップ: Linux iLV1 2.6.35.4-rscloud #8 SMP Mon Sep 20 15:54:33 UTC 2010 x86_64 GNU/Linux node v0.5.11-pre
ありがとう。
node.js - upstart と Procfile を使用して node.js アプリを実行する
node.js アプリケーションがあります。
次の内容の Procfile を作成しました。
正しいかどうかはわかりませんが、ルビー宝石の職長で実行してみました。
何も起こりません。プロセスは実行されません。
これを実行する他の方法がある場合は、私がそれを正しく行っているかどうかについてコメントしてください。これは私のローカルです。私が最終的にやりたいことは、最終的に本番環境にデプロイされたときに、upstart を使用してこれをエクスポートすることです。
nginx - Foreman が NGINX で動作しない
Foreman (バージョン 0.31.0) を使用してアプリケーションのプロセスを管理しようとしていますが、nginx (nginx/1.0.10 + Phusion Passenger 3.0.11) ではうまくいきません。
私のProcfileからの関連行は次のとおりです。
アプリを起動すると、Foreman は nginx が起動し、すぐに終了したことを報告します。
ただし、フォアマンが別の方法で報告しているにもかかわらず、 nginx は実際には実行されています。
同様に、Upstart にエクスポートする場合:
そして実行するsudo start my_app
と、nginxが正常に起動します。ただし、sudo stop my_app
nginx は停止しません。走り続けています。
nginx を Foreman と連携させるコツはありますか?
注: Foremanでこの問題を見つけましたが、関連しているのかどうか疑問に思っています。
mount - 「バインド」ファイルシステムがその親ファイルシステムの後にマウントされるようにするにはどうすればよいですか?
最近、いくつかのディレクトリをファイルシステム ツリーの別の場所に再バインドできるように、いくつかのエントリを fstab に追加しました。
ただし、/mnt/smb/foo は (Samba サーバー上の) SMB ファイルシステムであり、fstab の前に次のような行があります。
(明らかに、これらの行は匿名化されています)
問題は、起動時に「The disc drive for /home/mishagale/sourcecode/bar is not ready yet or not present
.」というエラーが発生することです。を押してマウントをスキップするS
と、システムは正常に起動しますが、問題のあるマウントポイントを手動でマウントする必要があります。
Ubuntuが正常にマウントさbar
れるまでマウントを試行しないように指示する方法はありますか? foo
これはupstartで可能になるはずですが、どうすればよいかわかりません。
noauto
オプションをオンにして、後で実行するようにマウントするスクリプトを設定することもできますが(今のところ)bar
、これは私にとっては面倒なことのように思えます.Upstartでそれを行う「適切な」方法を学ぶことに興味があります. .
ubuntu - アップスタートはデーモンを再生成しません
daemon() 呼び出しを使用する C で書かれたデーモンがあります。
予期せず失敗した場合に、これを復活させたいと思います。
Ubuntu 8.04でかなり古いバージョンのupstart 0.3.9を使用しています。
次のファイル (/etc/event.d/my-daemon) を作成しました。
状態:
始める:
期待どおりに実行すると表示ps aux | grep my-daemon
されます。kill -9
次に、リスポーンすることを期待して殺しますが、再発行ps aux
してもその後は何も表示されません。私status my-daemon
が得ること:
何か案は?
ubuntu - umask を無視した Upstart `unicorn`
upstart v1.4
アプリケーションサーバーを起動するために使用していますunicorn
.
構成ファイルは次のupstart
ようになります。
少なくともディレクトリに対して0774
は、プロセスが で実行されることが不可欠です。ug+rwxo+r
ユーザーとグループは、nginx サーバー、アップロード、スタッフのログインなどで共有されます。
ディレクトリが間違った権限で作成されていることがわかりました。
私の知る限り、私のアプリケーションではこれを引き起こしているものは何もありません。
プロセスにアタッチgdb
して を呼び出すcall umask(0)
と、有効な umask は75
、または になり0o113
ます。
gdb
セッションは次のとおりです。
の umask は、113
に対して作成されたアクセス許可を説明します664
。これは、私が見ているように見えます。
ここで私は何を間違っていますか? 新興企業は私のスタンザを無視していますか? スタンザを003
ではなくとして定義する必要があり0003
ますか? 私のgdb
セッションは機能しており、%o
printf()
構文は正しいですか?
ruby-on-rails - ユニコーンと新興企業
UbuntuボックスでユニコーンWebサーバーを起動(および維持)するためのupstart構成ファイルを作成するのに苦労しています。
respawn
とexpect
パラメータをどのように設定すればよいですか? respawn
有効にすると、プロセスは継続的に再起動されます (その上で、PID が継続的に変化し、古いものがゾンビになっていることがわかります) 。ディレクティブを削除すると、プロセスが終了してもプロセスは再起動されません。
成り上がりのドキュメンテーションによると、expect パラメータが重要である可能性があります。ユニコーンのフォークに関する動作は何ですか? どんな手掛かり?
node.js - Node.jsアプリケーションの環境変数(NODE_ENVなど)を設定しないUpstartenvスタンザ
次のようなサーバー用のUpstartスクリプトがあります。
ただし、アプリはNODE_ENVが本番環境に設定されていることを認識しません。実際、アプリ内でconsole.log(process.env)を実行すると、NODE_ENVまたはCUSTOMが表示されません。何が起こっているのかアイデアはありますか?
ちなみに、NODE_ENV=本番ノードapp.jsは問題なく動作します。
ruby - Ruby以外のファイルをgemのどこに置くのですか?
RubygemにUpstart設定ファイルを入れたいです。これが私の現在の最良の推測です
一般に、構成ファイルやその他の種類のスクリプトはgemのどこに配置されますか?
更新:例のパスをからに変更しUpstart/rt_watchdog.conf
ましlib/upstart/rt_watchdog.conf
た。これは、今のところ使用することにしたものですが、それでも気分が良くありません。
ubuntu - monit でプロセスとファイルのチェックを組み合わせるには?
概要
Monit で複数のチェックを組み合わせるにはどうすればよいですか? プロセス アクティビティとファイル コンテンツ/タイムスタンプを確認したい。
長くて退屈な説明
Bukkit Minecraft サーバーを維持するための Monit デーモンに取り組んでいます。いくつかのチェックを行います。現時点では、次のコードがあります。
動作します...しかし遅いです。何か問題が発生した場合、サーバーが終了するまで 20 秒待たなければなりません。しかし、サーバーは時々リロード (構成の更新、メモリのクリーンアップなど) を行い、ほとんど遅延が発生しないため、そのタイムアウトが必要です。サーバーがないtimeout 20 seconds for 2 cycles
と、リロードするとすぐに終了します。
わかりました。実際に問題が発生した場合、サーバーが再起動するまで 20 秒待つのは問題ありません。しかし、ほとんどの場合 (何か問題が発生すると)、サーバー上のすべてのセキュリティ メカニズムが機能しなくなります。
そのため、サーバーが応答しない場合はすぐに再起動する方法を見つける必要がありますが、リロードするときに少し時間がかかります。
私はこのアプローチを取っています: サーバーは、コマンド (サーバーのステータスを確認するために使用するリロードや API 呼び出しを含む) が発行されると、ログファイルに何かを書き込みます。したがって、ログファイルのタイムスタンプは最後のコマンドのタイムスタンプです。リロード中、ファイルには何も書き込まれません。そのため、単純なタイムスタンプ チェックでリロードを検出でき、サーバーが現在リロードしている場合にのみ 20 秒を与えます。