ホームページ >バックエンド開発 >PHPチュートリアル >nginx+unicornでRuby Web環境をデプロイ
私は最近 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 $SHELLRuby-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 $SHELLgem-rehash コンポーネントを追加する
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehashRuby をインストールする (ruby2.1.5 を例にします)
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)これも書くべきである。
通常、プロジェクトに必要な 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
ここでは、クローン作成後、ソース コードを /opt/projectA に配置します
プロジェクトのルート ディレクトリで実行します:
bundle installここで、実行されるコマンドは状況に応じて若干異なる場合があることに注意してください。 。たとえば、本番環境にデプロイする場合、
bundle install --deployment --without development testを実行する必要がある場合があります。このようにデプロイすると、関連する依存 gem が projectA/vendor/bundle にインストールされます。これは、異なるプロジェクトが同じ gem の異なるバージョンに依存する場合の使用に特に適しています。
このプロジェクトは Padrino に基づいているため、次のコマンドを実行する必要があります:
padrino rake --envir db:migrate状況によっては、このコマンドを実行するためにバンドルを使用する必要があることに注意してください:
bundle exec padrino rake --envir db:migrate移行が成功したら、amdin アカウントを作成する必要があります。 Padrino はデフォルトで db/seeds.rb に管理者アカウントの作成を完了します。ここで実行します:
bundle exec padrino rake --envir seed実行プロセス中に、管理者アカウントの電子メールとパスワードを入力するように求められます
ここで、対応する unicorn 起動スクリプトが必要になる場合があります。これは、ruby を参照して作成できます。 -中国のユニコーン.rb。ここでは省略します。
ユニコーンサーバーの起動:bundle exec unicorn -E production -c unicorn.rb -Dなので、Padrino サーバーは正常に起動しています。 unicorn.rb が tcp ポートでリッスンしている場合は、この時点で対応する URL へのアクセスが開かれているはずです。 UNIX ソケットを監視する方法を使用する場合は、リバース プロキシとして nginx (または Apache) も使用する必要があります。
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; } }ここでは、ポート 7788 へのリクエストが処理のために
unix:/tmp/projectA.sockに転送されます。つまり、処理のために今すぐ Web サーバーに転送されます。 現時点では、サーバーは正常に動作しています。必要に応じて、その他の補助機能を追加できます。たとえば、nginx では認証に SSL 証明書が必要な場合があります。