arton / ennou Goto Github PK
View Code? Open in Web Editor NEWWindows Native HTTP Server with HTTP Server API
Home Page: https://www.artonx.org/data/nougakudo/
License: GNU Lesser General Public License v2.1
Windows Native HTTP Server with HTTP Server API
Home Page: https://www.artonx.org/data/nougakudo/
License: GNU Lesser General Public License v2.1
質問なのですが ennou を使って https スキーマの通信を受け付けることは可能でしょうか?
lib/rack/handler/ennou(mu).rb に server.add を追加して https 用のサーバも追加する必要はあると思いますが、SSLソケットの処理は ennou には含まれていないように思います。
一方 IIS の SSL設定の説明等を読むと、HTTP.sys でカーネルモードで SSL暗号化/複合化を行うというような記述があったため、その機能を用いてennouでもSSL通信を利用できるのではないかと考えています。
http://technet.microsoft.com/ja-jp/library/dd939069.aspx
ennou で https 通信する方法について事例やサンプルがありましたら教えていただけませんでしょうか。
いつもお世話になっております。
くだらない質問で申し訳ありませんが、演能で、public配下を参照するにはどうすれば良いのでしょうか?
WEBrick だと、xxx.xxx.jp:3000/ で public/index.html が表示されますが、演能の場合、
xxx.xxx.jp/ だと 404 に、xxx.xxx.jp/#{RAILS_RELATIVE_URL_ROOT} だと、Routing Error となります。
NougakuDo/Ennou に graceful shutdown に対応して頂きたいです。ここで言う graceful shutdown とは、停止が指示されてからクライアントからの新たなリクエストは受け付けず、ただし受信済みのリクエストの処理は完了してリプライを返してから停止する機能のことです。
現在 NougakuDo を NougakuDoCompanion を用いて Windows Azure 上にデプロイしてサービス提供しようとしています。
Windows Azure を用いるメリットにはスケールアウトが簡単にできるという点がありますが、スケールダウン(台数を減らす)時にはそのままだとクライアントからの要求を処理中のインスタンスが落とされた場合リプライを正常に受け取れないようです。
そのため、NougakuDoCompanion の AdminWeb の機能を用いて Rails アプリのインスタンスを停止した後にサーバ数を減らすことで安全なスケールダウンを行いたいのです。しかし現状ですと NougakuDoCompanion から Rails アプリ停止すると、処理中のリクエストがあっても停止されてしまうようです(sleep を入れてわざと長くかかるリクエストを作って実験してみました)。そのため停止時の動作を graceful shutdown として頂きたいです。
いつもお世話になっております。
Ennoumuで複数プロセスを起動している場合に、リクエストに対して割り当てられるプロセスの決定はどのように行なっているのですか?
単純にラウンドロビンで割り当てられるのでしょうか?
複数プロセス起動時、あるリクエストがたまたま重い処理を行なっている場合、軽いリクエストまで止まっているようなので、このような質問をさせていただきました。
開発環境で以下の事象が発生しております。
どの部分に問題があるか特定できないため、何かご存じでしたら
ご教示ください。
ennouに関わる問題かどうかの切り分けができておりませんが、
ご容赦ください。
# 全般的に知識が不足しておりまして、初歩的ミスでしたら申し訳ありません。
■事象
getでリクエストを送信時に以下のエラーが発生。
Rack::Lint::LintError at
env missing required key SERVER_NAME
# envが全てなくなっています
■開発環境
Win7 Professional
NougakuDo 1.3.0
直接関係あるかわかりませんが、いくつか試行してみたことを
以下に記載します。
・postで送信すると事象は発生しない。
・webrickで動作を確認したところ事象は発生しない。
・QueryStringを減らす(約500文字→約300文字)と事象は発生しない。
(QueryStringの文字数は500文字程度で長さの制限による
問題はないと考えます)
以上、よろしくお願いいたします。
能楽堂1.3.1に付属のEnnou 1.1.3にて、1MBを超える(境界値はよくわかりません)ファイルのアップロードを行うと、LintErrorが発生します。
当方、jquery.upload にてファイルのアップロードを行っております。
バイナリファイルでも、ASCIIのみのテキストでも同様の結果となります。
その際のスタックトレースは以下になります。
Rack::Lint::LintError: rack.input #File:0x000000051462c0 is not opened in binary mode
C:/Users/_/AppData/Roaming/NougakuDo/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/lint.rb:19:in assert' C:/Users/**_/AppData/Roaming/NougakuDo/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/lint.rb:274:in
check_input'
C:/Users//AppData/Roaming/NougakuDo/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/lint.rb:226:incheck_env' C:/Users/**_/AppData/Roaming/NougakuDo/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/lint.rb:42:in
_call'
C:/Users/_/AppData/Roaming/NougakuDo/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/lint.rb:36:in call' C:/Users/***/AppData/Roaming/NougakuDo/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/showexceptions.rb:24:in
call'
C:/Users/_/AppData/Roaming/NougakuDo/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/commonlogger.rb:20:in call' C:/Users/**_/AppData/Roaming/NougakuDo/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/chunked.rb:43:in
call'
C:/Users/**/AppData/Roaming/NougakuDo/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/content_length.rb:14:incall' C:/Users/***/AppData/Roaming/NougakuDo/lib/ruby/vendor_ruby/1.9.1/rack/handler/ennou.rb:82:in
block in run_thread'
解決策がありましあら、教えていただけないでしょうか。
お手数ですが、よろしくお願いいたします。
知識不足のため場違いな質問でしたらすいません。
ファイルダウンロードをさせるため、レスポンスヘッダに "Content-Disposition" を追加している(以下)のですが、実際に返さえるレスポンスには "Content-Disposition" が出力されていません。
response.headers['Content-Disposition'] = "attachment; filename="test.txt""
WEBrick では追加できるのですが、何か方法はないでしょうか?
お手数ですが、よろしくお願い致します。
araiです。ennouの起動コマンドを
[full path]ruby.exe -C[full path]\bin [full path]\bundle exec [full path]\rackup -p 80 -E production -s Ennou [full path]\config.ru
としてコマンドラインから起動して、CTRL+Cをタイプすると「バッチファイルを終了しますか?」となります。
NougakudoLauncher.exe で上記コマンドで起動して、GenerateConsoleCtrlEvent APIでCTRL+Cをエミュレートすると
[2012-09-03 14:49:55] INFO Ennou(1.1.5) stop service for http://+:80/nougakudo132s pid=11708
プロセスが、存在しないパイプに書き込もうとしました。
となります。
実害はないのですが、これって避けられない挙動なのでしょうか?
能楽堂に関する質問ですみません。
OSはWindows8です。
ennou自体は動くのですが、肝心のnougakudou.htaが動きません。
マニュアルサイトを見ると、起動時の画面にennouのバージョン情報なども出ている
ようですが、それも出てきませんし、config.ruを読み込ませても
画面に何もでてきません。
スタート画面ではなく、単独で起動させると、スクリプトエラーが出ます。
initが定義されていない、というような表示です。
やはり、Windws7 64bitや、サーバーでないと難しいのでしょうか?
お世話になっております。
やはり最終リクエストの30分程度後のリクエストでrubyのワーカープロセスが終了してしまいます。
rack/handler/ennoumu.rb の l.58 rescue Interrupt の部分にデバッグプリントを挿入して
手動で rackup を実行してみたのですが、デバッグプリントに制御が到達しなかったため、
別の原因と考えます。
(ennou.cのwait_io関数にデバッグを入れて実行してみたのですが、statは
WAIT_TIMEOUTとWAIT_OBJECT_0のみのように見えます)
#Azure上のみ発生し、ローカルでは発生しません
知識不足で恐縮ですが、発生し得るケースに心当たりがあればご教示ください。
能楽堂はSQLiteも同梱されていてすぐにRailsアプリケーションの開発を始められて便利です。
そんな能楽堂にrroongaという全文検索ライブラリを同梱してもらえないでしょうか?
効率よくユーザーに適切な情報を提供するために検索技術がより重要になっています。
RDBでもLIKEを使って簡単な全文検索機能を実現できますが、 フレーズ検索 や 関連文書検索 や入力補完機能など最近の検索システムで使われているリッチな検索機能を実現できません。
例えば、Rubyのリファレンスマニュアルを検索する るりまサーチ ではリッチな検索機能を利用して効率よくユーザーに適切な情報を提供しようとしています。
rroonga はリッチな検索機能を持つ全文検索システム groonga のRubyバインディングです。groongaはサーバーとしても使えますが、SQLiteのようにプロセスに組み込む形でも使えるため、インストールさえしてあれば前準備をする必要がなく、導入が容易です。なお、るりまサーチもrroongaを使って実装されています。
ということで、能楽堂にrroongaを同梱して、簡単にリッチな検索機能を組み込んだアプリケーションを作れるようにしてもらえるとうれしいです。
(もし、前向きに検討してもらえるということになったら、ビルド方法とかについて説明します。)
いつもお世話になっております。
NougakuDo 1.3.5の環境で、RailsアプリをEnnoumuで実行していると、レスポンスが返ってこなくなることがあります(Win2008 R2、SQLServer2012Express使用)。
管理者コマンドプロンプトで、rackup -s Ennoumu -p 80 で実行しています。
まれに、コマンドプロンプトでEnterを叩くと動き出すことがあります。
2プロセスで使用していますが、やがて、新たなリクエストも受け付けられなくなり、Ctrl-Cを押しても
Ennou(1.1.6) stop service for http://+:80/da pid=xxx
を表示するものの終了しません(しばらく放置するとTerminate batch job (Y/N)?が表示されます)。
ennoumu.rb に rescue を(rescue Interruptの下に)追加し backtrace を取得してみたところ、以下を延々と出力しているようです。
#<SystemCallError: unknown error - wait HttpReceiveHttpRequest (6)> C:/**/NOUGAK~1/lib/ruby/vendor_ruby/1.9.1/rack/handler/ennoumu.rb:55:in `wait' C:/**/NOUGAK~1/lib/ruby/vendor_ruby/1.9.1/rack/handler/ennoumu.rb:55:in `block (2 levels) in run' C:/**/NOUGAK~1/lib/ruby/vendor_ruby/1.9.1/rack/handler/ennoumu.rb:53:in `loop' C:/**/NOUGAK~1/lib/ruby/vendor_ruby/1.9.1/rack/handler/ennoumu.rb:53:in `block in run' C:/**/NOUGAK~1/lib/ruby/vendor_ruby/1.9.1/rack/handler/ennoumu.rb:28:in `open' C:/**/NOUGAK~1/lib/ruby/vendor_ruby/1.9.1/rack/handler/ennoumu.rb:28:in `run' C:/**/NOUGAK~1/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:265:in `start' C:/**/NOUGAK~1/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/server.rb:137:in `start' C:/**/NOUGAK~1/lib/ruby/gems/1.9.1/gems/rack-1.4.1/bin/rackup:4:in `<top (required)>' C:/**/NOUGAK~1/bin/rackup:23:in `load' C:/**/NOUGAK~1/bin/rackup:23:in `<main>'
なにが原因かわかりますでしょうか?
お手数ですがよろしくお願いいたします。
test_server.rbのtest_large_postでエラーとなる。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.