Thứ năm, 30/01/2014 | 00:00 GMT+7

Cách triển khai với Mina: Bắt đầu

Nếu bạn đang tìm cách để hỗ trợ một số hành động bạn thực hiện hàng ngày, như một tìm kiếm đơn giản sẽ cho thấy, có rất nhiều công cụ sẵn có. Nếu bạn kiểm tra chúng, bạn sẽ thấy rằng tất cả chúng đều tuyên bố sẽ làm cho thủ tục đưa ứng dụng của bạn lên mạng (tức là triển khai nó) dễ dàng hơn cho bạn. Tuy nhiên, chúng hầu như không khác nhau - và chúng cũng có thể khá phức tạp để sử dụng.


Trình triển khai Mina và công cụ tự động hóa, có thể xuất hiện không khác so với phần còn lại, thực sự khá đặc biệt. Trong bài viết DigitalOcean này, ta sẽ tìm hiểu một cách khác để tự động hóa các việc server từ xa, bao gồm một khu vực rộng lớn từ quản lý quy trình đến triển khai ứng dụng thực sự, sử dụng Mina: trình tạo tập lệnh Bash và công cụ thực thi từ xa được xây dựng trên RAKE .

Bảng chú giải


1. Hiểu Mina & Rake


  1. Mina Deployer And Automation Tool
  2. RAKE - Ruby Make

2. Bắt Mina


  1. Chuẩn bị Hệ thống
  2. Cài đặt Môi trường Ruby và Rails
  3. Cài đặt Mina

3. Bắt đầu với việc sử dụng Mina


  1. Khởi xướng Mina
  2. Tạo user triển khai trên server triển khai

4. Làm việc với config / deploy.rb


  1. Xác định server
  2. Triển khai ứng dụng
  3. Xác định nhiệm vụ triển khai
  4. Làm việc với Nhiệm vụ & Nhiệm vụ phụ

5. Ví dụ: Triển khai một ứng dụng Rails


Hiểu Mina và RAKE


May mắn là không có "khoa học tên lửa" đằng sau Mina. Đây là một công cụ Ruby / RAKE rất đơn giản để sử dụng giúp bạn tự động hóa việc thực thi các việc từ xa - thường liên quan đến triển khai.

Mina Deployer And Automation Tool


Mina là một công cụ dựa trên Ruby. Nó ở đó để giúp mọi người tạo các tập lệnh chứa danh sách các nhiệm vụ cần thực hiện, được group lại dưới một tên, để tạo thuận lợi cho các hoạt động hàng ngày. Mina chuyển đổi các file lập trình dựa trên RAKE này thành các tập lệnh Bash, kết nối với một server từ xa được xác định và thực thi chúng.

Nó thực sự khá nhanh, và có lẽ nhanh như một công cụ cùng thể loại của nó có thể có được, vì tất cả những gì nó làm là kết nối với server và chạy các chương trình Bash.

Mặc dù một số người chỉ trích Mina và gọi nó là nguyên thủy, nhưng với các tính năng tuyệt vời của nó (ví dụ như xếp hàng các việc , rất tiện dụng!), Rất nhiều thứ có thể đạt được rất suôn sẻ, không gặp trục trặc, với tốc độ tuyệt vời.

Để bạn hiểu rõ hơn không chỉ về Mina mà còn về các công cụ như vậy nói chung, đây là danh sách ngắn về những việc có thể làm và khi nào Mina có thể hữu ích:

  • Chuẩn bị và cài đặt server : Nếu bạn phải tạo và phá hủy các server ảo liên tục, bạn sẽ tốn rất nhiều thời gian để cài đặt chúng. Sử dụng Mina, bạn có thể tự động hóa quy trình.

  • Triển khai ứng dụng: Cho dù bạn có ứng dụng server HTTP tại chỗ hay không, bạn có thể sử dụng Mina để cập nhật mã nguồn của ứng dụng trên (các) máy triển khai và tự động chạy version mới mà không cần xử lý FTP hoặc các công cụ khác.

  • Quản lý quy trình: Điều này nghe có vẻ rất chung chung, nhưng hãy tưởng tượng bạn cần bao nhiêu lần (có thể là mỗi ngày) để quản lý một số quy trình đang chạy trên một server , chẳng hạn như server ứng dụng, proxy hoặc Reverse Proxy mặt trước Nginx điển hình của bạn. Với các nhiệm vụ của Mina, bạn có thể tạo điều kiện thuận lợi cho việc này và có được một động lực tốt - giữ mọi thứ được ngăn nắp cùng một lúc.

  • Sống trong một thế giới không có Rails : Mina có thể làm tất cả những điều trên, và hơn thế nữa, mà không cần phải dựa dẫm, phụ thuộc hay trung thành với Rails. Với Mina, bạn có thể triển khai hầu hết mọi thứ.

