[Ruby on Rails] Chạy và thiết lập ứng dụng Rails ở chế độ Production


Sau khi phát triển xong App/Web bằng Ruby on Rails, điều mà chúng ta cần nghĩ đến là đưa sản phẩm lên internet. Trong bài viết này, VinaSupport sẽ hướng dẫn các bạn chuyển đổi ứng dụng Rails (website) sang chế độ Production Mode.

Chạy ứng dụng Rails ở chế độ Production

Tiền đề của hướng dẫn là chạy ứng dụng Rails 5 trên môi trường server, cài đặt hệ điều hành Ubuntu

Bước 1: Vào thư mục chứa source Rails, chạy lệnh bundle để cài đặt các gem cần thiết.

bundle

Bước 2: Tạo secret key (Khóa bảo mật) cho ứng dụng Rails

bin/rake secret

Copy secret key của bạn để thực hiện bước tiếp theo.

Bước 3: Thiết lập các biến môi trường cho Ứng dụng Rails

– Sửa file /etc/environment, thêm các biến môi trường sau:

SECRET_KEY_BASE=<secret_key>
RAILS_SERVE_STATIC_FILES=true 
RAILS_ENV=production

Sau đó logout và login lại

Bước 4: Tạo database, migrate bảng CSDL và dữ liệu ở chệ độ Production

rails db:create db:migrate db:seed

Bước 5: Tạo thư mục public/assets chứa các file js, css, images, font… cho web/app Rails

rails assets:precompile

Bước 6: Chạy Rails ở Production Mode

rails s -d -b 127.0.0.1

Với

  • -d : Chạy ứng dựng Rails ở chế độ background
  • -b 127.0.0.1: Để ứng dụng Rails lắng nghe trên địa chỉ IP 127.0.0.1, mục đích của mình sử dụng Nginx để proxy pass sang cổng 80.

Bước 7: Cài đặt nginx server

Mặc đinh ưng dụng Rails của bạn sẽ chạy trên cổng 3000, điều này khá bất tiện. Vì vậy mình sẽ cài đặt Nginx và sửu dụng Nginx để chuyển đổi nó sang cổng 80.

sudo apt install nginx

Bước 8: Cấu hình Nginx để chạy ứng dụng Rails

– Sửa file /etc/nginx/sites-available/default

server {
...
location / {
  proxy_pass http://127.0.0.1:3000;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Forwarded-Port $server_port;
  proxy_set_header X-Forwarded-Host $host;
}
...
}

Giờ bạn có thể truy cập tới web/app Rails của bạn với địa chỉ http://<domain.com>

Nếu bạn thay đổi file css, js thì nhớ chạy 2 lệnh sau để compile lại thư mục assets trên server.

rails assets:clobber
rails assets:precompile

Stop Rails Server

Để dừng và khởi động lại Rails Server ở môi trường Production ta có thể sử dụng các cách sau:

kill -INT $(cat tmp/pids/server.pid)

Hoặc tìm process ID

lsof -wni tcp:3000

Sau đó kill Process ID vừa tìm được bằng command:

kill -9 PID

Các lỗi gặp phải

Khi thực hiện command rails assets:precompile có thể gặp lỗi dưới đây.

Fix lỗi: Uglifier::Error: Unexpected token: punc ((). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true)

Thì sửa file config/environments/production.rb, thay thế

config.assets.js_compressor = :uglifier

Thành

config.assets.js_compressor = Uglifier.new(harmony: true)

Nguồn: vinasupport.com

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web