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サーバーを作成する

Source: https://habr.com/ru/post/J129583/


All Articles