Các tập lệnh deploy.rb của Mina thực sự là các file RAKE với một loạt các nhiệm vụ được group lại. Mọi thứ đều được viết bằng Ruby mà không cần xử lý các loại cấu hình khác - bạn không cần phải làm quen với bất kỳ điều gì mới mà bạn sẽ khó sử dụng lại.

RAKE - Ruby Make


Các nhà phát triển web, lập trình viên và bất kỳ ai làm việc với khoa học hoặc máy tính phải hiểu rõ về các công cụ họ sử dụng. Trong trường hợp của Mina, điều kỳ diệu đến từ RAKE .

Tuy nhiên, RAKE là gì?

RAKE là một loạt các thành phần, công cụ và định nghĩa về bản chất tương tự như GNU Make . Make là một trong những tiện ích phổ biến và rộng rãi nhất, đã được tích hợp vào hệ thống Unix kể từ khi được giới thiệu vào cuối những năm 1970. Nó thực sự trở nên phổ biến vì tính chất độc lập với hệ thống và khả năng nó cung cấp để kết hợp các lệnh và hướng dẫn vào một file duy nhất, được gọi là “tệp trang điểm”. Các file này và Make as a tool được sử dụng để xây dựng các ứng dụng (tức là biên dịch mã nguồn và tạo các file binary thực thi).

Rake có thể được coi là một ngôn ngữ xây dựng . Nó được sử dụng để dễ dàng xác định các việc theo cách có cấu trúc để được thực thi trong dòng lệnh. Về bản chất, các lệnh này thường liên quan đến quản trị hệ thống, chẳng hạn như triển khai ứng dụng hoặc quản lý server . Cấu trúc này của Rake có thể được coi là một ngôn ngữ dành riêng cho domain , được viết bằng Ruby, theo đó mọi thứ được xác định và cài đặt theo một cách nhất định trong các ranh giới. Nó được gọi là công cụ xây dựng vì, như đã mô tả trước đây, các hoạt động của nó thường liên quan đến việc xây dựng một cái gì đó (ví dụ: thư viện, ứng dụng, v.v.)

RAKE có thể nhận được thông qua RubyGems.

Để truy cập trang chính thức của dự án RAKE, hãy nhấp vào đây . Để tìm hiểu thêm về RAKE, hãy xem bài viết chi tiết, xuất sắc này về chủ đề: Sử dụng ngôn ngữ xây dựng Rake .

Bắt Mina


Khi sử dụng Mina, bạn cần đảm bảo có một môi trường Ruby ổn định với các phụ thuộc cần thiết được cài đặt và hoạt động tốt - chẳng hạn như gem .

Trong phần này, ta sẽ bắt đầu với việc tạo môi trường Ruby trên hệ thống CentOS 6. Từ đó, bạn có thể sử dụng Mina để tự động hóa các thủ tục trên server triển khai của bạn .

Chuẩn bị Hệ thống


Để cài đặt Ruby, trước tiên ta cần chuẩn bị server CentOS được vận chuyển tối thiểu.

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

yum -y update  # This command will update all the base applications # that come with CentOS by default. Which are mostly # reserved for use by the operating system.  

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'  # With more recent versions of CentOS, such as 6.5 in our case, # you can simply run: # yum groupinstall -y development # instead.  # This bundle of applications contains various tools # Such as: gcc, make, automake, binutils, git etc. 

Một số thư viện và gói tiện dụng (ví dụ: libyaml-devel, nginx, v.v.) không được tìm thấy trong repository lưu trữ CentOS chính thức. Để đơn giản hóa mọi thứ và không phải đối phó với việc cài đặt chúng theo cách thủ công, ta sẽ thêm repository EPEL cho trình quản lý gói YUM để sử dụng. Điều này sẽ cho phép download phần mềm bổ sung đơn giản.

# Enable EPEL Repository sudo su -c 'rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'  # Update everything, once more. yum -y update 

Cuối cùng, ta cần lấy curl-devel và một số công cụ và thư viện khác cho hướng dẫn này (ví dụ: Rails cần sqlite-devel).

Để cài đặt chúng, hãy chạy như sau:

yum install -y curl-devel nano sqlite-devel libyaml-devel 

Cài đặt Môi trường Ruby và Rails


Lưu ý: Phần này là phần tóm tắt của bài viết dành riêng của ta Cách cài đặt Ruby 2.1.0 trên CentOS 6.5 .

Ta sẽ sử dụng Trình quản lý version Ruby (RVM) để download và cài đặt trình thông dịch Ruby.

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 quá trình cài đặt 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 

Vì Rails trước hết cần một trình thông dịch JavaScript để hoạt động, ta cũng cần cài đặt Node.js. Vì mục đích này, ta sẽ sử dụng trình quản lý gói hệ thống mặc định YUM.

Chạy phần sau để download và cài đặt nodejs bằng yum :

yum install -y nodejs 

Thực hiện lệnh sau để download và cài đặt rail bằng gem :

gem install bundler rails 

Cài đặt Mina


