1

次のような Ruby on Rails アプリを作成することは可能ですか。

a) Heroku にデプロイされていること、および

b) リモートの SQL Server データベースを使用していますか?

Heroku に unixODBC をインストールする必要があると思いますが、その方法が見つかりません。これは可能ですか?または、これを達成する他の方法 (ODBC を使用しない場合) はありますか?

ガイダンスやヒントをありがとうございました。


更新: 件名に関するいくつかの情報:

1) Heroku はデフォルトで unixODBC と FreeTDS の両方をプリインストールしているため、すでにそれらを持っています。

2) また、バッククォートで Heroku コンソールを介してシェル コマンドを実行することもできます。

  heroku console 
  `odbcinst`

(Heroku シェルで「odbcinst」コマンドを実行し、結果を表示します)

3) パッケージがインストールされているスライスの外部にあるファイルシステムにアクセスできません。ドライバ パスのみが必要な場合は、Heroku サポートから提供されます (私の場合は /usr/lib/odbc/libtdsodbc.so)。

4) Heroku シェルでは sudo コマンドを実行できません。

現時点では、MS SQL Server に接続するには、少なくとも「freetds.conf」ファイルを追加する必要があります。tinyTDS を使用している場合でも (tinyTDS gitgub 発行ページにオープン チケット#2 があります)。「wiki.rubyonrails.org SLASH database-support SLASH ms-sql」からの DSN を使用しない接続手順は機能しませんでした。この接続には追加の構成も必要だと思います。

「freetds.conf」は、sudo なしでは変更できません。したがって、現時点では MS SQL と Heroku を連携させる方法はないと結論付けています。

EngineYard と activerecord-sqlserver-adapter を使用して、この接続を設定することができました。

次の手順に従いました: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu (ファイルパスの違いはいくつかあります。たとえば、「odbc.ini」は「 '/etc' ではなく /etc/unicodbc' - これは簡単に解決できます)。

EY Unix Packages 機能を使用して「unixODBC」および「freetds」パッケージをインストールし、SSH を介してすべての構成を手動で行いました。Sudo は EY で使用できます (パスワードは不要です)。これらの構成を自動化するための Chef Recepes 機能もあります (非常に簡単に思えます。明日試してみます)。

これが役に立てば幸いです。

4

4 に答える 4

4

可能です。

Heroku は、リポジトリで提供されたものに対して独自のコピー/シンボリック リンクを作成するため、アプリケーションを適切にセットアップするために、追加の手順 (や など)config/database.ymlが必要になる場合があります。config/environments/production.rbconfig/initializers/remote_mssql_from_heroku.rb

ただし、Heroku から MSSQL データベースへのトラフィックが公共のインターネットを通過するという課題に直面することになります。デフォルトでは、このトラフィックは暗号化されません。世界中の誰もが、Heroku アプリケーションとデータベースの間のトラフィックを監視できる可能性があります。無害な目的であろうと悪意のある目的であろうと、検出できないように進行中のトラフィックを変更することさえできます。MS SQL は、SSL 経由で接続する機能を提供します。この機能には、MSSQL サーバーでの明示的な構成が必要であるため、その構成にアクセスして変更できる必要があります。さらに、この構成では、クライアント ライブラリが最新であり、SSL 経由で MSSQL と通信できる必要があります。

于 2010-12-20T22:41:19.627 に答える
1

Heroku の新しいビルドパック機能を使用して TinyTDS を使用し、SQL Server 2008 R2 にリモート接続する次の記事をうまく使用しました。トラフィックを暗号化する方法をまだ調査中です。これが他の人に役立つことを願っています!

http://blog.firmhouse.com/connecting-to-sql-server-from-heroku-with-freetds-here-is-how-on-cedar#

于 2012-09-30T23:49:32.213 に答える
0

古いデータを SQL Server データベースから新しいアプリにインポートする必要があるという同様の問題があります。データはストレート テーブル インポートではありませんが、いくつかの処理と変換を行う必要があります。古いデータ変換の問題で新しいアプリを汚染しないように、プライベート gem にあるこのためのインポート レイヤーを構築しました。このアプローチは、増分更新を許可するようにも設計されています。ローンチが近づくにつれて、切り替えの瞬間までレコードを同期し続けます。

Heroku は、特に FreeTDS をサポートしていないため、SQLServer に接続するのは簡単ではないことを教えてくれました。彼らのサポート スタッフは、私たちのオフィスでラップトップから import gem を使用してインスタンスを実行し、データベースに接続するように構成することを推奨しました (無料の共有 DB ではなく、専用の DB が必要です)。これは、私たちにとって最も好ましいアプローチのように思えました。

次に、@Justice が言及したセキュリティに関して、ホスティング会社と SQLServer の SSL の構成について話し合い、彼らはこれの複雑さを指摘しました。彼らは、より簡単なソリューションとして VPN を推奨しました。オフィス側に VPN ハードウェアがないため、最もシンプルで無料のソリューションは SSH トンネルであることが判明しました。

ラップトップから SQLServer Windows ボックスへの SSH トンネルをセットアップしました。それは簡単でした。CopSSH を Windows にインストールし (ちなみに、これには Linux シェルが付属しています)、単純にトンネルをセットアップして、SQLServer 接続のためにラップトップを localhost と通信させることができました。

ssh -L 1433:localhost:1433 user@windows_server_name

于 2011-10-29T00:40:24.380 に答える
0

Heroku に FreeTDS があることを知りませんでした。私は彼らがしなかったと言われました。TinyTDS を FreeTDS 0.91 と一緒に使用すると、freetds.conf への依存関係がゼロになり、ランタイム接続引数によって駆動されます。0.91 と OpenSSL を静的にリンクする Ubuntu 10.4 ネイティブ gem の構築を検討しているため、Heroku にドロップするだけで Azure に接続したり、外部 DB を所有したりできます。

于 2011-09-13T14:37:38.223 に答える