Chúng ta sẽ thiết lập môi trường production Ruby on Rails trên Ubuntu 14.04 LTS Trusty Tahr.
Kể từ khi sử dụng Ubuntu cho môi trường phát triển, chúng ta cũng muốn sử dụng trong môi trường production. Điều này giúp ứng dụng chạy nhất quán giữa môi trường phát triển và production. Chúng ta sẽ sử dụng phiên bản LTS của Ubuntu cho môi trường production vì nó được hỗ trợ nhiều năm trong khi phiên bản Ubuntu thường không hỗ trợ.
Thuê một VPS từ Digital Ocean và Linode.
Tạo tài khoản để chạy ứng dụng và làm việc trên VPS:
sudo adduser deploy
sudo adduser deploy sudo
su deploy
Thiết lập SSH để xác thực thay vì phải nhập mật khẩu để đăng nhập sử dụng ssh-copy-id
. Nếu sử dụng OSX bạn cần chạy brew install ssh-copy-id
, nếu sử dụng Linux, nó đã có sẵn. Chạy ssh-copy-id
trên máy bạn (không phải server), thay thế IPADDRESS bằng IP của VPS:
ssh-copy-id deploy@IPADDRESS
Đăng nhập vào VPS:
ssh deploy@IPADDRESS
Cài một số thư viện cần thiết:
sudo apt-get update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
Cài ruby sử dụng rbenv:
cd ~
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
rbenv install 2.2.3
rbenv global 2.2.3
ruby -v
Cài bundler:
echo "gem: --no-ri --no-rdoc" > ~/.gemrc
gem install bundler
Cài nginx và Passenger:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
# Add Passenger APT repository
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update
# Install Passenger & Nginx
sudo apt-get install -y nginx-extras passenger
Khởi động nginx:
sudo service nginx start
Mở file /etc/nginx/nginx.conf
để cấu hình nginx để trỏ Passenger vào phiên bản Ruby chúng ta đang sử dụng:
sudo vim /etc/nginx/nginx.conf
Tìm các dòng sau và bỏ comment:
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /home/deploy/.rbenv/shims/ruby;
Chạy sudo service nginx restart
để khởi động lại nginx với cấu hình Passenger mới.
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
sudo apt-get install postgresql postgresql-contrib libpq-dev
Thiết lập tài khoản PostgreSQL:
sudo su - postgres
createuser --pwprompt
exit
Thêm Capistrano vào Gemfile
:
gem 'capistrano', '~> 3.1.0'
gem 'capistrano-bundler', '~> 1.1.2'
gem 'capistrano-rails', '~> 1.1.1'
gem 'capistrano-rbenv', github: "capistrano/rbenv"
Chạy bundle --binstubs
và cap install STAGES=production
để sinh ra cấu hình capistrano.