Amazon on rails

この投稿では、AmazonにRailsサーバーをデプロイした経験を共有することにしました。 以前のすべてのRailsプロジェクトを既製のサーバーに配置しました。 これらはプライベートサーバー、または有名なherokuサービスでした。 そして、サーバーに送信したコマンドは、cap deployとcap deployのみでした:cold。 しかし、最後のプロジェクトでは、顧客は自分のアマゾンのイメージにサイトを配置したいと考えたため、トピックをより深く掘り下げなければなりませんでした。





主なタスク


サイトはnginx httpサーバーで実行する必要があり、gitはグループ開発に使用され、rvmは柔軟なruby構成に、サイトのニーズに合わせてgemを使用しますが、別のプロジェクトをホストする機能は保持します。 そして、これはすべてカピストラーノを通じて公開されることになっていました。



第一段階


最初の段階では、Linuxバージョンを決定する必要がありました。 次のディストリビューションが利用可能でした:Oneiric Ocelotおよびbitnamiアマゾンマシンイメージ。 最初は十分なチーズでしたが、2番目について詳しく説明しましょう。 Bitnamiは、ubuntu 10.04に基づいたオペレーティングシステムです。in>> / etc / init.d / nginx

chmod + x /etc/init.d/nginx

update-rc.d nginxのデフォルト

生活を楽にするいくつかの追加パッケージを追加しました。 しかし、いつものように、これは私たちの場合ではありませんでした。 インストールされた「改善」の1つはApacheでした。 最初に必要なことは、このサーバーを停止して初期化子を削除することです。 これを行うには、ルートとしてログインし、次のコマンドを実行します。



/etc/init.d/bitnami stop







また、念のためback_upなどのディレクトリにデーモンを移動します。

次に、必要なライブラリをインストールします



apt-get install build-essential bison openssl libreadline5 libreadline-dev

curl git-core zlib1g zlib1g-dev libssl-dev sqlite3 libreadline-dev libxml2-dev git-core subversion autoconf








グローバルrvmをインストールした後。 これを行うには、ターミナルに書き込みます。



bash < <(curl -L raw.github.com/wayneeseguin/rvm/1.3.0/contrib/install-system-wide)







ファイル/root/.bashrcおよび/etc/skel/.bashrcを修正します。 行[-z "$ PS1"] && returnは次のように置き換えられます。



if [[ -n "$PS1" ]]; then

##

fi









ファイルを保存して再起動します。rvmブート設定に加えて、rubyとgemsetのすべてのバージョンに必要ないくつかのgemを指定すると便利です。 これらは主にバンドラー、カピストラーノ、パッセンジャー、レーキです。 したがって、以下を/usr/local/rvm/gemsets/global.gemsに追加します



bundler -v~>1.0.18

rake –v~>0.9.2

capistrano –v ~>2.9.0

passenger –v ~>3.0.9








次に、迅速に動作するようにRails用のRuby EEをインストールします。



rvm install ree







デフォルトのルビーインタープリターとして設定します:



rvm use ree --default







サイトの追加のgemsetを作成した後:



rvm gemset create foo_site







ssh経由でアクセスできるユーザーを作成することは不可能だったため、bitnamiが$ HOMEディレクトリを作成して、サイトのバージョン、ログなどを保存する必要がありました。



mkdir foo_site







今、nginxとpassengerをインストールするといいでしょう



gem install passenger

rvmsudo passenger-install-nginx-module








rvmsudoが見つからなかったというエラーが表示された場合は、/ usr / local / rvm / binフォルダーを調べるか、$ PATH変数に追加して常に使用することができます。

インストーラーからの簡単な質問に答えると、設定する必要のある有効なnginxが得られます。 これを行うには、/ opt / nginx / conf / nginx.confで構成ファイルを開きます。そこで、passenger_rubyの値を/ usr / local / bin / passenger_rubyに変更します。

