問題タブ [starman]
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.
perl - Catalyst/Plack/Starman で nginx を使用する理由
Plack/Starman を使用して小さな Catalyst Web アプリをデプロイしようとしています。すべてのドキュメントは、これをnginxと組み合わせて使用したいと示唆しているようです。これにはどのような利点がありますか? ポート 80 で直接 Starman を使用しないのはなぜですか?
perl - uri_for にはリダイレクトのポート番号が含まれます
nginx を静的ファイルのフロントエンド Web プロキシとして使用し、バックエンド Web サーバーに Starman を使用して、Catalyst アプリケーションを実装しようとしています。(私は Apache と FastCGI を使用でき、それは問題なく動作しますが、PSGI / Plack と Starman のすべてを解決したいと本当に思っています)
Starman は正常に起動し、 で私のリクエストを問題なく処理できますhttp://localhost:5000
。フロントエンド プロキシとして使用するために nginx を起動すると、URL が醜くなり、$c->uri_for
メソッドを使用するたびにポート番号 (5000) が乱れます。
例 :
いくつかのログが作成されているので、何が設定されているかX-Forwarded-Host
を確認できます。X-Forwarded-For
通常のリクエストの場合、(nginx からの) 値が設定されていますが、$c->uri_for
メソッドが使用されるときはいつでも、それらの値は存在しません。
他の誰かがこの問題を抱えていますか?
nginx または Catalyst conf の設定で他に何か不足していますか?
ありがとう!
nginx 構成:
これは同じ物理サーバー上で実行されますが、MyApp 構成で設定しました:
バージョン:
perl - Nginx、Starman、Plack、Catalystを使用したアプリケーションのランタイムエラーはどこにありますか?
Dave RolskyのSilkiディストリビューションで見つけたデーモンスクリプトを使用して、Plack+Starmanを使用して開発マシンでCatalystアプリをサーバー化することに成功しました。
次に、スターマンサーバーにリバースプロキシするようにnginxを設定し、nginxが提供する静的ディレクトリのエイリアスを作成しました。ここまでは順調ですね。ただし、アプリケーションSTDERRがどこにログを記録するのか迷っています。それはnginxに到達していません(私はそれが理にかなっていると思います)が、Starmanがそれをどこに記録しているのかについての多くのドキュメントを見つけることができません-どこにでも。Plackのミドルウェアモジュールを確認しましたが、アクセスログのオプションしか表示されませんでした。
誰かが私を助けることができますか?
configuration - Starman (または他の PSGI サーバー) でディレクトリ エイリアスを構成する
私は、Apache httpd.conf で別のディレクトリにエイリアスを設定することに慣れています。たとえば、次のように動作します
次に<script src="/lib/jquery/plugin/funky.js"></script>
、アプリケーションパスに関係なく、などのパスを含めることができます。
Starman (および HTTP::Server::PSGI などの他の PSGI サーバー) を試していますが、エイリアスなどの構成パラメーターをディレクトリに設定する方法がわかりません。
これはできますか?どのように?
perl - Starman を使用した plackup での動的パッケージのロード
starman を使用して plackup で Web アプリを実行しており、ユーザーの要求に基づいてパッケージを動的に読み込んでインスタンス化しようとしています。「require $packageName;」を使用しています $packageName にパッケージの名前が含まれるパッケージをロードするには、名前が構成ファイルに保存されます。次に、すべてのクラスが基本クラスから継承され、一連の既知のメソッドが含まれているため、インスタンスで既知の一連のコマンドを実行します。
これは Apache では問題なく動作しますが、何らかの理由で、@INC にライブラリ パスが含まれていて、パッケージ名が lib パスの最後のディレクトリからの絶対パスであるにもかかわらず、plackup がパッケージを見つけることができないと言っています。つまり、パッケージ名は Base::My::Package になります。
誰でもこの問題が発生しますか? Starman 内の他のパスを更新する必要がありますか? -I フラグを指定して plackup を実行し、環境の PERL5LIB 変数を更新しています。'use lib /...'
メインアプリクラスでも試しましたが、どれも機能しません。
ありがとう
perl - プラック/スターマンの下で「告白」を呼び出す
Carp モジュールから 'confess' を呼び出す TryCatch ステートメントで実行されている Plack/Starman アプリケーションがあります。ただし、告白の出力が STDOUT に出力されていないことに気付きました。STDERR 出力を STDOUT '2>&1' にルーティングしようとしましたが、まだ何も表示されません。運が悪い可能性のあるエラーログファイルを検索しました。この印刷先は世界のどこですか?おそらく簡単な答えだと思います。ログファイルはどこにありますか? それが問題になる場合、私はUbuntuボックスで実行しています。
ありがとう
nginx - nginx/starman/dancer Web スタックの説明
私はしばらくの間 Web プログラミングを行っており、LAMP スタックに精通しています。nginx/starman/dancer スタックをいじってみることにしましたが、すべてのピースが互いにどのように関連しているかを高レベルから理解する方法について少し混乱しています。スタックのセットアップは、LAMP スタックのセットアップほど単純ではないように思えますが、それはおそらく、各要素がどのように関連しているかをよく理解していないためです。
nginx が果たしている役割 (軽量の Web サーバー/プロキシ) は理解していますが、starman が pgsi、plack、dancer とどのように関係しているかについては混乱しています。
これらの部分が互いにどのように関連しているか、およびスタックのセットアップを取得するためにそれぞれが必要な (または必要でない) 理由の概要を説明していただければ幸いです。ありがとう!
perl - starman リクエストを Apache にプロキシする方法は?
webapp には starman を使用しています。'/request'
Apache Web サーバーはポート 8080 でリッスンします。starman でこの Apache Web サーバーへのような要求を書き直したいと思います。午後を見つけようとしましたが、役立つ例はほとんど見つかりませんでした。
perl - スターマンとMovableType 5.2
MovableType 5.2 には組み込みの PSGI サポートがあり (メイン ディレクトリの mt.psgi を介して)、starman/plackup を使用してそれを利用しようとしています。
Starman w/ MT は起動しますが、mt-upgrade.cgi を実行すると、奇妙な Not Found が表示され、サイレント ハング & 失敗します。
スターマンの実行方法:
謎 1: 私のブラウザは index.html に対して "Not Found" を返しますが、mt-static と mt.cgi にはアクセスできます。
謎 2: リダイレクトにより、MT コードが実行されていると思います。しかし、さまざまな MT デバッグ オプションを試しても、starman ログにはほとんど何も表示されません。さらに悪いことに、mt-upgrade.cgi に到達したように見えますが、starman ログに次のメッセージが表示されて失敗します。
この非バッファリング メッセージは、情報を提供するものであり、通常のように見え、MT コードベースからのものです。
また、starman の直下で実行したところ、同じ結果が得られました。
アイデアや助けをいただければ幸いです。
システム/環境:
CPAN モジュール:
MT 構成:
perl - Starman が HUP を受信すると ZMQ ソケットがブロックされる
次のコードがあります。$pub->close
starman サーバーが HUP シグナルを受信したときにメソッドを呼び出したい。
- 子プロセスが終了したことをどのように知ることができますか?
- END {} ブロックを使用できますか? 私はこれを試しましたが、plackup が (編集後に) 再起動するとうまくいくようです。私はスターマンでこれを試しました。HUP シグナルを送信しましたが、子プロセスが再起動されません。
- HUP のシグナル ハンドラーをインストールする必要がありますか? それはどのように機能しますか?
子プロセスがブロックされないと、子が再起動する前にクリーンアップしたいと思います。
これは私が使用する .psgi ファイルです。