0

私は Ruby と RoR の初心者で、自分が作成したアプリのデプロイをいじくり回しています。

アプリをデプロイする必要がある本番マシンは新しいマシンであるため、gem をインストールする必要があります。必要なgemをリモートマシンから製品ボックスにコピーして、gemをインストールしようとしています。だから私はそれについて1つか2つの質問があります

  1. ファイアウォールの背後にあるマシンに ruby​​gems をインストールするより良い方法はありますか?

  2. 製品ボックスにすべての gem をインストールしたら、アプリ自体をデプロイする最良の方法はどれですか? ある種の rsync/scp などを設定する必要がありますか? または、これを行うためのより良い業界標準の方法はありますか?

4

2 に答える 2

3

Capistranoで両方の問題を管理できます。Capistrano は、プロジェクトを作業コピーから、またはリモート リポジトリから直接デプロイできるようにする ruby​​ スクリプトです。これは、SSH 接続を介して行われます。

また、Bundler を使用して gem を処理します。gem の一部が非公開 (Github アカウントなど) の場合、ローカル SSH キーを使用するように Capistrano をセットアップできます ( ssh_options[:forward_agent] = true)。もう 1 つの方法は、Capistrano レシピのStrategy Copy Bundledを使用して、gem をリモート サーバーにアップロードする前にローカルにバンドルすることです。

要約すると、Capistrano を使用すると、ローカル マシンがすべて (アプリ、gem など) が通過する仲介役になる展開をセットアップできます。

|------------|       |----------------|           |--------------|
|  Internet  |-------|  Your Machine  |---[SSH]---|  Production  |
|  (Github,  |       |----------------|           |--------------|
|   RubyGems,|
|   etc.)    |
|------------|

config/deploy.rbあなたが望むことを する例の下に追加した更新。しかし、カピストラーノのすべての詳細を説明することは、あなたの質問をはるかに超えています. それについて読むことをお勧めします。開始できる参考文献をいくつか用意しました。

require 'capistrano-strategy-copy-bundled'

set :application, "your application name" # name of the application

set :user, "deployer"  # The server's user for deploys
default_run_options[:pty] = true # Must be set for the password prompt
set :ssh_options, { :forward_agent => true } # Using SSH forward agent

set :repository, "git@github.com:account/repo.git"
set :scm, :git # type of scm used
set :deploy_via, :copy_bundled # Capistrano clones your git repo to /tmp on your
                       # local machine, tars & zips the result, and then
                       # transfers it to the server via sftp.

set :copy_dir, "/tmp/#{application}" # path where files are temporarily
                                     # put before sending them to the
                                     # servers
set :copy_exclude,  ".git*" # excluding the .git directory

set :deploy_to, "/var/www/" # Where to deploy on the server

参考文献:

于 2013-03-11T09:49:21.070 に答える
0

gem をローカルから実稼働マシンにコピーする必要はありません。アプリケーションにはgemfile、プロジェクトに必要なすべての gem をインストールする があります。

必要なのはbundle install、prod のプロジェクト パスから実行して、運用マシンに gem をインストールすることだけです。

prod で実行bundle installすると、ローカルで通常行うように、そこでサーバーを実行できます。

より明確にrails serverするために、ローカルで実行している場合、宝石をインストールしてから本番環境でサーバーを実行するには-

bundle install
rails server -e production

注:設定の変更など、プロダクションに固有のその他の変更を行うことを忘れないでくださいdatabase.yml

于 2013-03-11T09:36:12.617 に答える