Thứ tư, 22/01/2014 | 00:00 GMT+7

Cách sử dụng Capistrano để triển khai tự động: Bắt đầu

Một trong những lĩnh vực chính của việc production các ứng dụng dựa trên web và là nơi mà nhiều công ty lớn tự hào là triển khai. Chính xác hơn là cách triển khai . Nhiệm vụ này, mà một số người thực sự coi là một công việc vặt, dường như có thể thêm ít hoặc không có giá trị trực tiếp hoặc bổ sung cho dự án của bạn. Tuy nhiên, một quy trình được xây dựng kỹ [triển khai] chắc chắn sẽ giúp giảm thiểu các chi phí chung, chẳng hạn như lãng phí thời gian khi cố gắng đưa sản phẩm vào thị trường.


Trừ khi bạn có các yêu cầu rất cụ thể (và đang thay đổi), với các nhu cầu hoàn toàn tập trung vào domain , thì khi đến lúc đưa ứng dụng của bạn lên mạng, việc tận dụng các công cụ chuyên dụng khác nhau, các phương pháp tự động hóa hoặc tập lệnh sẽ giúp bạn quay trở lại công việc thực tế của bạn là phát triển nhanh hơn - rất nhiều!

Trong bài viết DigitalOcean này, ta sẽ tìm hiểu kỹ về Capistrano: một công cụ tự động hóa server từ xa dựa trên Ruby có thể dễ dàng sử dụng để tự động hóa các việc triển khai và quản lý hệ thống thông thường. Sử dụng Capistrano, bạn gần như hoàn toàn có thể tự động hóa tất cả các hành động mà bạn thường làm để đưa sản phẩm của bạn vào hoạt động.

Mục lục


1. Capistrano


  1. Ngôn ngữ lập trình Ruby
  2. Capistrano Recipes
  3. Quản trị Hệ thống / Server
  4. Triển khai ứng dụng

2. Cài đặt Capistrano


  1. Chuẩn bị Hệ thống
  2. Cài đặt Ruby
  3. Cài đặt Capistrano

3. Bắt đầu với Capistrano


  1. Kiến thức cơ bản về Capistrano
  2. Khởi tạo Capistrano Inside A Project
  3. Tạo user để triển khai với Capistrano

Capistrano


Capistrano, như đã đề cập trong phần giới thiệu của ta , là một công cụ quản lý server open-souce , dựa trên Ruby. Mặc dù nó có thể ra đời chỉ như một giải pháp thay thế khác cho nhiều giải pháp tự động hóa hiện có, nhưng nó là một giải pháp tuyệt vời để sử dụng nhờ các tính năng [nâng cao] tuyệt vời của nó.

Tương tự như các thư viện tự động hóa khác, sử dụng các chức năng tùy ý của Capistrano có thể được thực hiện trên server ảo mà không cần can thiệp trực tiếp - bằng cách để Capistrano thực thi một tập lệnh (tức là một công thức). Tuy nhiên, nói chung, bạn có thể coi công cụ này như một trợ lý triển khai của riêng mình, giúp bạn hầu hết mọi thứ từ việc lấy mã trên máy triển khai của bạn đến khởi động quá trình triển khai - và nó có thể thực hiện việc này trên nhiều hệ thống cùng một lúc hoặc trong một thời trang vòng tròn.

Xem qua nhiều hướng dẫn trên internet, bạn có thể có ấn tượng rằng Capistrano là khung hoàn hảo cho RoR. Tuy nhiên, mặc dù là một framework (hoặc công cụ) tập trung vào Ruby, bạn có thể sử dụng nó một cách an toàn để xử lý nhiều loại tình huống triển khai khác nhau với các công thức của nó, bao gồm cả việc triển khai các ứng dụng web PHP.

Ngôn ngữ lập trình Ruby


Ruby là một ngôn ngữ lập trình có mục đích chung (tức là không được tạo ra để giải quyết một vấn đề cụ thể), ngôn ngữ lập trình động đã trở nên phổ biến đáng kể với việc phát hành khung phát triển ứng dụng web Ruby-on-Rails.

Cách ngắn gọn và có trật tự mà người ta có thể sử dụng Ruby để viết script (nhờ vào cách ngôn ngữ được thiết kế) đã giúp ngôn ngữ này đạt được động lực rất lớn. Cùng với mục tiêu và tâm lý của khuôn khổ RoR, và các tính năng mà nó cung cấp như một ngôn ngữ Lập trình hướng đối tượng (OOP) (so với các đối thủ cạnh tranh có sẵn vào thời điểm đó), Ruby đã trở thành một trong những ngôn ngữ được ưa thích rộng rãi nhất trong thập kỷ qua.

