12/08/2018, 14:14

Cài đặt Ruby on Rails với Unicorn và Nginx trên server Ubuntu

1.Ruby on Rails Là Gì Ruby on Rails là một khung làm việc (web framework) được viết trên ngôn ngữ lập trình Ruby và được sử dụng trong việc xây dựng và phát triển các ứng dụng web. Phiên bản đầu tiên của Ruby on Rails được giới thiệu ra cộng đồng vào năm 2015. Ruby on Rails là phần mềm mã ...

rubytraining.jpg

1.Ruby on Rails Là Gì

Ruby on Rails là một khung làm việc (web framework) được viết trên ngôn ngữ lập trình Ruby và được sử dụng trong việc xây dựng và phát triển các ứng dụng web. Phiên bản đầu tiên của Ruby on Rails được giới thiệu ra cộng đồng vào năm 2015. Ruby on Rails là phần mềm mã nguồn mở miễn phí được phát triển bởi David Heinemeier Hansson. .

Tại Sao Chọn Rails

Ruby on Rails được xây dựng trên các tập quán hiện đại nhất trong xây dựng và phát triển website do đó khi bạn nắm vững Ruby on Rails bạn sẽ dễ dàng chuyển sang một web framework khác.

Ruby on Rails có cấu trúc trong sáng và dễ hiểu rất dễ tiếp cận cho những lập trình viên mới vào nghề. Ngoài ra, Rails cung cấp cho chúng ta công cụ cửa sổ dòng lệnh CLI giúp tự động hoá nhiều công việc thường gặp khi lập trình qua đó tăng tốc độ và hiệu suất làm việc.

Ngoài ra, Ruby on Rails cũng là một trong những web framework được sử dụng phổ biến nhất hiện nay và được sử dụng bởi nhiều website lớn trên thế giới trong đó có mạng xã hội Twitter, trang mạng xã hội cho lập trình viên Github, công cụ quản lý dự án hàng đầu Redmine...

Ruby on Rails và Ruby

Ruby là ngôn ngữ lập trình, sử dụng Ruby các lập trình viên có thể phát triển nhiều loại ứng dụng khác nhau ngoài việc tạo website ví dụ như các phần mềm chạy trên máy tính cá nhân hay máy chủ.

Ruby on Rails là web framework được viết sử dụng ngôn ngữ Ruby. Ruby on Rails chỉ giới hạn trong việc xây dựng và phát triển các ứng dụng web.

2. Cài đặt Ruby On Rails

Ở đây tôi cài Ruby on Rails trên môi trường Ubuntu 14.04

Ruby -v 2.3.1

Rails -v 5.0.0.1

MySql with Rails

Unicorn -v 5.2.0

2.1 Cài đặt Ruby

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

Sau khi update và cài đặt vài gói cần thiết chúng ta có 3 cách để cài đặt ruby.

Cách 1: Using rvm

 sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
 gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
rvm install 2.3.1
rvm use 2.3.1 --default
ruby -v

** Cách 2: From Source **

 cd
wget http://ftp.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
tar -xzvf ruby-2.3.1.tar.gz
cd ruby-2.3.1/
./configure
make
sudo make install
ruby -v

Cách 3: Using rbenv

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL

rbenv install 2.3.1
rbenv global 2.3.1
ruby -v

Sau khi cài đặt xong, hãy thử lại câu lệnh ruby -v để check thử chúng ta đã cài thành công ruby chưa. ruby-v.PNG

2.2 Cài đặt Rails

Cài đặt Nodejs.

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo gem install rails
rails -v

Sau khi cài đặt xong, hãy thử câu lệnh rails-v để check thử đã cài thành công rails chưa. rails-v.PNG

2.3 Cài đặt mysql

apt-get install mysql-server-5.6 mysql-client-5.6
apt-get install libmysqlclient18  libmysqlclient-dev

Trong quá trình cài đặt nhớ lưu lại password root của mysql nhé.

Dể ứng dụng rails connect được với Mysql chúng ta cần cài đặt thêm gói mysql2

 gem install mysql2

Sau khi cài đặt gói này, thì App rails của bạn đã có thể kết nối tới mysql. Như vậy là tôi đã cài xong môi trường cho Ruby on rails.

** 3.1 Tạo app Rails và kết nối tới database mysql**

Tạo thư mục chứa app rails ở mục home của tôi và sử dụng câu lệnh -d mysql để đặt mysql là database của app rails vừa được tạo

 cd ~
 rails new appname -d mysql

** 3.2 Tạo kết nối giữa app rails và database mysql**

 cd appname
 vi config/database.yml

Tìm đến dòng password: mysql_root_password và thay mysql_root_password bằng password root mysql bạn lập khi cài đặt mysql ở bước 2.3

mysql.PNG

Như trong hình thì password mysql của tôi ở đây là 1990.

Lưu.

3.3 Tạo database cho ứng dụng

cd appname
rake db:create

Nếu quá trình tạo database báo lỗi "Access denied for user 'root'@'localhost' (using password: YES)Please provide the root password for your MySQL installation" thì hãy quanh lại bước 3.2, chỉnh sửa password trong file config/database.yml sao cho chính xác.

3.4 Chạy thử server rails

cd appname
rails server

rails server.PNG

    rails server --binding 172.16.4.230

rails server binding.PNG172164230.PNG

4. Cài đặt và cấu hình Unicorn

    sudo gem install unicorn

Tạo file unicorn.rb trong thư mục app rails mình vừa tạo ở trên /home/framgia/appname/config/unicorn.rb

    # set path to the application
    app_dir git File.expand_path("../..", __FILE__)
    shared_dir = "#{app_dir}/shared"
    working_directory app_dir

    # Set unicorn options
    worker_processes 2
    preload_app true
    timeout 30

    # Path for the Unicorn socket
    listen "#{shared_dir}/sockets/unicorn.sock", :backlog => 64

    # Set path for logging
    stderr_path "#{shared_dir}/log/unicorn.stderr.log"
    stdout_path "#{shared_dir}/log/unicorn.stdout.log"

    # Set proccess id path
    pid "#{shared_dir}/pids/unicorn.pid"

Tạo 3 thư mục được đề cập trong file unicorn.rb

 mkdir -p shared/pids shared/sockets shared/log

5. Cài đặt và cấu hình Nginx

Cài đặt nginx

   sudo apt-get install nginx

Chúng ta cấu hình nginx như reverse proxy. Chỉnh sửa file /etc/nginx/nginx.conf

 upstream rails {
server unix:/home/framgia/appname/shared/sockets/unicorn.sock fail_timeout=0;
}

Xóa cấu hình nginx mặc định

sudo rm /etc/nginx/sites-enabled/default

Tạo file cấu hình nginx mới cho ứng dụng rails trong thư mục /etc/nginx/sites-available/appname

server {
listen 80;
server_name localhost;

root /home/framgia/appname;

try_files $uri/index.html $uri @rails;

location @rails {
   proxy_pass http://rails;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
   proxy_redirect off;
}

error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}

.

sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled

restart lại nginx

sudo service nginx restart

Chạy unicorn

sudo unicorn -c config/unicorn.rb -E development -D
sudo unicorn -c config/unicorn.rb -E production -D
0