問題タブ [thin]
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.
ruby-on-rails - カピストラーノ+シン+ユーザーがsudoすることを許可されていないnginxのハウツー?
カピストラーノを使用してRuby on Railsアプリケーションをデプロイしたい、次のようなシナリオがあります。
- Web アプリケーションはシン クラスタ上にあり、設定ファイルは /etc/thin に保存されています。また、init スクリプトは /etc/init.d/thin にあるため、サーバーの再起動が必要になるたびに自動的に開始されます。
- また、nginx も同じ方法で実行されます (init スクリプト デーモンとして)
- 誰かが私のウェブサーバーをハッキングした場合に備えて、あまりにも恐ろしいことをさせたくないので、ウェブユーザーは sudo を許可されていません。
- Thin と nginx の両方が Web ユーザーとして実行され、そのようなセキュリティが適用されます
デプロイを行う必要がある場合は、/home/webuser/railsapps/helloworld にファイルをインストールする必要があります。その後、cap スクリプトでシンを再起動する必要があります。すべてのファイルを webuser が所有するようにしたいので、cap スクリプトのプライマリ ユーザーは webuser として実行されます。webuserがsudoできないため、シンデーモンを再起動したいときに問題が発生します。
ファイル展開用の webuser と、デーモンを再起動するための特別な sudoer という 2 つの個別のセッションを呼び出すことが可能かどうかを考えています。誰かがこれに関するサンプルスクリプトを教えてもらえますか?
ruby-on-rails - RubyOnRails アプリケーション向けの Thin + Nginx Production Ready の組み合わせ
最近、展開サーバーに Nginx + Thin をインストールしましたが、これが最後の要求と応答の状況でどのように機能するかわかりません。毎秒 1000/req としましょう。
そのため、シンの速度は1秒あたり10〜100リクエストで良好です
リクエスト/レスポンス クラスタで処理される大量のデータについて知りたいと思っていました。
これについて私を案内してください:-)
ruby - HTMLフォームをremote.cgiにPOSTする-Rubyで書かれていますか?
私はマイクロソフトのオフィスライブサービスでホストされているWebサイトで作業しています。訪問者が所有者と連絡を取ることができる連絡フォームがあります。別のサーバーに配置され、フォームがPOSTされるRubyスクリプトを作成したいと思います。フォームデータを解析し、詳細を事前設定されたアドレスに電子メールで送信します。次に、スクリプトはブラウザを確認ページにリダイレクトする必要があります。
私はnginxとpostfixを実行しているubuntuの丈夫なマシンを持っています。Rubyがインストールされ、ThinとそのRack機能を使用してスクリプトを処理する方法について説明します。今度はスクリプトを書くことになり、私は空白を描きました。
久しぶりですが、正しく覚えていれば、そのプロセスは次のようなものです。
- HTTPヘッダーを読み取る
- パラメータを解析します
- メールを送る
- リダイレクトヘッダーを送信する
大まかに言えば、質問は答えられました。答えの使い方を考えるのは予想以上に複雑で、共有する価値があると思いました。
最初のステップ:
私は、nginxがcgiスクリプトを直接サポートしていないことを突然知りました。スクリプトを実行し、nginxにプロキシリクエストを送信するには、他のプロセスを使用する必要があります。もし私がこれをphpでやっていたとしたら(後から考えるともっと自然な選択だったと思います)、php-fcgiのようなものを使うことができ、人生はかなり簡単だと期待できます。
Rubyとfcgiはかなり気が遠くなるように感じました。しかし、実行時にこれらのものをロードするという理想を放棄する場合、Rackはおそらく最も簡単なソリューションであり、Thinには必要なものがすべて含まれています。それらを使って基本的な小さなアプリを作成する方法を学ぶことは、私のような比較的Railsの新参者にとって非常に有益でした。Railsアプリの基盤は長い間隠されているように見えることがあり、Rackは私がカーテンを少し持ち上げるのを助けてくれました。
それにもかかわらず、イェフダのアドバイスに従い、シナトラを調べることは別の驚きでした。これで、Thinインスタンスで実行されている基本的なsinatraアプリができました。それは私が収集するものが標準的な方法であるUNIXソケットを介してnginxと通信します。Sinatraは、アプリへのさまざまなリクエストやルートを処理するための非常にエレガントな方法を可能にします。必要なのはget '/' {}
、仮想ホストへのリクエストの処理を開始することだけです。さらに(クリーンな方法で)追加するには、routes/script.rbをメインファイルに含めるだけです。
これらのルートファイルは、クラスの別のライブラリに保存されている機能を呼び出します。
そのような単純なことを理解することの全くの恐怖は、しばらくの間私にとどまります。.rbファイルが実行されることをnginxに冷静に知らせ、それを実行することを期待していました。この小さなsinatraアプリが稼働しているので、将来機能を追加したい場合は、すぐに飛び込むことができます。
実装:
ContactPostクラスは、メッセージングの側面を処理します。知っておく必要があるのは、リクエストのパラメータとメールのターゲットだけです。ContactPost :: actionはすべてを開始し、コントローラーがリダイレクトするアドレスを返します。
指定されたターゲットがrequest.referrerで指定されたURLからのメッセージを受け入れることを確認するために、何らかの認証を行う別のContactTargetクラスがあります。これはContactTarget::acceptで処理されますか?ContactPost::actionメソッドから推測できるように;
ContactPost::successfulとContactPost::failedはそれぞれ、HTMLフォームで提供されたパスをrequest.referer URIと組み合わせることにより、リダイレクトアドレスを返します。したがって、すべての動作はHTMLフォームで指定されます。このスクリプトを使用する将来のWebサイトは、ユーザー自身の〜/ cgi / contact.confにリストする必要があり、それらは削除されます。これは、ContactTargetが/home/:target/cgi/contact.confで詳細を検索するためです。いつかこれは不適切かもしれませんが、今のところ私の目的には問題ありません。
sendメソッドは非常に単純で、単純なEmailクラスのインスタンスを作成して出荷します。Emailクラスは、Ruby net/smtpのドキュメントに記載されている標準的な使用例にほぼ基づいています。
私がする必要があるのは、アプリケーションをラックアップし、nginxにどのソケットと通信するかを知らせることだけです。
正しい方向への有益な指針をありがとうございました!長生きするシナトラ!
php - シン ドライバーを使用した PHP と Oracle
PHP で (たとえば、拡張機能として) 使用できる Oracle 用のシン ドライバーはありますか?
OCI ドライバー/クライアントをインストールできませんが、Oracle データベースにアクセスできる必要があります。
ruby - ラメイズでハードクラッシュ
だから、私は新しいプロジェクトのためにRamazeを試しているところですが、なぜそれがThinで動作しないのか疑問に思っていますが、ramazeが開始されます(これはwebrickだと思います)。これが私に与えるものです:
/opt/local/lib/ruby1.9/gems/1.9.1/gems/thin-1.2.2/lib/thin/request.rb:50:[BUG]不明なタイプ0x22(0xc指定)
これはそれが話している行です:
@parser = Thin :: HttpParser.new
これはあまり役に立ちません。
誰かアイデアはありますか?ありがとう!
編集:実際、MySQLgemの最新バージョンをインストールしようとしたときにこのエラーが発生したことを覚えています。「makeinstall」の前に必ず「makeclean」を実行して再インストールする必要がありました。ただし、thinはgemからインストールされたため、ここでどのように実行できるかわかりません...
java - Oracle ResultSetMetaData getPrecision/getScale
Oracle 10g データベースに接続するために、Oracle の JDBC シン ドライバ (10.2.0.3) を使用しています。データベースの列に関する情報を取得したいので、ResultSetMetaDataを使用します。必要な最も重要な情報は列の型と長さなので、getColumnType、getPrecision、およびgetScaleメソッドを使用します。
select * from tablename
のように列タイプが「単純」である場合、単純なクエリ ( ) で機能しますVARCHAR2(50), NUMBER(5), NUMBER(6,2)
。より複雑なクエリ ( select count(*) from tablename
) または複雑な計算を含むビューに基づくクエリがある場合、メソッドは次のような奇妙な結果を返します。
getScale
: -127getPrecision
とgetScale
0の両方getPrecision
: -1
oracle.jdbc.J2EE13Compliant
接続プロパティを(いくつかの Web ページで提案されているように) に設定すると、 true
getScale=-127 はなくなりますが、それでも 0/0 の結果が返されます。
ほとんどの場合、これらの奇妙な結果に対する回避策を作成する必要がありますが、その前に、少なくとも Oracle の ResultSetMetaData の動作に関する包括的なドキュメントが必要です。たとえば、すべての SQL タイプに対して getPrecision/getScale の意味を持つ巨大なテーブルは素晴らしいでしょう。このようなドキュメントはどこかにありますか?
ruby-on-rails - Unix ドメインソケットを使用するように Apache BalancerMember を構成できますか?
Apache Proxy バランサー ディレクティブを使用して、一連のシン サーバー (Rails 用) を接続しています。
そのようです:
ただし、シンは UNIX ドメイン ソケットを使用するように構成することもできます。
だから私は次のようなことができるようにしたい:
しかし、Apacheはそれを受け入れていません。nginxでもできるようですが、本当はApacheを使いたいです。
方法はありますか?
ruby - ルビー、シナトラ、ストリーミング
iTunes が (DAAP サーバーとして) 送信しているデータを受け入れない理由を猛烈にデバッグしようとしています。
私の応答と mt-daapd からの同一の応答 (iTunes が受け入れます) との間に見られる唯一の違いは、mt-daapd 応答が 1 つの大きなパケットではなく、小さなパケットに分割されることです (パケット化には Wireshark を使用しています)。嗅ぎます)
Sinatra (Thin) にこれを行うように指示する方法を知っている人はいますか? または、iTunes が DAAP サーバーから期待する応答に対して非常にうるさい理由を知っていますか :P
ruby - CGIスクリプトでRuby Thinを使用するには?
lighttpd を使用して実稼働サーバーから提供するいくつかの Ruby CGI スクリプト (Ruby CGI クラスを使用) を作成しました。シンを使用して開発サーバーでそれらをテストしたい。基本的に、すべての CGI スクリプトをディレクトリにドロップし、そのディレクトリでシンを開始したいと考えています。次に、http://localhost:3000/<script > へのすべてのリクエストは、現在のディレクトリで <script> を実行し、結果を返す必要があります。シンにこれを行う方法が組み込まれている場合、私はそれを見つけることができません。自分が何をしているのかわかっていれば、このための Rack 構成ファイルは簡単だと思いますが、私にはわかりません。
アップデート:
このラックアップファイルは機能しているようです。それが最善の解決策かどうかはわかりませんが、開発環境では問題ないはずです。