Capistrano, là một công cụ dựa trên Ruby, cung cấp cho user khả năng tận dụng cú pháp rõ ràng và rõ ràng của Ruby khi biên dịch các công thức của nó để triển khai.

Capistrano Recipes


Công thức nấu ăn trong biệt ngữ Capistrano dịch sang các file chứa hướng dẫn hoạt động để triển khai (hoặc quản lý) các ứng dụng và server .Những công thức này có thể được sửa đổi để hỗ trợ rất nhiều cách triển khai ngôn ngữ cụ thể không liên quan đến Ruby (hoặc Rails). Bạn có thể coi chúng như một tập lệnh mà Capistrano sử dụng để thực hiện các hành động của bạn .

Quản trị Hệ thống / Server


Nếu bạn đang tự hỏi Capistrano có thể có ích trong những trường hợp nào, dưới đây bạn có thể tìm thấy một vài ví dụ.

Công việc quản trị hệ thống và server (thường) bao gồm khá nhiều thứ liên quan đến:

  • Xây dựng server

  • Cài đặt ứng dụng

  • Bảo trì hệ thống chạy các ứng dụng này

  • Và giám sát

Khi bạn bắt đầu làm việc với VPS của riêng mình (là một server ảo chính thức có toàn quyền kiểm soát / truy cập), những thứ xuất hiện như một bí ẩn sẽ nhanh chóng trở nên quen thuộc với bạn.

Khi ứng dụng của bạn bắt đầu trở nên phổ biến và mọi thứ bắt đầu phát triển, nhu cầu quản lý nhiều server và lặp đi lặp lại mọi thứ không còn trở nên thú vị. Khi bạn triển khai các ứng dụng của bạn và xử lý việc bảo trì chúng, điều hiển nhiên là bạn sẽ gặp phải một số vấn đề - đặc biệt là chi phí và lãng phí thời gian.

Capistrano có thể giúp họ hầu hết, nếu không phải là tất cả - bắt đầu với việc triển khai ứng dụng.

Triển khai ứng dụng


Triển khai một ứng dụng ( dù đó là trang web, API hay server ) thường nghĩa là cài đặt hệ thống từ đầu (hoặc từ một ảnh chụp nhanh được chụp kịp thời), chuẩn bị bằng cách cập nhật mọi thứ, download các phụ thuộc, cài đặt file cấu trúc và quyền, sau đó cuối cùng là tải lên cơ sở mã của bạn - hoặc download bằng trình quản lý kiểm soát nguồn (SCM) chẳng hạn như Git.

Trong quá trình phát triển, rất có thể bạn sẽ có các lệnh cần được thực hiện thường xuyên trong mỗi bước (ví dụ ngay trước khi bước vào một chu kỳ triển khai).

Có thể viết kịch bản cho các việc này (cả local và từ xa), theo cách tổ chức hợp lý và - quan trọng nhất - có thể lập trình được chứng tỏ là vô giá ngay sau khi bạn nhận ra rằng đã lãng phí bao nhiêu thời gian để lặp lại các bước tương tự liên tục, hiển thị mọi thứ dễ xảy ra lỗi trong quá trình.

Cài đặt Capistrano


Lưu ý: Trong bài viết này, ta tập trung vào việc cài đặt Capistrano trên VPS, chạy trên hệ điều hành CentOS 6.5. Nếu bạn đang làm việc với một phân loại khác (ví dụ: Ubuntu), logic tương tự sẽ áp dụng nhưng bạn nên kiểm tra tài liệu Capistrano chính thức tại đây để cài đặt.

Lưu ý: Phần này, theo đó ta cài đặt hiện có, version Ruby mới nhất là phần tóm tắt của bài viết chuyên dụng của ta về chủ đề - Cách cài đặt Ruby 2.1.0 trên CentOS 6.5 .

Chuẩn bị Hệ thống


Để cài đặt Ruby (và Capistrano), ta cần chuẩn bị server CentOS được vận chuyển tối thiểu của bạn , trang bị cho nó các công cụ phát triển được tạo cho mục đích cài đặt các ứng dụng và công cụ khác (ví dụ: trình biên dịch để cài đặt Ruby từ nguồn).

Hãy bắt đầu với việc cập nhật hệ thống của ta .

Chạy phần sau để cập nhật các công cụ mặc định của server dựa trên CentOS của bạn:

