10

テストのために、Ruby on Railsアプリ(JRubyで実行)をTomcatインスタンスにデプロイする方法を検討しています。

Tomcatインスタンスは、SSHで接続できるSolarisサーバーで実行されています。Capistranoの使用を検討しましたが、Tomcatにデプロイするために使用することや、JRubyで実行することについてはあまり多くないようです。また、Windows / JRuby環境が原因で、Capistranoでバグが発生し続けています。私のPCは実行されています(ええ、それは企業です-私の選択ではありませんが、私はそれと一緒に暮らす必要があります)。

warbleを使用して.warファイルをビルドしています。手動でコピーしてデプロイすると、アプリは正常にデプロイおよび実行されます。実際にそこに到達するために、もっと簡単で自動化されたものが欲しいのです。

誰かが前にこれをしましたか?Web上のドキュメントはかなり薄いようです。

4

5 に答える 5

15

JRubyを使用してRailsプロジェクトを実行し、Tomcatサーバーにデプロイしています。Capistranoを使用してデプロイすることを選択したのは、ほぼすべてが自動化されるためです。CapistranoをTomcatで実行するには、Capistranoのデプロイメントライフサイクルにいくつかの小さな変更を加える必要がありました。

ステップ1:Capistranoがコードを更新した後、サーバーで実行するWarbleタスクを作成しました。

desc "Run the warble command to deploy the site"
namespace(:deploy) do
  task :warble do
    run ". ~/.profile;cd #{release_path};warble"
  end
end

そして、以下を使用してそれをCapistranoライフサイクルに接続しました。

after 'deploy:update_code', 'deploy:warble'

#{release_path}/tmp/war私のTomcatサーバーには、 warbleによって作成されたディレクトリを指すシンボリックリンクがあります。これが気に入らない場合は、warbleタスクを簡単に変更して、代わりにwarファイルをTomcatディレクトリに移動できます。

ステップ2:タスクdeploy:startdeploy:stopタスクをオーバーライドして、MongrelサーバーではなくTomcatサーバーを起動するようにします。

desc "Starts the Tomcat Server"
namespace(:deploy) do
  task :start do
    sudo "#{tomcat_home}/bin/startup.sh"
  end
end

desc "Shutdown the Tomcat Server"
namespace(:deploy) do
  task :stop do
    sudo "#{tomcat_home}/bin/shutdown.sh"
  end
end

私はJRubyインタープリターではなくMRIを使用してCapistranoタスクを実行します。

于 2008-10-26T21:23:33.027 に答える
3

私はこれについてあまり経験がないので、最善の方法を提供できるかどうかはわかりませんが、Capistrano が機能せず、それを実行するためだけに MRI を別途インストールすることができない場合は、いくつかの選択肢が残っています:

プレーンな Rake を実行してみて、独自のデプロイメント ターゲットを記述してください: http://www.gra2.com/article.php/deploy-ruby-on-rails-applications-rake

または、Ant または Maven を使用します。

または、デプロイする必要があるサーバーが 1 つだけの場合は、2 つの Ruby スクリプトをハックするだけです。1 つはサーバーでシャットダウン/起動要求をリッスンし、もう 1 つはローカルで実行します: シャットダウンを送信し、ファイルに対して scp を送信し、送信します。起動。

ところで、Capistrano で見つけた統合バグを JRuby チームに提出しましたか? 彼らはどんな貢献でも喜んでくれると確信しています。:)

于 2008-09-29T06:31:13.883 に答える
2

これにはおそらく Ant を使用します。結局のところ、それは単なる別の WAR ファイルですよね? 使用している Tomcat のバージョンはわかりませんが、バージョン 4.1xには Tomcat にデプロイするための Ant タスクが付属しています

于 2008-09-29T10:11:30.093 に答える
2

「Vlad the deployer」を見る価値があるかもしれません.remote_taskをRakeに追加して、リモートサーバーでタスクを実行できるようにします. 個人的には、サーバー上に標準の Rake タスクを配置し、ssh でそのタスクを実行することを好みます。これにより、svn チェックアウトが実行され、WAR ファイルが作成されます...

于 2008-09-29T07:28:39.267 に答える