最近接手了一個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
2. 安裝必要元件
因為我們一般採用bundler來管理專案所需的gems,所以此處是需要安裝bundler的。gem sources --remove https://rubygems.org/ gem sources -a https://ruby.taobao.org/
gem install bundler
3.原始碼放置到/opt/projectA
b.安裝依賴的gems
在專案的根目錄執行:bundle install
bundle install --deployment --without development test
padrino rake --envir db:migrate
bundle exec padrino rake --envir db:migrate
bundle exec padrino rake --envir seed
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