fbpx

Over 10 years we help companies reach their financial and branding goals. Engitech is a values-driven technology agency dedicated.

Gallery

Contacts

411 University St, Seattle, USA

engitech@oceanthemes.net

+1 -800-456-478-23

Công nghệ

Triển khai một Ứng dụng Rails lên máy chủ Dokku

Giới thiệu

Triển khai một ứng dụng Rails có rất nhiều cách khác nhau, có nhiều nền tảng và công cụ hổ trợ cho việc này. Một trong những cách đó là deploy ứng dụng ứng dụng rails lên một máy chủ được cài đặt Dokku. Bài viết này sẽ cung cấp một tổng quan ngắn gọn về Dokku và cách triển khai một ứng dụng Rails lên máy chủ được cài đặt Dokku một cách dễ dàng.

Dokku là gì?

Nếu bắt buộc phải thích một cách ngắn gọn về Dokku thì có thể mô tả Dokku là một dự án mã nguồn mở Platform as a Service thay thế cho Heroku. Dokku tận dụng sức mạnh của Docker để có thể triển khai trên nhiều loại phần cứng và trên các máy chủ giá rẻ. Bạn hoàn toàn có thể tự kiểm soát máy chủ của bạn và tận hưởng các tính năng nổi bật tương tự như Heroku. Ngoài ra, Dokku hổ trợ khá nhiều plugin giúp bạn triển khai đa dạng ứng dụng hơn.

Triển khai một Ứng dụng Rails

Quy trình triển khai một ứng dụng Rails lên máy chủ Dokku rất đơn giản. Đầu tiên, bạn sẽ cần phải cài đặt CLI Dokku, đó là một giao diện dòng lệnh để quản lý và triển khai các ứng dụng. Sau khi cài đặt, bạn có thể sử dụng CLI để triển khai ứng dụng của bạn bằng cách tạo một ứng dụng Dokku và sau đó đẩy mã của bạn lên ứng dụng. Chúng ta hãy đi từng bước nhé.

1. Yêu cầu cấu hình tối thiểu

Một hệ điều hành được cài mới theo danh sách bên dưới:

Máy chủ có một trong các kiến trúc sau:

  • AMD64 (được biết đến cũng như x86_64), Được sử dụng phổ biến cho máy chủ đám mây của Intel.
  • ARMV7 (được biết đến cũng như armhf), Được sử dụng thông dụng cho Raspberry PI.
  • ARMV8 (được biết đến cũng như arm64), Được sử dụng phổ biến cho Raspberry PI và AWS Graviton.

Để tránh máy chủ quá tải và xảy ra các lỗi không mong muốn trong quá trình sử dụng:

cd /var
touch swap.img
chmod 600 swap.img

dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
mkswap /var/swap.img
swapon /var/swap.img
free

echo "/var/swap.img    none    swap    sw    0    0" >> /etc/fstab

Cuối cùng là một tên miền, điều này là không bắt buộc. Tuy nhiên, sử dụng tên miền sẽ giúp ứng dụng của bạn có thể truy cập một cách dễ dàng hơn là một địa chỉ IP.

2. Cài đặt Dokku lên máy chủ

Cài đặt Dokku bằng file bootstrap

wget https://dokku.com/install/v0.29.4/bootstrap.sh #0.29.4 là phiên bản cài đặt
sudo DOKKU_TAG=v0.29.4 bash bootstrap.sh 

Thiết lập SSH key và Virtualhost

# usually your key is already available under the current user's `~/.ssh/authorized_keys` file
cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin

# you can use any domain you already have access to
# this domain should have an A record or CNAME pointing at your server's IP
dokku domains:set-global dokku.me

# you can also use the ip of your server
dokku domains:set-global 10.0.0.2

3. Cài đặt Dokku lên máy chủ

Sau khi hoàn thành cài đặt Dokku lên server, chúng ta sẽ bắt đầu triển khai một ứng dụng rails cơ bản theo các bước sau:

Trong ví dụ này, chúng ta sẽ dùng repo the Heroku Ruby on Rails “Getting Started” app để triển khai.

Clone source code từ git repository về máy chủ.

# from your local machine
# SSH access to github must be enabled on this host
git clone https://github.com/heroku/ruby-getting-started

Tạo một ứng dụng trên Dokku.

# on the Dokku host
dokku apps:create ruby-getting-started

Mặc định, Dokku sẽ không cung cấp các database được cài đặt sẵn mà chúng ta phải cài đặt thông qua các Plugin. Bạn có thể truy cập danh sách các Plugins hiện có từ trang chủ của Dokku, ở đây mình sẽ dùng Postgres nên sẽ cài đặt plugin Postgres được cung cấp từ Dokku.

# on the Dokku host
# install the postgres plugin
# plugin installation requires root, hence the user change
sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git

Tạo một database mới

# create a postgres service with the name railsdatabase
dokku postgres:create railsdatabase

Liên kết ứng dụng đã tạo trước đó với database vừa tạo.

Bằng cách liên kết ứng dụng và database, Dokku sẽ tạo ra một biến môi trường là DATABASE_URL trên ứng dụng Dokku.

# on the Dokku host
# each official datastore offers a `link` method to link a service to any application
dokku postgres:link railsdatabase ruby-getting-started

Thực hiện deploy app ruby-getting-started lên Dokku server. Tất cả những gì bạn cần làm là thêm remote vào git và push source code vào git repository của Dokku.

# from your local machine
# the remote username *must* be dokku or pushes will fail
cd ruby-getting-started
git remote add dokku dokku@dokku.me:ruby-getting-started
git push dokku main:master

Sau khi chạy lệnh git push dokku main:master, bạn sẽ nhận được ouput gần giống như bên dưới đây.

Counting objects: 231, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (162/162), done.
Writing objects: 100% (231/231), 36.96 KiB | 0 bytes/s, done.
Total 231 (delta 93), reused 147 (delta 53)
-----> Cleaning up...
-----> Building ruby-getting-started from herokuish...
-----> Adding BUILD_ENV to build environment...
-----> Ruby app detected
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.2.1
-----> Installing dependencies using 1.9.7
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
       Fetching gem metadata from https://rubygems.org/...........
       Fetching version metadata from https://rubygems.org/...
       Fetching dependency metadata from https://rubygems.org/..
       Using rake 10.4.2

...

=====> Application deployed:
       http://ruby-getting-started.dokku.me

Tổng kết

Installing a Rails application on a Dokku server is a great way to quickly and easily deploy an application. With a few simple commands, you will have your own application running in no time. In addition to the simple commands mentioned above, Dokku can also do many more things with advanced configurations, plugins provided by Dokku, and the community also makes Dokku more flexible and expandable.

Dokku has its advantages but also has its disadvantages, hopefully you will like it and look forward to the upcoming articles related to Dokku.

Avatar photo

Author

Dominic Bui

Leave a comment

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 *