Có một số cách để tải Mina. Cách đơn giản nhất là sử dụng RubyGems.

Chạy phần sau để download và cài đặt Mina:

gem install mina 

Bắt đầu với việc sử dụng Mina


Khi giới thiệu mina vào dự án của bạn, điều đầu tiên cần thiết là khởi tạo mina bên trong folder dự án.

Sau đó, bạn có thể chỉnh sửa config/deploy.rb do Mina tạo để xác định server của bạn và các việc cần thực hiện.

Khởi xướng Mina


Nhập folder dự án của bạn và chạy lệnh sau:

# Enter your project directory: cd ~/project_dir  # Initiate Mina mina init  # -----> Created ./config/deploy.rb #        Edit this file, then run `mina setup` after. 

Tạo user triển khai trên server triển khai


Đó là một lựa chọn lành mạnh để tạo một user , không phải root, để thực hiện các hành động triển khai sẽ được sử dụng và gọi bởi Mina. Với mục đích này, hãy tạo trên server từ xa một user deployer .

Tạo user hệ thống mới:

adduser deployer 

Cài đặt password của người triển khai:

passwd deployer  # Enter a password # Confirm the password 

Chỉnh sửa /etc/sudoers bằng editor nano:

nano /etc/sudoers 

Cuộn xuống file và tìm nơi root được xác định:

..  ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root    ALL=(ALL)   ALL  .. 

Nối phần sau ngay sau root ALL = (TẤT CẢ) ALL :

deployer ALL=(ALL) ALL 

Phần này của file /etc/sudoers bây giờ sẽ trông giống như sau:

..  ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root     ALL=(ALL)  ALL deployer ALL=(ALL) ALL  .. 

Nhấn CTRL + X và xác nhận với Y để lưu và thoát.

Làm việc với config / deploy.rb


Tiếp theo, mở file deploy.rb , được tạo bởi Mina, để xác định server triển khai của bạn và cài đặt nhiệm vụ.

nano config/deploy.rb 

Xác định server


Bước đầu tiên là chỉnh sửa dòng :domain để đặt địa chỉ server của bạn.

Tìm và sửa đổi cấu hình liên quan để phù hợp với server ảo của bạn:

# Basic settings: #   domain   - The hostname to SSH to. #   deploy_to    - Path to deploy into. #   repository   - Git repo to clone from. (needed by mina/git) #   branch   - Branch name to deploy. (needed by mina/git)  # Default: # set :domain, 'foobar.com'  # Change the default to match your server's address # Example: set :domain, 'server.domain.tld' # or # set :domain, '162.243.74.190'  # Optional settings: #   set :user, 'foobar'    # Username in the server to SSH to. #   set :port, '30000'     # SSH port number.  set :user, 'deployer' set :port, '22' 

Triển khai ứng dụng


Sử dụng Mina, bạn có thể dễ dàng triển khai các ứng dụng của bạn từ một repository trung tâm và được lưu trữ như Github. Như đã đề cập trong phần trước, bạn có thể đạt được điều này bằng cách cài đặt các tham số deploy_torepository , cũng như deploy_to branch nếu cần.

Thí dụ:

# Application's deployment location on the remote server # Example: set :deploy_to, '/var/www/my_app'  set :repository, 'git://...' set :branch, 'master' 

Xác định nhiệm vụ triển khai


deploy.rb của Mina đi kèm với một số tác vụ ví dụ được đặt, nhắm đến Rails cho lệnh mina deploy .

Thí dụ:

desc "Deploys the current version to the server." task :deploy => :environment do   deploy do     # Put things that will set up an empty directory into a fully set-up     # instance of your project.     invoke :'git:clone'     invoke :'deploy:link_shared_paths'     invoke :'bundle:install'     invoke :'rails:db_migrate'     invoke :'rails:assets_precompile'      to :launch do       queue "touch #{deploy_to}/tmp/restart.txt"     end   end end 

Làm việc với Nhiệm vụ & Nhiệm vụ phụ


Bạn có thể xác định và xâu chuỗi các nhiệm vụ với Mina, điều này có thể thực sự hữu ích trong nhiều trường hợp.

Dưới đây là một ví dụ về cách làm việc với các nhiệm vụ và xâu chuỗi chúng từ tài liệu chính thức:

task :down do   invoke :maintenance_on   invoke :restart end  task :maintenance_on   queue 'touch maintenance.txt' end  task :restart   queue 'sudo service restart apache' end 

Ví dụ: Triển khai một ứng dụng Rails


Để tìm hiểu về cách triển khai ứng dụng Rails thực tế và cách làm việc với deploy.rb tương ứng, hãy xem Cách sử dụng Mina để triển khai ứng dụng Ruby on Rails trong phần bài viết cộng đồng DigitalOcean.

Lưu ý: Sử dụng các nguyên tắc giống nhau, bạn có thể triển khai bất kỳ loại ứng dụng nào với Mina.

<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