yum -y update 

Cài đặt gói chứa các công cụ phát triển bằng cách chạy lệnh sau:

yum groupinstall -y 'development tools' 

Cài đặt Ruby


Ta sẽ sử dụng Trình quản lý version Ruby, RVM, để download và cài đặt “rubies” (một trình thông dịch Ruby, được gọi là RVM).

Chạy hai lệnh sau để cài đặt RVM và tạo môi trường hệ thống cho Ruby:

curl -L get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh 

Cuối cùng, để hoàn tất việc tải Ruby trên hệ thống của ta , hãy tải RVM để download và cài đặt version Ruby 2.1.0:

rvm reload rvm install 2.1.0 

Để xác minh Ruby thực sự đã được cài đặt và cài đặt , hãy chạy như sau:

ruby --version  # ruby 2.1.0p0 (2013-12-25 revision 44422) [i686-linux] 

Cài đặt Capistrano


Sau khi ta đã sẵn sàng hệ thống của bạn , việc tải version mới nhất của Capistrano nhờ RubyGems thật dễ dàng.

Bạn chỉ cần sử dụng những cách sau để tải Capistrano version 3:

gem install capistrano 

Nếu bạn muốn làm việc với version hoàn toàn mới nhất, bạn có thể liên kết đến repository Github:

git clone https://github.com/capistrano/capistrano.git cd capistrano gem build *.gemspec gem install *.gem 

Bạn có thể xác minh cài đặt Capistrano của bạn theo cách tương tự như của Ruby:

cap --version # Capistrano Version: 3.1.0 (Rake Version: 10.1.0) 

Bắt đầu với Capistrano


Khi tất cả các thành phần cần thiết đã được cài đặt và sẵn sàng, ta có thể tiếp tục với những kiến thức cơ bản về Capistrano trong phần cuối cùng của bài viết bắt đầu.

Kiến thức cơ bản về Capistrano


Key để làm việc với Capistrano là commit dự án của bạn vào một repository Git bên ngoài, nơi nó có thể được download trong quá trình triển khai.

Bạn có thể chọn bất kỳ nhà cung cấp nào như Github để thực hiện .

Ngoài ra, bạn có thể xem các bài viết cộng đồng của DigitalOcean trên Git bằng cách truy cập vào đây để tìm hiểu về cách lưu trữ repository Git riêng tư trên VPS hoặc để tìm hiểu về cách làm việc với Git.

Lưu ý: Theo khuyến nghị của Capistrano, bạn không nên chứa bất kỳ thông tin nhạy cảm nào (ví dụ: thông tin xác thực an toàn cho các kết nối database ) bên trong repository lưu trữ của bạn.

Khởi tạo Capistrano Inside A Project


Chạy Capistrano version 3 hơi khác so với version 2 và bao gồm lệnh sau:

# Usage: # Enter the project directory: cd [project-name] # Initiate Capistrano:         cap install cd  myapp cap install 

Tạo user để triển khai với Capistrano


Khi sử dụng Capistrano cho việc triển khai, cách tốt của thực hiện các công thức nấu ăn là bằng cách sử dụng một người sử dụng khác hơn là mặc định root . Để bắt đầu, ta sẽ tạo một group người triển khai và cấp cho họ quyền để tiếp tục.

Để thêm một group mới vào server của bạn, hãy chạy như sau:

groupadd deployers 

Như vậy, ta có thể tiếp tục thêm user vào group người deployers với quyền truy cập quyền .

Hãy thêm người triển khai làm người triển khai:

# Usage: sudo usermod -a -G deployers [name] sudo usermod -a -G deployers deployer 

Cuối cùng, để cấp cho group người triển khai quyền, hãy chạy phần sau và chỉnh sửa file /etc/sudoers :

nano /etc/sudoers 

Thêm dòng sau vào sau các group :

.. ## Allows people in group wheel to run all commands %deployers      ALL=(ALL) ALL  .. 

Thêm thông tin


Lưu ý: Để tìm hiểu thêm về SSH và sudo, hãy xem các bài viết của cộng đồng DigitalOcean về Cơ bản về Linux .

Và đó là nó! Hiện ta đã sẵn sàng sử dụng Capistrano để triển khai. Tiếp tục với các bài viết tiếp theo về Capistrano của ta để xem cách sử dụng công cụ này trong các tình huống triển khai khác nhau.

<div class = “author”> Gửi bởi: <a
href = “https://twitter.com/ostezer”> Hệ điều hành Tezer </a> </div>


Tags:

Các tin liên quan