ホームページ  >  記事  >  バックエンド開発  >  nginx+unicornでRuby Web環境をデプロイ

nginx+unicornでRuby Web環境をデプロイ

WBOY
WBOYオリジナル
2016-08-08 09:23:371247ブラウズ


私は最近 Ruby の Web プロジェクトを引き継ぎました。これまで Ruby や関連する Web 開発に触れたことがなく、プロジェクト内のドキュメントが欠落しているため、プロジェクトをデプロイするときにいくつか回り道をしました最後に、複数の Ruby on Rails 開発環境のデプロイメントを参考にし、Ruby における gem/bundler の関係を学習することで、プロジェクトのデプロイに成功しました。ここに書き留めておきます。これは簡単な要約であり、Ruby Web 開発を始めたばかりの場合のデプロイメント環境の参考にもなります。
私たちのプロジェクトは Padrino に基づいています。Rails ベースのプロジェクトの場合、デプロイメントは同様であるはずです。

1. Ruby をインストールします

システム内には複数の Ruby 関連プロジェクトが存在する可能性があり、異なる Ruby バージョンに対して異なるプロジェクトを開発またはテストする必要がある場合があるため、複数の Ruby バージョンでシステムにインストールされます。これには、既存のバージョンを管理し、新しいバージョンをインストールするための対応するツールが必要です。ここでは rbenv を選択しますが、古い RVM を使用することもできます。
rbenv をインストールする
git clone git://github.com/sstephenson/rbenv.git  ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
Ruby-build コンポーネントを追加する
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
gem-rehash コンポーネントを追加する
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
Ruby をインストールする (ruby2.1.5 を例にします)
Ruby のデフォルトのインストールは遅いので、対応するものをダウンロードしてくださいRuby.taabao.org の最初のファイルから、ローカル インストールを使用して
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
をインストールします。wget は、対応する Ruby ファイルをダウンロードします。ここでは、ruby-2.1.5.tar.gz です。
RUBY_BUILD_MIRROR_URL
は、インストールされている Ruby を指定するために使用されます画像パス。ここではローカル パスが直接使用されます。ローカル パスは # で終わる必要があることに注意してください。rbenv install コマンドに続くバージョンは、インストールされる Ruby のバージョンに対応する必要があります (例: 1.9.3-)。 p223)これも書くべきである。

2. 必要なコンポーネントをインストールします

通常、プロジェクトに必要な gem を管理するために Bundler を使用するため、ここで Bundler をインストールする必要があります。

中国のルビーミラーの接続速度を考慮して、宝石のソースをタオバオソースに変更しました。
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gemsources -l を実行すると、ソースは 1 つだけになります: https://ruby.taabao.org/
バンドラーをインストールします
gem install bundler


3. アプリケーションのデプロイメント

a. Web ソース コードを適切な場所に複製します

ここでは、クローン作成後、ソース コードを /opt/projectA に配置します


b. 依存する gem をインストールします

プロジェクトのルート ディレクトリで実行します:

bundle install
ここで、実行されるコマンドは状況に応じて若干異なる場合があることに注意してください。 。たとえば、本番環境にデプロイする場合、
bundle install --deployment --without development test
を実行する必要がある場合があります。このようにデプロイすると、関連する依存 gem が projectA/vendor/bundle にインストールされます。これは、異なるプロジェクトが同じ gem の異なるバージョンに依存する場合の使用に特に適しています。

c. データベース関連の移行

このプロジェクトは Padrino に基づいているため、次のコマンドを実行する必要があります:

padrino rake --envir db:migrate
状況によっては、このコマンドを実行するためにバンドルを使用する必要があることに注意してください:
bundle exec padrino rake --envir db:migrate
移行が成功したら、amdin アカウントを作成する必要があります。 Padrino はデフォルトで db/seeds.rb に管理者アカウントの作成を完了します。ここで実行します:
bundle exec padrino rake --envir seed
実行プロセス中に、管理者アカウントの電子メールとパスワードを入力するように求められます

d.unicorn デプロイメント

ここで、対応する unicorn 起動スクリプトが必要になる場合があります。これは、ruby を参照して作成できます。 -中国のユニコーン.rb。ここでは省略します。

ユニコーンサーバーの起動:
bundle exec unicorn -E production -c unicorn.rb -D
なので、Padrino サーバーは正常に起動しています。 unicorn.rb が tcp ポートでリッスンしている場合は、この時点で対応する URL へのアクセスが開かれているはずです。 UNIX ソケットを監視する方法を使用する場合は、リバース プロキシとして nginx (または Apache) も使用する必要があります。

4. nginxのインストール設定

a. nginxのインストール

nginxは一般的なLinuxソフトウェアと同じ方法でインストールできます。ソースコードのインストール方法を使用することをお勧めします。ここでは簡単にするために、パッケージ マネージャーのインストール方法を使用して一時的にインストールします:

sudo apt-get install nginx-full


b. nginx の設定

	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;
	    }
	}
ここでは、ポート 7788 へのリクエストが処理のために
unix:/tmp/projectA.sock
に転送されます。つまり、処理のために今すぐ Web サーバーに転送されます。
現時点では、サーバーは正常に動作しています。必要に応じて、その他の補助機能を追加できます。たとえば、nginx では認証に SSL 証明書が必要な場合があります。
Ruby on Rails プロジェクトのデプロイメントも同様です。デプロイメント プロセス中に、対応するコマンドを実行するときに、状況に応じて対応する調整を行う必要がある場合があります。ただし、Ruby Web のデプロイ方法に慣れていれば、関連するフレームワークを参照できる他のドキュメントをデプロイすることは比較的簡単です。

以上、Ruby Web環境のnginx+unicornデプロイメントを内容も含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。