私は最近 Ruby の Web プロジェクトを引き継ぎました。これまで Ruby や関連する Web 開発に触れたことがなく、プロジェクト内のドキュメントが欠落しているため、プロジェクトをデプロイするときにいくつか回り道をしました。 最後に、複数の Ruby on Rails 開発環境のデプロイメントを参考にし、Ruby における gem/bundler の関係を学習することで、プロジェクトのデプロイに成功しました。ここに書き留めておきます。これは簡単な要約であり、Ruby Web 開発を始めたばかりの場合のデプロイメント環境の参考にもなります。
私たちのプロジェクトは Padrino に基づいています。Rails ベースのプロジェクトの場合、デプロイメントは同様であるはずです。
1. Ruby をインストールします
システム内には複数の Ruby 関連プロジェクトが存在する可能性があり、異なる Ruby バージョンに対して異なるプロジェクトを開発またはテストする必要がある場合があるため、複数の Ruby バージョンでシステムにインストールされます。これには、既存のバージョンを管理し、新しいバージョンをインストールするための対応するツールが必要です。ここでは rbenv を選択しますが、古い RVM を使用することもできます。git clone git://github.com/sstephenson/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc exec $SHELL
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
wget -O ~/.rbenv/versions/ruby-2.1.5.tar.gz http://ruby.taobao.org/mirrors/ruby/2.1/ruby-2.1.5.tar.gz env RUBY_BUILD_MIRROR_URL=file:///home/ziven/.rbenv/versions/ruby-2.1.5.tar.gz# ~/.rbenv/bin/rbenv install 2.1.5
RUBY_BUILD_MIRROR_URL
通常、プロジェクトに必要な gem を管理するために Bundler を使用するため、ここで Bundler をインストールする必要があります。
中国のルビーミラーの接続速度を考慮して、宝石のソースをタオバオソースに変更しました。gem sources --remove https://rubygems.org/ gem sources -a https://ruby.taobao.org/
gem install bundler
ここでは、クローン作成後、ソース コードを /opt/projectA に配置します
プロジェクトのルート ディレクトリで実行します:
bundle install
bundle install --deployment --without development test
このプロジェクトは Padrino に基づいているため、次のコマンドを実行する必要があります:
padrino rake --envir db:migrate
bundle exec padrino rake --envir db:migrate
bundle exec padrino rake --envir seed
ここで、対応する unicorn 起動スクリプトが必要になる場合があります。これは、ruby を参照して作成できます。 -中国のユニコーン.rb。ここでは省略します。
ユニコーンサーバーの起動:bundle exec unicorn -E production -c unicorn.rb -D
nginxは一般的なLinuxソフトウェアと同じ方法でインストールできます。ソースコードのインストール方法を使用することをお勧めします。ここでは簡単にするために、パッケージ マネージャーのインストール方法を使用して一時的にインストールします:
sudo apt-get install nginx-full
upstream myserver { server unix:/tmp/projectA.sock fail_timeout=0; } server { listen 7788; server_name localhost; client_max_body_size 10M; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } root /opt/projectA/web/public; try_files $uri $uri.html @app; location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://myserver; } }
unix:/tmp/projectA.sock