次に、サイトフォルダーの場所を指定する必要があります。 ファイルで、行「サーバー」の下に「ルート」を挿入し、/ home / bitnami / foo_site / application / current / publicを指定します。 将来のサイトのある「foo_site」フォルダーはどこにありますか。 ロケーションセクションをコメントアウトした後、nginxのデーモンをロードし、rootとして実行します:



curl -L raw.github.com/jnstq/rails-nginx-passenger-ubuntu/master/nginx/nginx > /etc/init.d/nginx

chmod +x /etc/init.d/nginx

update-rc.d nginx defaults

/etc/init.d/nginx start








これで、Amazonから受け取ったドメインのブラウザーに移動して、nginxからのエラーを確認できます。 すべてが正常に機能します。

次はgitについての会話です。 リポジトリを別の場所(たとえば、github)に配置したくない場合は、次のセクションが最適です。



gitを構成する


gitリポジトリマネージャーはたくさんありますが、人気のあるgitosisに決めました。 サーバーにインストールします。



sudo apt-get install gitosis







次に、gitユーザーを作成します



sudo adduser git







gitユーザーとしてログインしましょう:



sudo su git







gitをsudoersファイルに追加します。



%git ALL=(ALL) ALL







sshキーを作成します:



ssh-keygen -t dsa







次に、VPSサーバーを作成します。



sudo -H -u git gitosis-init < ~/.ssh/id_dsa.pub

git clone git@your_amazon_dns:gitosis-admin









次に、サイトリポジトリを作成します。そのために、ファイル/home/git/gitosis-admin/gitosis.confを開き、これを貼り付けます。



[ group foo_site]

writable = foo_site

members = git@domU-12-31-38-04-1D-DE developer1@mail.com developer2@mail.com




group foo_site]

writable = foo_site

members = git@domU-12-31-38-04-1D-DE developer1@mail.com developer2@mail.com








各要素をさらに詳しく検討します。



group foo_site –

writable = foo_site –

members = git@domU-12-31-38-04-1D-DE developer1@mail.com developer2@mail.com –








また、keydirフォルダーで、キーを使用してdeveloper1@mail.com.pubファイルを作成する必要があります

gitosis自体はgitリポジトリであるため、設定を変更した後、コミットとプッシュを行う必要があります。



git commit –am 'new changes' && git push







次に、/ home / git / repositories / foo_site.gitフォルダーを作成します。ここで、リポジトリーを初期化します。



git init -- bare /home/git/repositories/foo_site.git







git @ amazon-domainでgitリポジトリを使用できるようになりました:foo_site



capistranoを構成する


ローカルプロジェクトで、capifyコマンドを実行します。

彼女はCapfileとconfig / deploy.rbを作成します

deploy.rbファイルに次を追加します。



$:.unshift(File.expand_path('./lib', ENV['rvm_path']))

require "rvm/capistrano"

require 'bundler/capistrano'

#require 'capistrano/ext/multistage'#

require 'capistrano_colors'#

default_run_options[:pty] = true

ssh_options[:forward_agent] = true

set :using_rvm, true

set :rvm_ruby_string, 'ree@foo_site'# ruby gemset

set :rvm_type, :system

set :scm, 'git'#

set :scm_verbose, true

set :git_enable_submodules, 1

set :deploy_via, :remote_cache

set :repository, ' '

set :user, 'bitnami'

set :use_sudo, false

set :stack, :passenger

after "deploy:update", "deploy:cleanup"

set :branch, "master"

server « », :web, :app, :db, :primary => true

set :keep_releases, 4

set :deploy_to, '/home/bitnami/foo_site /application'

set :bundle_without, [:test, :development]










次に、cap deploy:setupコマンドを実行します。



おめでとうございます。これで、十分な機能を備えたgitでサーバーを作成できました。



トピックに関する有用な情報


nginx + rvmに関する投稿

Gitサーバーを作成する



All Articles