問題タブ [plack]
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 - plackup (または starman) のメモリ使用量が増えるのはなぜですか?
この単純な PSGI アプリケーション (app.psgi) があります。
1000 回以上のリクエストがあり、メモリ使用量が増加しました。サーバーの起動方法に応じて、次のようになりました。
plackup
- メモリ使用量は最初の 3 つのリクエストで上昇し、次の 997 リクエストまで一定のままですplackup -r
- メモリ使用量が (リクエストごとではなく) ランダムに 4k 増加しています。starman
- 上記のように、メモリ使用量はランダムに 4k 増加しますが、速度は遅くなります
質問は:
- メモリ使用量が増えているのはなぜですか? リークはどこにあり、どのようにして一定のメモリ使用量を達成するのですか (特に starman で)。長期的にはメモリが不足したくないからです。(OK、たとえば --max-requests 100 を定義することは可能です)が、メモリ使用量の答えではありません。
- または- 私の例では何が間違っていますか?
誰かがこれもテストしたい場合は、フェッチ用のスクリプトを次に示します。
私の結果:
そう、
- なぜ
plackup
最初の 3 つのリクエストでレイズするのですか? plackup -r
- 4k の増加 (最後の行を参照) - 最初はもっと多いstarman
- 値上げもしますが、デフォルトでは 5 ワーカーで速度が遅くなります (3280->3912)
バージョン:
perl - 再起動せずにApacheにPSGIスクリプトをデプロイするにはどうすればよいですか?
Plack を使用して Apache2 で実行される PSGI スクリプトをデプロイしたいと考えています。Apache は次のように構成されています。
plackup でスクリプトをテストすると、--reload
パラメーターはファイルの更新を監視し.psgi
ます。実稼働環境では、パフォーマンス上の理由から、Apache と Plack が変更のたびにチェックして再起動しなくても問題ありませんが、再起動するように、Plack::Handler::Apache2
または PSGI スクリプトに新しいバージョンをデプロイするように明示的に指示するにはどうすればよいでしょうか?
Plack は定期的にいくつかの変更をチェックしているようですが、それがいつなのかはわかりません。script.psgi
また、複数のインスタンスを作成しているように見えるため、 when atのバージョンが異なる場合があります/mypath
。Apache を再起動したり、不明な時間待機したりすることなく、perl 応答ハンドラーを手動でフラッシュすると便利です。
perl - Plack アプリケーションはどのようにして複数のロガーにログを記録できますか?
Plack Middleware は、アプリケーションとは独立してロギング ターゲットを構成する場合などに非常に便利です。しかし、同時に複数のロガーを使用する方法が見つかりませんでした:
この構成では、「SimpleLogger」は「ConsoleLogger」によってミュートされますが、両方で同時にログを記録したいと考えています。
perl - プラック&テイントモード
perl の taint モードで Plack アプリケーション (ミドルウェア) を開発することは推奨されますか?
はいの場合、汚染されたモードでplackupおよび/またはStarmanを開始する方法は? シバンラインで簡単にできたシンプルなCGIスクリプトで。
perl -T /path/to/{plackup|starman}
仕事をしますか?または、ここに推奨される方法はありますか?それとも非推奨ですか?
Plack + Taint モードの組み合わせに関するアイデア、ポインタ、記事はありますか?
perl - 最新のperl-アプリケーションを実行する準備ができています-例による学習-何から?
私はModernperl(Moose、Plackなど)を学んでいます。多くのアドバイスで「例で学ぶ」を読むことができます。そこで、Modernperlで作成されたすぐに実行できるアプリケーションを探し始めました。
次のような多くのページを閲覧しました:
そしてもっとたくさん(perl.orgなど)-そして残念ながら-私はModernperlで書かれた「すぐに実行できる」アプリケーションを見つけられません。
Moose / Plack-CMSも、ShoppingCartも、Blogも、Webアプリケーションも見つかりません。それらが存在しないことを信じるのは難しいので、おそらく私は間違った場所を探しています。
最新のPerl(フレームワークだけでなく)で書かれた「すぐに実行できる」Webアプリケーションを教えてください。上記のリンクからすべてのアプリをチェックしましたが、Moose/Plackベースのアプリはありません。
すでに見つかった「最新の」アプリケーション
触媒ベース:
- MojoMojo(wiki) -IanSillitoeによって追加されました
- ShinyCMS(cms)-マイクによって追加されました
- Deimos(cms)-Mikeによって追加されました
その他のMoose/Plackアプリケーション:
- まだありません
perl - placup アクセス ログ - ロケールとオープン プラグマ - エンコーディングの問題
私のロケール設定は utf8 なので、plackup を開始すると、日付文字列もローカライズされます。したがって、次のようなコンソール アクセス ログを取得します。
私の部分的な a.psgi:
問題のある行はopen pragma
. (MyApp に open プラグマが必要です)。それがないと、アクセスログは正しく出力されますJúl
が、アクセスログはゴミになりました。
では、アクセスログを修正するにはどうすればよいですか?
- ローカライズされた日付文字列のゴミのない印刷、または
- アクセス ログ メッセージを C ロケールに変換する
何か案が?
Ps: PSGI はバイト指向の仕様 (および MyApp が正しく処理している) であることはわかっていますが、この問題は MyApp の外部にあります。
perl - Plack::Handler::Apache2 を使用して Apache2 を使用する PSGI アプリケーションが「見つかりません」という結果になる
初めてのポスター、長い間ここに潜んでいます。
plackup で小さな PSGI アプリケーションを使用していますが、サブドメイン用に Apache2 に切り替えたいと考えています。「 plackup /home/ath88/work/kolle/script/dir.psgi -port 80 」でアプリケーションを実行します。それはplackupで完全に動作します。アプリケーションは非常にシンプルで、https://github.com/ath88/Kolletilmelding/blob/master/script/dir.psgiにあります。
しかし、明らかな理由から、plackup の代わりに Apache2 を実行したいと考えています。このために、Plack::Handler::Apache2 を使用したいと考えています。私の VirtualHost は次のようになります。
Apache2 は正常に再起動します。しかし、aths.dk にアクセスしようとすると、単に 404 が見つかりません。500 内部エラーが発生するため、アプリケーションのディレクトリは正しいです。apache2/error.log を見ると、次のようになります: [無関係、編集を参照]
これは、Apache2 を再起動するたびに発生します。
これをデバッグするのに4時間費やしました。私は完全に頭がおかしいです。
編集: SIGTERM は、再起動のために Apache2 を停止することによるものであることが判明しました。起動すると発生しません。愚かな私。
perl - edit-layer を Plack-middleware として追加するには?
Plack ミドルウェアとしてウェブサイトに edit-layer を追加するというアイデアがあります。
説明: いくつかのフレームワークとテンプレートと CSS に基づいて Web サイトを作成するとします ( のように要求します/some/page
)。adm
これで、 (like )で始まるページへのすべてのリクエストが/adm/some/page
同じページを表示するように、ミドルウェアを作成できますが、コンテンツ編集用のレイヤーが追加されます。したがって、訪問者と同じようにページを簡単に見て使用できますが、ブロックレベルの要素をダブルクリックすると、コンテンツを変更または追加できます。そのため、ミドルウェアは特定のブロック要素を特定のイベント (ダブルクリック) にバインドし、ハンドラーも設定する必要があります (Javascript ライブラリを使用)。
今のところ、これは単なるアイデアであり、どの CMS でもそのようなアプローチは見たことがありません。そのようなシステムを開始して実装する方法のヒントとアイデアと例を探しています。そのようなことがすでに行われていることを願っています。
php - Perl-Starman (PSGI) + PHP = Apache2 プロキシ設定? - 実行する方法?
一緒に実行する方法: PSGI と PHP?
Perl/PSGI アプリケーションがあります (純粋な perl Starman サーバーで実行されています)。さて、なんらかの理由で、1 つの PHP アプリケーションも実行する必要があります ;( したがって、(おそらく) Apache2 が必要です。質問:
- PHP 用の Apache が本当に必要ですか? または他の解決策が存在しますか?
- リバース プロキシをセットアップする方法。誰かが http://mysite/myapp/something にアクセスすると、私の PSGI "myapp" が存在する Starman にプロキシされますか? と
- http: //mysite/phpapp/anything - php アプリに移動します...
- 別のポート (8080 など) でリッスンするように Starman サーバーをセットアップできますが、両方のアプリケーションにポート 80 でアクセスしたいので、リバース プロキシが必要です。
プラス:
サーバーは自宅の NAT ルーターの背後にあります。内部サーバーのアドレスは 192.168.1.10、外部からは、ルーターには正しいインターネット アドレスがあります。すべてのトラフィックをリダイレクトしました
- 両方のアプリケーションへのアクセスを実現する最善の方法は何ですか?ポート:80で両側(インターネット+「イントラネット」)からPSGI + PHP?
- いくつかの仮想ホストをセットアップする必要がありますか? それとも、本当に簡単な解決策がありますか?
- 役立つガイドラインへのいくつかのリンクも大いに役立ちます..
Ps: パフォーマンスを最適化する必要はありません。サーバーはホーム/デモ/テスト目的のみです。
編集: さて、別の同様の状況で、CPAN を再度チェックし、@rawhide の回答に基づいて、Plack::App::PHPCGIモジュールを見つけました。うまく機能します-plackupの下でphpアプリをテストするのは本当にクールです... ;)
perl - プラック/スターマンの下で「告白」を呼び出す
Carp モジュールから 'confess' を呼び出す TryCatch ステートメントで実行されている Plack/Starman アプリケーションがあります。ただし、告白の出力が STDOUT に出力されていないことに気付きました。STDERR 出力を STDOUT '2>&1' にルーティングしようとしましたが、まだ何も表示されません。運が悪い可能性のあるエラーログファイルを検索しました。この印刷先は世界のどこですか?おそらく簡単な答えだと思います。ログファイルはどこにありますか? それが問題になる場合、私はUbuntuボックスで実行しています。
ありがとう