logo

Thông báo

Icon
Error

Chia sẻ
Tùy chọn
Xem
Xem bài viết cuối
Offline Ellry  
#1 Đã gửi : 21/04/2016 lúc 03:54:38(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

1. Vagrant là gì ?

    Vấn đề tồn tại: Trong 1 team sẽ xảy ra trường hợp mỗi 1 lập trình viên làm việc trên 1 hệ điều hành khác nhau. Fan cuồng Windows cài hệ điều hành Windows để làm việc. Fan của những chú chim cánh cụt thì cài các bản phân phối của Linux. Fan quả táo thì cài MacOsX. Làm trong 1 nhóm mà lại không chung môi trường làm việc đôi khi sẽ xảy ra trường hợp mà chỉ những người dùng Windowsw bị mà mấy ông dùng Linux với Unix không bị. Lúc đó lại mất thời gian đi dò bug, đổ tại Windows lởm, blablo.... Mệt mỏi vô cùng. 

    Thật may mắn khi Vagrant của công ty HashiCorp ra đời, nó đã giúp giải quyết bài toán hóc búa trên. Chỉ với vài cài đặt cả nhóm đã có thể làm việc trên cùng 1 môi trường. 

    Đơn giản nó được giải thích như sau: Các bạn vẫn cứ code trên hệ điều hành mà bạn thích còn việc biên dịch hay thông dịch code thì cứ để máy ảo lo và Vagrant sẽ làm công việc đồng bộ dữ liệu của bạn với môi trường máy ảo. Chiếc máy ảo này sẽ được share cho các thành viên trong nhóm. 

    Vagrant là 1 công cụ xây dựng và quản lý các máy ảo, có thể chạy trên Ubuntu, MacOS và cả Windows. Vagrant có thể quản lý nhiều loại máy ảo khác nhau, tự động cài đặt phần mềm cho máy tính mà không quan tâm đang sử dụng OS hay distribution nào.

 2. Lợi ích của việc sử dụng Vagrant

  •  Với Developer

    Tất cả các phần mềm cũng như config khác đều được thực hiện bởi người tạo ra Vagrantfile, tất cả các thành viên sẽ có cùng 1 môi trường phát triển. Không phân biệt bạn dùng Mac, Ubuntu hay Windows, bạn sẽ có cùng môi trường phát triển với các thành viên khác và thậm chí với cả production server. Điều này giảm thiểu được thời gian cài đặt phần mềm, giảm thiểu các bug chỉ xảy ra ở 1 môi trường nhất định

 

  • Với Operations Engineer

    Bạn có thể setup cùng lúc nhiều VM networks 1 cách đơn giản: Nếu chỉ dùng VirtualBox đơn thuần, bạn cần setup lần lượt cho từng máy trong cả hệ thống server. Còn với vagrant, bạn chỉ cần 1 file config và có thể build/edit cùng 1 lúc nhiều máy 1 cách đơn giản.

    Quản lý source 1 cách đơn giản: Bằng việc đẩy tất cả setup vào 1 textfile và quản lý bới subversion control (git chẳng hạn), bạn sẽ dễ dàng kiểm soát các thiết lập của mình. Trong trường hợp có lỗi cũng dễ dàng check thay đổi hoặc revert về trạng thái không lỗi.

    Đa nền tảng: Với hệ thống boxes đa dạng và phong phú, bạn dễ dàng thử với nhiều OS khác nhau cũng như distribution khác nhau. Ngoài ra, với việc sử dụng các provision tool, bạn dễ dàng cài đặt phần mềm trên nhiều dòng OS khác nhau.

 

  • Với Design

     Bạn không còn phải cố gắng thiết lập website chạy trên máy mình 1 cách khó khăn với hàng tá intruction, bạn cũng không cần phải nhìn xem design của mình có chạy ổn trên máy của developer không, điều bạn cần chỉ là cài đặt vagrant, và vagrant up sẽ làm phần còn lại cho bạn. Sau đó, bạn có thể quay lại với công việc của mình, design!

thanks 2 người cảm ơn Ellry cho bài viết.
ngovana trên 18-05-2016(UTC) ngày, Binh1991 trên 28-05-2016(UTC) ngày
Offline Ellry  
#2 Đã gửi : 21/04/2016 lúc 04:00:13(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

3. Cài đặt

Vagrant được viết bằng Ruby, đây là 1 repository thuộc hang top trending của Ruby trên Github, bạn có thể xem source tại trang:

This board requires you to be registered and logged-in before you can view hidden messages.

Bạn cũng không cần phải biết Ruby hay có sẵn Ruby trong máy mới có thể cài đặt được , mà chỉ cần tham khảo 1 số bài viết hướng dẫn cài đặt mình cung cấp sau đây. 

Đây là trang mình tham khảo để cài đặt Vagrant:

 

This board requires you to be registered and logged-in before you can view hidden messages.

Ngoài ra có thể tham khảo thêm tại 1 số site như:

This board requires you to be registered and logged-in before you can view hidden messages.

This board requires you to be registered and logged-in before you can view hidden messages.

This board requires you to be registered and logged-in before you can view hidden messages.

Tuy nhiên, để sử dụng Vagrant và trở thành master Vagrant thì bạn cần có kiến thức về Ruby. 

Nào, bây giờ mình hãy bắt tay vào cài đặt.

3.1. Cài đặt Vitual Box:

 

Link down:

This board requires you to be registered and logged-in before you can view hidden messages.

Do mình đang sử dụng OS Windows7 64bit nên mình sẽ down bản Virtual Box 5.0.2 for Windows host. 

Sơ lược qua về VirsualBox

Tham khảo:

This board requires you to be registered and logged-in before you can view hidden messages.

 

Đây là 1 bài viết rất kĩ về VirtualBox.

  1. Kiến thức cơ bản về VirtualBox

    VirtualBox (viết tắt là VB) là gì? VirtualBox (Oracle VM VirtualBox) là một phần mềm ảo hóa miễn phí. Trước kia nó thuộc về Microsystem nhưng bây giờ VirtualBox đã thuộc sở hữu của Oracle. VirtualBox có thể chạy được trên nhiều hệ điều hành khác nhau, bao gồm Linux (Ubuntu), OS X, Windows,... 

  1. Ảo hóa trên VirtualBox là như thế nào? 

    Đầu tiên VirtualBox được cài vào máy tính, máy tính cài đặt VirtualBox có thể chạy hệ điều hành Linux, OS X, Windows, …

    Thứ hai, phần mềm này sẽ tận dụng phần cứng của máy tính hiện tại của bạn để cho phép VirtualBox chạy nhiều hệ điều hành tại cùng một thời điểm. Bạn có thể chạy bao nhiêu máy ảo cũng được miễn là phần cứng của bạn cho phép, quan trọng nhất là RAM và dung lượng trống trên ổ cứng.

    VD: bạn có thể cài đặt và chạy hệ điều hành Windows và OS X trên Linux hoặc chạy Linux trên Windows hoặc Mac, … 

  1. Thuật ngữ thường xuyên được sử dụng trong VirtualBox 

    Có 1 số thuật ngữ quan trong sử dụng trong VirtualBox mà bạn nên biết:

 

+ Host operating system (host OS): hay còn gọi là host, đây là hệ điều hành chạy trên máy thật (máy tính vật lý), là nơi VirtualBox được cài đặt.

+ Guest operating system (guest OS): hay còn gọi là guest, đây là hệ điều hành chạy bên trong máy ảo.

+ Virtual machine (VM): Còn gọi là máy ảo, đây là nơi chạy guest OS. Nói dễ hiểu hơn thì VM là cửa sổ bạn thấy khi guest OS chạy.

+ Guest Additions: Đây là những gói phần mềm đặc biệt, được cài đặt bên trong VM để cải thiện hiệu năng của guest OS và thêm một số tính năng, ví dụ như tự động điều chỉnh độ phân giải màn hình, Shared Folder (chia sẻ thư mục), Shared clipboard (copy text giữa hai máy, …), Drag’n’Drop (kéo thả file giữa 2 máy), ….

 

Nội dung được tham khảo tại:

This board requires you to be registered and logged-in before you can view hidden messages.

 

3.2. Cài đặt Vagrant 

    Download:

This board requires you to be registered and logged-in before you can view hidden messages.

    Chọn phiên bản phù hợp với OS đang sử dụng, ở đây mình dùng Windows 7 64 bit.

    Vagrant hiện tại mình sử dụng là bản: vagrant_1.7.4

    Sau khi cài đặt xong nhớ restart máy.

 

Một số lệnh Vagrant cơ bản cần phải nhớ 

Trong khi dùng Vagrant, có thể bạn sẽ sử dụng rất nhiều một số lệnh dưới đây nên tốt nhất là hãy nhớ chức năng của nó:

Trong vagrant thì mọi cú pháp đều phải bắt đầu với “vagrant” 

  • vagrant box add tên_box // Download máy ảo
  • vagrant init // Cài đặt vagrant ở folder hiện tại
  • vagrant box list – Xem danh sách các box.
  • vagrant up // Khởi động máy ảo
  • vagrant halt // Tắt máy ảo
  • vagarnt provision // Cập nhật cấu hình từ file Vagrantfile cho máy ảo khi nó đang chạy
  • vagrant reload: Restart và tải lại các thiết lập trong file Vagrantfile của máy ảo, khi đổi nội dung file đó bạn phải sử dụng lệnh vagrant halt trước để tắt máy ảo, sau đó sử dụng lệnh reload này để nạp lại cấu hình.
  • vagrant ssh // Truy cập vào máy ảo qua ssh. Máy thật lúc này đóng vai trò là 1 client.
  • vagrant destroy tên_box – Cho máy ảo về vườn(Xóa máy ảo)
  • vagrant suspend – Cho máy ảo tạm nghỉ.
  • vagrant login – Đăng nhập vào hệ thống Vagrant Cloud.
  • vagrant share --ssh: Chia sẻ máy ảo của bạn cho người khác truy cập, bạn phải gõ lệnh vagrant login trước khi dùng tính năng này.  

 

thanks 3 người cảm ơn Ellry cho bài viết.
ngovana trên 18-05-2016(UTC) ngày, Thuan trên 30-05-2016(UTC) ngày, Nhat Hong trên 03-08-2016(UTC) ngày
Offline Ellry  
#3 Đã gửi : 22/04/2016 lúc 01:01:08(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

4. Thao tác với máy ảo

Và đây là ghi chép đầy đủ nhất về việc cài đặt

Tham khảo:

This board requires you to be registered and logged-in before you can view hidden messages.

This board requires you to be registered and logged-in before you can view hidden messages.

Sơ lược về các quy trình để có một máy chủ ảo :

    Trong Vagrant, nó có một khái niệm bạn cần biết rõ đó là Box. Box có nghĩa là một gói hệ điều hành và có nhiều box đã cài sẵn một số ứng dụng cần thiết, chẳng hạn như box CentOS 6.5 32bit, CentOS 6.5 64bit, Ubuntu 12.04 có sẵn LAMP,…

    Khi dùng Vagrant, bạn sẽ cần tạo một thư mục riêng cho mỗi máy ảo và mỗi thư mục này sẽ chứa các thiết lập cho 1 máy ảo. Bởi vì khi khởi động, bạn sẽ cần truy cập vào thư mục của máy ảo cần khởi động và sử dụng lệnh “vagrant up” để khởi động nó lên.

    Cũng nên nói lại rằng, tất cả các thao tác ở Vagrant đều thông qua lệnh. Nếu bạn dùng Windows thì bật phần mềm Git Bash của Git để thao tác thông qua giao thức SSH, còn Linux thì dùng Terminal.Khi cài đặt Git nếu bạn chọn thao tác qua cmd thì có thể sử dụng cmd , nếu ko sẽ thao tác qua Gitbash(sẽ được viết rõ ở phần tiếp theo).

Bước 0: Tạo folder làm việc riêng

Thực ra bước này cũng ko hẳn là cần thiết nhưng để tránh trường hợp sau này có phiền phức – vì môi trường windows đúng là 1 môi trường khá tồi dành cho việc phát triển ứng dụng. Vì vậy mọi hoạt động mình sẽ gói gọn nằm trong folder này

+ Tạo folder làm việc:

>mkdir work #Tạo folder work , mình đặt tại Desktop , còn tùy sở thích và thuận tiện, ai đặt đâu cũng được, nhưng khuyến khích đặt càng gần ổ đĩa càng tốt, tránh trường hợp đường dẫn thư mục quá dài

>cd work # Đi đến thư mục vừa tạo

Bước 1: Nạp box cho Vagrant

Khi cài đặt Vagrant thì nó sẽ ko có sẵn các box, mà mình cần nạp nó về máy của mình. Mình quyết định sử dụng gói CentOS7.0

Và cài đặt vẫn tương tự với lệnh:

Cách 1

>vagrant box add tên_box

VD: box_name = chef/centos-7.0 #=> vagrant box add chef/centos-7.0

Box_name được lấy từ:

This board requires you to be registered and logged-in before you can view hidden messages.

Cách 2

>vagrant box {tên_box} {url}

VD: vagrant box add CentOS7 https://dl.dropboxuserco...km/centos-7.0-x86_64.box

 

Kết quả

$box> Adding box 'CentOS7' (v0) for provider:

$box> Downloading: https://dl.dropboxuserco.../centos-7.0-   x86_64.box

$box> Successfully added box 'CentOS7' (v0) for 'virtualbox'!

 

# Check số lượng box đang tồn tại trong vagrant

>vagrant box list

thanks 1 người cảm ơn Ellry cho bài viết.
Nhat Hong trên 03-08-2016(UTC) ngày
Offline Ellry  
#4 Đã gửi : 22/04/2016 lúc 01:13:27(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

Bước 2: Khởi tạo máy ảo

Bây giờ để tạo máy ảo mới , ta tạo 1 thư mục riêng cho nó. Khuyến khích đặt tên thư mục có tên cùng với tên máy ảo cho dễ nhận biết

>mkdir CentOS7 # Tên thư mục do mình tự đặt nhưng đặt cùng cho dễ nhớ , có thể tạo bằng tay nếu ko thích dùng lệnh , như vậy thư mục CentOS7 sẽ nằm trong thư mục /work mình tạo ở bước B0

Và ta sẽ đi vào thư mục vừa tạo đó

>cd CentOS7 # Đi vào trong thư mục vừa tạo

Tại thư mục đó ta khởi tạo máy ảo với box cần sử dụng bằng lệnh

>vagrant init {tên_box} # Ở đây mình chỉ có 1 box là CentOS7

Sau khi xong bước này, nó sẽ hiện lên thông báo:

A `Vagrantfile` has been placed in this directory. You are now

ready to `vagrant up` your first virtual environment! Please read

the comments in the Vagrantfile as well as documentation on

`vagrantup.com` for more information on using Vagrant.

 

Ý nghĩa của thông báo: Thông báo này có nghĩa là bên trong thư mục máy ảo(Ở đây chính là thư mục CentOS7) nó đã đặt File Vagrantfile (file này chính là file cấu hình việc khởi tạo máy ảo) vào đó rồi. Hãy mở file đó lên và config để có thể sử dụng nhiều chức năng hơn trước khi khởi động máy ảo với lệnh “vagrant up”.

Cấu trúc thư mục sinh ra:

Khuyến khích: Nếu chưa biết setup môi trường ra sao thì tạm thời hãy cứ comment toàn bộ như ban đầu, và sau khi đã cài đặt xong. Tắt máy ảo bằng lệnh

>vagrant halt

 

 

 

    Sau đó mới thay đổi nội dung file Vagrantfile này. Nếu thay đổi sớm, mà ko biết cách config thì sẽ tạo ra nhiều lỗi không lường trước. Nên tạm thời hãy cứ để nguyên file như vậy.

    Bình thường thì ko cần phải sửa đổi gì, tuy nhiên nếu bạn dùng máy ảo để làm máy chủ webservice thì bạn cần config một chút. Trong file Vagrant này, các thiết lập đã được ghi mẫu sẵn và ta chỉ việc bỏ dấu # comment đi hoặc có thể copy lại.

Bây giờ ta sẽ đi giải thích 1 số config cần chú ý.

// Tên box sau khi bạn chạy vagrant init

config.vm.box = "chef/centos-7.0"

 // Có đồng bộ dữ liệu máy thật với máy ảo tự động không. Tôi khuyến cáo là có và tốt nhất là comment cái dòng này lại vì mặc định nó là `true`

config.vm.box_check_update = false

 // Truy cập vào máy ảo thông qua port. Trong trường hợp này là port 8080

config.vm.network "forwarded_port", guest: 80, host: 8080

 // Truy cập vào máy ảo thông qua địa chỉ IP. Khuyến cáo để mặc định.

config.vm.network "private_network", ip: "192.168.33.10"

 // Đồng bộ hóa dữ liệu thư mục

config.vm.synced_folder "../data", "/vagrant_data"

 

 

Tuy nhiên phần sau ta sẽ giải thích rõ hơn về việc config này. Tiếp tục công việc nào.

 

>vagrant up # Khởi động máy ảo

Kết quả:

 

Tuy nhiên khi setup tại nhà thì xuất hiện tình huống

This board requires you to be registered and logged-in before you can view hidden messages.

This board requires you to be registered and logged-in before you can view hidden messages.

Đánh số 1 vào

 

Nhưng sau đó ko sử  dụng  commandprompt được nữa mà phải chuyển qua Gitbash dung thì mới vào được guest thông qua ssh

Username và pass được sử dụng trong trường hợp ta kết nối với ssh bằng các phần mềm khác như là Gitbash , Tera Term,..

thanks 1 người cảm ơn Ellry cho bài viết.
Nhat Hong trên 03-08-2016(UTC) ngày
Offline Ellry  
#5 Đã gửi : 22/04/2016 lúc 09:57:38(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

Bước 3: Thiết lập môi trường máy ảo

Do windows không có SSH nên để sử dụng SSH bạn cần cài đặt git vào.

Trước khi đi tiếp, mình nên tìm hiểu qua ssh là gì?

Tham khảo:

+

This board requires you to be registered and logged-in before you can view hidden messages.

+

This board requires you to be registered and logged-in before you can view hidden messages.

+

This board requires you to be registered and logged-in before you can view hidden messages.

 

Nếu sử dung Tera Term thì có thể tham khảo bài sau:

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Thiết lập port,ssh,..)

+

This board requires you to be registered and logged-in before you can view hidden messages.

  (Cài đặt)

Tổng quan về Tera Term thì nên tham khảo tại đây:

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Đầy đủ hình ảnh)

Tera Term thì bọn Nhật nó chuộng, nhưng VN thì chuộng Git hơn.

 

Nếu sử dụng puTTY thì tham khảo bài viết:

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Trong bài viết này đã viết rất kĩ về việc cài đặt Git cũng như config biến môi trường)

Tuy nhiên putty được khuyến cáo là ko nên sử dụng vì sẽ ko thể thực hiện được việc share vagrant với các host khác

 

Nếu sử dụng Git có thể tham khảo tại:

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Cài đặt)

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Config biến môi trường)

Sau khi đã cài đặt git xong, hãy bật cmd và tiếp tục công việc (Với điều kiện đã chọn sử dụng cmd để làm việc như là Gitbash , nếu ko thì phải sử dụng Gitbash). Và khi cài đặt Git thì cần chú ý: Để dùng được git thì sau khi cài đặt mình phải thêm vào biến môi trường “;C:\Program Files (x86)\Git\bin;” . Chú ý là dấu ; dùng để ngăn cách các khai báo biến môi trường với nhau.

“C:\HashiCorp\Vagrant\bin” sẽ được thêm vào biến môi trường sau khi cài đặt xong vagrant. (Hãy mở đường dẫn PATH trong thiết lập biến môi trường để check lại điều này).

+ Mở cmd và truy cập ssh (tại folder của nó , ở đây là CentOS7)

Truy cập máy ảo thông qua giao thức SSH

>vagrant ssh

 

=>Từ giờ ta sẽ thao tác với ssh

Quá trình cài đặt và làm việc với CentOS , tham khảo các site sau:

+

This board requires you to be registered and logged-in before you can view hidden messages.

+

This board requires you to be registered and logged-in before you can view hidden messages.

Trong môi trường CentOS , Fedora , RHEL thì chúng đều sử dụng trình quản lý gói “yum”.

+ Loại bỏ các vesion cũ(Caí này dùng nếu bạn dùng trên Mac Yosemite hoặc Unix đã cài sẵn Ruby thì nên gỡ bỏ vì nó là phiên bản cũ, còn nếu dùng CentOS thì thường nếu chạy lệnh này nó sẽ báo ko tìm thấy thư mục Ruby. Cơ bản là vì làm gì có mà tìm)

 

>sudo yum –y remove ruby # Lệnh xóa các phiên bản cũ của Ruby đã tồn tại trong OS

 

Kết  quả:

 

+ Cài đặt các pakage liên quan (Git, openssl , zlib , gcc-c++)

 

> sudo yum update

 

 

> sudo yum install git gcc make openssl-devel zlib-devel readline* gcc-c++ # Cài đặt git

 

thanks 1 người cảm ơn Ellry cho bài viết.
Nhat Hong trên 03-08-2016(UTC) ngày
Offline Ellry  
#6 Đã gửi : 22/04/2016 lúc 10:14:53(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

Bước 3: Thiết lập môi trường máy ảo (tiếp theo)

+ Cài rbenv

Sơ lược qua về các trình quản lý:

    Ruby Version Manager (RVM) là một công cụ giúp bạn cài đặt, quản lý và làm việc với nhiều môi trường ruby. Thỉnh thoảng, có thể bạn sẽ gặp phải trường hợp mà một gem có thể hoạt động tốt với một vài phiên bản ruby nào đó, trong khi đó nó có thể không chạy chính xác trên những phiên bản còn lại của Ruby. Việc này đòi hỏi phải có một chương trình mà có thể giúp chúng ta quản lý các phiên bản này theo từng dự án. RVM là một trong những chương trình giúp chúng ta quản lý các phiên bản của Ruby.(Trích từ:

This board requires you to be registered and logged-in before you can view hidden messages.

).

    Rbenv cũng có chức năng tương tự như rvm, nó cho phép bạn quản lý nhiều phiên bản cài đặt của Ruby. Nó ko hỗ trợ cài đặt Ruby nhưng có thể dùng plugin “ruby-build” của nó để cài đặt Ruby.

    Ngoài ra thì còn rất nhiều trình quản lý khác như là chruby , uru.(Có thể tham khảo tại:

This board requires you to be registered and logged-in before you can view hidden messages.

)

    Rbenv hay rvm đều là những “công cụ quản lý phiên bản ruby”. Việc sử dụng rbenv hay rvm sẽ giúp ta dễ dàng cài đặt 1 phiên bản Ruby cần sử dụng, đồng thời có thể thay đổi phiên bản ruby trên máy 1 cách nhanh chóng.rbenv được phát triển và duy trì bởi sstephenson trên trang dịch vụ lưu trữ Git repositories Github. Chúng ta sẽ sử dụng git để cài đặt rbenv.(Chú ý là 2 cái này chỉ được chọn 1 trong 2, dùng rvm thì thôi rbenv và ngược lại. Nếu cài song song thì sẽ phát sinh lỗi do cách quản lý Ruby của RVM khác với rbenv).

>git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

Kết quả:

Cloning into '/home/vagrant/.rbenv'...

remote: Counting objects: 1889, done.

remote: Total 1889 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (1889/1889), 298.61 KiB | 197.00 KiB/s, done.

Resolving deltas: 100% (1178/1178), done.

 

+ Thiết lập PATH

Để có thể sử dụng câu lệnh rbenv mà không cần quan tâm tới đường dẫn tới thư mục ~/.rbenv thì ta có thể thêm đường dẫn đó vào file

~/.bash_profile bằng cách :

>echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile # Thêm path vào trong file

>echo 'eval "$(rbenv init -)"' >> ~/.bash_profile  # Thêm rbenv init vào trong shell để có thể gọi rbenv ra bất cứ lúc nào

> cat ~/.bash_profile

Kết quả:

# .bash_profile

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

    . ~/.bashrc

fi

 

# User specific environment and startup programs

 

PATH=$PATH:$HOME/.local/bin:$HOME/bin

 

export PATH

export PATH="$HOME/.rbenv/bin:$PATH"

eval "$(rbenv init -)"

 

>source ~/.bash_profile #reload bash_profile

> rbenv --version # Kiểm tra version của rbenv vừa cài đặt, có kết quả nghĩa là cài đặt thành công.

Kết quả:

$rbenv 0.4.0-98-g13a474c

 

+ Cài ruby

Để cài đặt một phiên bản mới của Ruby thêm dễ dàng hơn, mình khuyến khích bạn cài đặt plugin “ruby-build” của rbenv bằng cách:

>git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build 

Kết quả:

Cloning into '/home/vagrant/.rbenv/plugins/ruby-build'...

remote: Counting objects: 3786, done.

remote: Compressing objects: 100% (31/31), done.

remote: Total 3786 (delta 16), reused 2 (delta 0)

Receiving objects: 100% (3786/3786), 661.69 KiB | 361.00 KiB/s, done.

Resolving deltas: 100% (1859/1859), done.

 

 >rbenv install –l # Liệt kê các gói ruby có thể cài đặt

Kết quả

Available versions:

  1.8.6-p383

  1.8.6-p383

  1.8.6-p420

.

.

.

省略

.

.

.

  2.1.3

  2.2.0-dev

  2.2.0-dev

  2.2.0-preview1

  2.2.0-preview1

  jruby-1.5.6

  jruby-1.5.6

 

>rbenv install –v 2.2.3 # Chọn version mình muốn sử dụng. Ở đây mình chọn 2.2.3

Kết quả

Downloading ruby-2.2.3.tar.gz...

-> http://dqw8nmjcqpjn7.cloudfront.net/ 0818beb7b10ce9a058cd21d85cfe1dcd233e98b7342d32e9a5d4bebe98347f01

Installing ruby-2.2.3...

Installed ruby-2.2.3 to /home/vagrant/.rbenv/versions/2.2.3

 

Nếu thất bại sẽ cho kết quả

...

 

BUILD FAILED

 

...

 

Và không còn cách nào khác là search google để tìm cách sửa.

>rbenv global 2.2.3 # Thiết lập Ruby 2.2.3 là phiên bản chung trên guest -> như vậy là Ruby 2.2.3 đã trở thành bản Ruby default trên máy

>ruby –v # Lấy version của ruby

Kết quả

ruby 2.2.3p242 (2014-09-19 revision 47630) [x86_64-linux]

 

 

Bổ sung nếu cần sử dụng: (tạm thời ko cần quan tâm)

Muốn xóa bỏ version Ruby mà mình ko muốn dùng nữa thì có thể kiểm tra các versions đang được sử dụng bằng lệnh

>rbenv versions

>~/.rbenv/versions # Nó sẽ trả về đường dẫn đến thư mục này

$-bash: /home/vagrant/.rbenv/versions/ : Is Directory # Kết quả

Cách 1: Uninstall nó đi

>rbenv uninstall [-f|--force] <version> # force là xóa và bất chấp mọi thứ

Cách 2: Xóa thư mục của nó đi

Và chỉ cần đi vào trong thư mục /version (thư mục cha của các ruby version) và dùng lệnh

>rm –rf tên_thư_mục_muốn_xóa # Ngoài ra có thể tìm đến thư mục của Version đó bằng lệnh >rbenv prefix tên_version rồi xóa

# VD: >rm -rf ~/.rbenv/versions/1.9.3-p0

Sau khi xóa nhớ chạy lệnh

>rbenv rehash # để làm sạch tập tin nhị phân từ các version cũ để lại

Trong trường hợp chỉ muốn thiết lập phiên bản Ruby cho 1 thư mục nào đó thì có thể dùng lệnh sau

>cd thư_mục # Đi đến thư mục muốn thiết lập phiên bản Ruby

>rbenv local 2.2.3 # Thiết lập Ruby cho folder này

Nếu muốn bỏ thiết lập phiên bản Ruby cho folder

>rbenv local --unset

thanks 1 người cảm ơn Ellry cho bài viết.
Nhat Hong trên 03-08-2016(UTC) ngày
Offline Ellry  
#7 Đã gửi : 22/04/2016 lúc 10:25:15(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

+ Cài đặt Bundler

Sau khi cài đặt Ruby thành công, mặc định là bạn có thể chạy câu lệnh gem trên môi trường của bạn.

Một danh sách khá đầy đủ về các gem được phát triển bởi RubyGems có thể tìm thấy tại:

This board requires you to be registered and logged-in before you can view hidden messages.

Cách sử dụng đầy đủ của câu lệnh gem có thể tìm thấy tại:

This board requires you to be registered and logged-in before you can view hidden messages.

>rbenv exec gem install bundler # cài bundler

Kết quả:

Fetching: bundler-1.8.2.gem (100%)

Successfully installed bundler-1.8.2

Parsing documentation for bundler-1.8.2

Installing ri documentation for bundler-1.8.2

Done installing documentation for bundler after 3 seconds

1 gem installed

 

 >rbenv rehash

Ý nghĩa của câu lệnh trên:

This board requires you to be registered and logged-in before you can view hidden messages.

Bay giờ ta sẽ tìm hiểu qua về Gem , Bundler

Gem là gì ?

    Khái niệm package (gói) trong UNIX có thể là khái niệm gần gũi nhất với gem. Đối với một ngôn ngữ lập trình như Ruby, việc xây dựng các ứng dụng kết nối các tiện ích như SQL, networking, ... là rất cần thiết. Để thực hiện việc này, chúng ta có thể dùng các gem của Ruby. Gem như một "plug-in" của Ruby, bạn chỉ cần cài đặt gem cần thiết vào máy (ví dụ gem mysql2), khi cần sử dụng, bạn require mysql2 và bạn có thể sử dụng các chức năng của mysql2 trong chương trình Ruby của mình.

=>Như vậy Gem ko phải 1 plugin mà là 1 chương trình quản lý các plugin(version , source , install, remove)

Khi install 1 gem bằng cách dùng lệnh gem install GEM_NAME là ta cài thêm 1 gem vào thư mục gem của bạn,

VD: /home/vagrant/.rbenv/shims/gem/ruby-2.2.0/bin/ 

Bundler và cài đặt gem thông qua bundler

    Mỗi dự án Rails có một “Gemfile”(file này được sinh ra cùng với dự án), file này được đọc bởi gem “bundle”. Bản thân bundle cũng là 1 gem, nên nó sẽ được cài đặt bằng lệnh “gem install bundle”. Tuy nhiên, sau khi bundle được cài đặt, nó sẽ đọc file Gemfile, cài đặt tất cả các gems được yêu cầu trong Gemfile, và tạo ra file Gemfile.lock. Khi code được đưa lên 1 repo (code này có kèm theo Gemfile.lock) và một developer khác download code về và chạy “bundle install”, nó sẽ dựa vào file Gemfile.lock để cài đặt chính xác các gems cùng với version tương ứng. Như vậy, bằng cách “đồng bộ” qua Gemfile.lock, môi trường làm việc của các developer trong cùng một dự án là giống nhau. Việc này tránh mỗi developer dùng cách “trực tiếp” để cài đặt nên các version khác nhau của 1 gem, gây mất đồng bộ. Nên tốt nhất là đặt tất cả các gem cần thiết cho dự án vào trong Gemfile. Công việc tạo “Gemfile” nằm ngoài bài này vì nó cần bạn có một số kiến thức để lựa các gems cho phù hợp với dự án.

    Khi thêm dòng "gem "GEM_NAME"" vào file Gemfile và sau đó chạy "bundle"(bằng lệnh bundle install) thực chất là ta cũng sẽ gọi tới lệnh gem install GEM_NAME và cài vào thư mục tương tự, nếu đã cài gem rồi thì khi chạy bundle thì rails sẽ không cài lại mà chỉ check xem có đúng version không, nếu không mới cài lại.

Như vậy khác nhau giữa Gemfile và Gemfile.lock

Gemfile là nơi khai báo các plugin được sử dụng trong chương trình rails của bạn. Tất cả những gem được cài đặt sẽ được ghi vào Gemfile

Gemfile.lock là tập tin mà Bundler ghi lại các phiên bản chính xác đã được cài đặt, khi chạy lệnh bundle install sẽ check nội dung file Gemfile.lock để cài đặt đúng phiên bản đã được khai báo chứ ko phải cài đặt các phiên bản mới nhất như việc sử dụng lệnh gem install

Điều đó sẽ giúp các developer có thể đồng bộ chính xác các phiên bản đang sử dụng chứ ko phát sinh lỗi do sự chênh lệch về phiên bản khi cài đặt.

Mỗi ghi chạy bundler gemfile thì file này cũng tự động thay đổi.

 

Ngoài ra có 1 điều rất thú vị đó là chỉ cần khai báo các gem muốn sử dụng trong gem file và sau đó chạy lệnh

>bundle install

Thì nó sẽ tiến hành cài đặt cho bạn gem này(thay vì gõ lệnh gem install tên_gem). Như vậy là bạn có thể sử dụng gem mà ko cần quá nhiều thao tác với terminal

Bài viết hay về gemfile

Cộng đồng Ruby (On Rails) là nơi hướng dẫn chia sẽ các kiến thức cơ bản. Với các thư viện bên ngoài thì giúp bạn sẽ nhanh chóng và dễ dàng thực hiện một số chức năng mà bạn phải mất cả hàng tháng trời (nhanh hay chậm còn tùy ^^) để viết được chúng. Các dễ dàng để ứng dụng Rails có thể sử dụng chúng là thông qua Gemfile. Bên cạnh Gemfile còn có dòng lệnh bundler giúp cài đặt các thư viện bên ngoài một cách dễ dàng.

 

#Hướng dẫn cơ bản

 

Đầu tiên bạn mở file Gemfile bạn thêm vào dòng:

 

gem 'font-awesome-sass'

 

Vì khi bạn tạo project thì đã có sẵn một số thư viện(gem) cơ bản của ứng dụng Rails. font-awesome-sass cung cấp cho bạn gem tạo các icon đẹp cho ứng dụng web (cái này mà viết chắc khó nhằn à). Sau khi thêm dòng này vào Gemfile, bạn mở command line mà chạy dòng lệnh bundle install để tiến hành cài đặt gem này. Như vậy bạn đã có thể sử dụng gem này.(Thay vì phải gõ lệnh gem install tên_gem như trước)

 

#Xử lý các phiên bản

 

Với việc sử dụng gem như trên thì nó có thể sẽ lấy bất kỳ phiên bản nào và thường là phiên bản cuối cùng. Điều gì xảy ra nếu như bạn gửi code cho một người khác và khi người đó chạy lênh bundler install, nếu người đó có cài đặt hay chỉnh sửa gem mà cùng tên trước đó thì sẽ mất hết. Nhưng gem đã hỗ trợ những tính năng cho phép bạn khắc phục những trường hợp đó, ví dụ như sau:

 

gem 'rails', '4.0.1'

 

Khi bạn viết như vậy có nghĩa là bạn muốn sử dụng Rails ở version 4.0.1. Nếu một người khác chạy code ở trên máy của họ thì nó sẽ lấy phiên bản đúng là 4.0.1.

Nếu bạn không chắc nó có phải phiên bản mới nhất hay không thì bạn có thể thêm dấu ~> như sau :

 

gem 'rails', '~>4.0.1'

 

Giờ bạn có thể chạy bundle update hoặc bundle install trên máy khác. Nó sẽ vẫn sử dụng phiên bản 4.0.1 nhưng bên cạnh đó nó còn cài đặt cho bản phiên bản mới nhất ví dụ như 4.0.2.

Và cuối dùng là dấu >= sẽ yêu cầu bundler lấy phiên bản mới nhất, lớn hơn phiên bản bạn đưa vào. Ví dụ như:

 

gem 'rails', '>= 3.2'

 

Như vậy thì bundler sẽ lấy cho bản phiên bản từ 3.2.1 đến 4.1(mới nhất) nhưng như vậy sẽ có lỗi như nếu code của bạn không tương ứng với phiên bản của Rails. Vì thế bạn có thể giới hạn lại khoảng cách phiên bản và ở đây là cucumber từ 1.3.2 đến 1.3.9 như sau:

 

gem 'cucumber', '>=1.3.2', '<1.3.10'

 

#Thay đổi sources

 

Mặc định thì bundler sẽ lấy gem từ rubygem.org nhưng nếu muốn lấy gem từ nguồn khác thì bạn vẫn có thể lấy dễ dàng, ví dụ như sau:

 

source 'http://gems.github.com'

 

Bạn sử dụng source để chuyển từ RubyGems sang GitHub gem server. Và bạn cũng có thể kết hợp cả hai trong file Gemfile như sau:

 

source 'https://rubygems.org'

source 'http://gems.github.com'

 

Đơn giản phải không nào và đôi khi bạn cũng có thể viết như sau:

 

gem 'nokogiri', git: 'git://github.com/tenderlove/nokogiri.git', branch: '1.4'

 

Điều này nói bundler sẽ lấy phiên bản cuối cùng của nokogiri từ 1.4 trên GitHub.

#Lời kết

 

Như vậy thông qua bài viết trên bạn có thể hiểu hơn về cách sử dụng Gemfile trong ứng dụng Rails. Và cảm ơn các bạn đã theo dõi bài viết trên.

Tại đây đã nói rất chi tiết về bundler:

+

This board requires you to be registered and logged-in before you can view hidden messages.

+

This board requires you to be registered and logged-in before you can view hidden messages.

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Giải thích rõ quá trình sinh ra và sử dụng của 2 file: gemfile và gemfile.lock)

Tạo gem bằng bundler

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Tiếng Việt)

# Để hiểu ý nghĩa của rbenv rehash thì nên tham khảo bài viết sau

This board requires you to be registered and logged-in before you can view hidden messages.

Phân tích rõ hơn về việc Gemfile và Gamefile.lock(dịch bài viết)

+

This board requires you to be registered and logged-in before you can view hidden messages.

Gemfile được tạo ra cùng dự án, định nghĩa 1 số gem quan trọng đã được cài đặt trong quá trình khởi tạo

Khi thực hiện lệnh khởi tạo rails app

>rails new books # rails app có tên là books

thì nếu ko có khai báo gì thì nó sẽ tự động thực hiện những việc sau:

 

 Nó đã thực hiện lệnh >run bundle install

Khi thực hiện khởi tạo này, đồng nghĩa nó đã thực hiện 4 việc sau:

  1. Khởi tạo những file quan trọng
  2. Tạo ra Gemfile ghi lại những Gem pakage quan trong
  3. Dựa vào Gemfile và cài đặt những Gem đó
  4. Tạo ra Gemfile.lock để có thể sử dụng ở môi trường khác

Và bây giờ ta thử tạo 1 rails app ko có bundler

Khi tạo project rails mà ko muốn sử dụng bundler thì ta chỉ việc khai báo

>rails new {tên_project} --skip-bundle

Kết quả:

     Như vây nghĩa là nó chỉ dừng lại ở công đoạn (1) là tạo các file quan trọng , còn nó ko thực hiện công việc “bundle install”. Tuy nhiên bây giờ ta hãy kiểm tra trong directory đã được đồng bộ với guest , ta sẽ thấy 1 file Gemfile đã được khởi tạo.

Mở file này ra ta sẽ thấy nó đã được khai báo các gem cần thiết, tuy nhiên thì các gem này vẫn chưa được cài đặt. Bây giờ ta sẽ đi vào bên trong project vừa tạo và thực hiện lệnh:

>bundle install

Thì sẽ thấy có 1 file Gemfile.lock được sinh ra và các gem cũng đã được cài đặt

Như vậy ta đã hiểu rõ hơn về nguyên lý cũng như cách làm việc của bundler khi cài đặt gem. Và nếu muốn cài gem ta chỉ cần khai báo nó trong Gemfile và thực hiện bundle install là được

thanks 1 người cảm ơn Ellry cho bài viết.
Nhat Hong trên 03-08-2016(UTC) ngày
Offline Ellry  
#8 Đã gửi : 22/04/2016 lúc 10:32:55(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

+ Cài đặt Rails

> gem search -r rails | grep "^rails ("  # check version rails tương thích

Đến đây nếu muốn cài đặt theo version vừa check thì chỉ cần

>gem install rails

Nếu không ta có thể cài đặt version cố định. Ở đây mình dùng version rails là 4.2.3 (vì bản ở trên lúc cài báo lỗi quái gì nên ko cài được)

>gem install rails --version 4.2.3

 

Cài đặt khá là mất tgian nên cần chờ đợi, sau khi cài đặt xong mình có thể check version bằng cách

>rails –v

 

Như vậy hiện tại mình sử dụng Ruby 2.2.2 và Rails 4.1.7 trên GuestOS là CentOS7.0.

Tham khảo:

+

This board requires you to be registered and logged-in before you can view hidden messages.

+

This board requires you to be registered and logged-in before you can view hidden messages.

 

thanks 1 người cảm ơn Ellry cho bài viết.
Nhat Hong trên 03-08-2016(UTC) ngày
Offline Ellry  
#9 Đã gửi : 22/04/2016 lúc 10:48:16(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

Một số lỗi sẽ gặp phải trong quá trình cài đặt

  • Lỗi 1: Sau khi cài đặt xong thì khi chạy server rails thì nó lại tự exiting

Thông báo lỗi

rails s

=> Booting WEBrick

=> Rails 4.0.4 application starting in development on http://0.0.0.0:3000

=> Run `rails server -h` for more startup options

=> Ctrl-C to shutdown server

A server is already running. Check /home/..name/rprojects/railsapp/tmp/pids/server.pid.

Exiting

 Và theo như hướng dẫn trong stackoverflow thì mình sẽ xóa file server.pid(theo đường dẫn) kia đi và khởi động lại server là sửa đc.Thành công !

  • Lỗi 2: Khi mình cài box CentOS7 vào và xóa bằng tay đi, tuy nhiên lúc cài lại thì nó báo lỗi này nên ko add box vào được

 

The box you're attempting to add already exists. Remove it before

adding it again or add it with the `--force` flag.

 

Thì mình có 1 số cách check xem mình đã thực sự remove box đó ra khỏi vagrant chưa như sau

>vagrant box list # check các box vẫn tồn tại trong vagrant

>vagrant global-status # Hiển thị danh sách tên box + id đang chạy, đang tắt hay đang làm gì đó

>vagrant global-status --prune # Xóa cache

>vagrant destroy box_id # id được lấy từ lệnh trên

>vagrant box remove tên_box # tên box được lấy trên lệnh box list

    Như vậy là đã xóa box khỏi vagrant, để chặt chẽ hơn thì mình xóa luôn cả folder trên win và làm lại từ đầu. Nhớ là phải tắt vagrant đi sau khi làm xong mọi việc rồi mới add box mới thử nhé

>vagrant halt

>vagrant box add {tên_box} {url}

 Ngoài ra có thể làm theo cách sau:

+

This board requires you to be registered and logged-in before you can view hidden messages.

  • Lỗi 3: Sau khi cài đặt tất cả OK rồi, thì start vagrant lên, đợi nó load file Vagrantfile xong thì có lỗi phát sinh: 

Failed to mount folders in Linux guest. This is usually because

the "vboxsf" file system is not available. Please verify that

the guest additions are properly installed in the guest and

can work properly. The command attempted was:

 

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant

mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

 

The error output from the last command was:

 

/sbin/mount.vboxsf: mounting failed with the error: No such device

 

Nguyên nhân và cách giải quyết:

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Nguyên nhân)

 +

This board requires you to be registered and logged-in before you can view hidden messages.

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Giải quyết thành công)

>vagrant plugin install vagrant-vbguest

Installing the 'vagrant-vbguest' plugin. This can take a few minutes...

Installed the plugin 'vagrant-vbguest (0.10.0)'!

>vagrant vbguest --status

GuestAdditions 4.3.26 running --- OK.

 

Tuy nhiên nếu nhận được thông báo status như thế này:

 

Thì có nghĩa là GuestAdditions vẫn chưa thể sử dụng được, mà ta cần cài đặt thêm kernel

Tham khảo:

This board requires you to be registered and logged-in before you can view hidden messages.

>sudo yum install kernel-devel

 

Sau đó thực hiện lại 1 lần nữa việc install plugin vagrant-vbguest

> vagrant plugin install vagrant-vbguest

> vagrant vbguest --status

 

>vagrant reload

Tiếp theo mình sẽ tạo thử project rails, đồng bộ cũng như config file vagrant như thế nào.

Nếu nó báo thiếu kernel thì tham khảo link 1 đã cung cấp

Lỗi 3.1: Không thể tìm thấy đường dẫn đến thư mục home nên ko cài đặt plugin được

The directory where plugins are installed (the Vagrant home directory) has a space in it. On Windows, there is a bug in Ruby when compiling plugins into directories with spaces. Please move your Vagrant home directory to a path without spaces and try again

 

Cách giải quyết:

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Nguyên nhân là do Ruby ko chấp nhận đường dẫn có dấu cách)

+

This board requires you to be registered and logged-in before you can view hidden messages.

(Giải quyết)

+ Tạo thêm 1 folder home bên trong C/HashiCorp/Vagran/

+ Thêm biến môi trường VAGRANT_HOME với đường dẫn C:/HashiCorp/Vagrant/home

+ Chuyển folder về ổ C, tránh để bên trong các thư mục có đường dẫn chứa dấu cách (bên trên thì đường dẫn C:/Users/Chu Quang Vien/ có chứa dấu cách)

  • Lỗi 4: Start Server Rails thì lỗi Javascript runtime gì đó

 

…`autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

 

Lỗi là do thiếu nodejs

>sudo install nodejs  # ko thực hiện được

+ Phương pháp fix:

This board requires you to be registered and logged-in before you can view hidden messages.

$ cd .. # di chuyển về thư mục home của vagrant

$ git clone git://github.com/creationix/nvm.git ~/.nvm

$ source ~/.nvm/nvm.sh

$ nvm install v0.10.18

$ node --version   # v0.10.18

Restart lại VM , tuy nhiên lần này vào thì vẫn bị lỗi rumtime của Rails do thiếu js @.@ Như vậy lần tiếp theo khởi động hệ thống mình vẫn phải làm công việc sau:

$ source ~/.nvm/nvm.sh

$ nvm install v0.10.18

$ node --version   # v0.10.18

thì mới ko bị lỗi runtime của Java script. Mặc dù là đã chạy được app rails đầu tiên trên vagrant , nhưng nếu lỗi này tồn tại thì ko hài lòng chút nào

Ohh, làm theo hướng dẫn install javascript của link dưới đây thì sẽ fix được lỗi ở trên

This board requires you to be registered and logged-in before you can view hidden messages.

(Link này cung cấp cách giải quyết cho rất nhiều lỗi)

$ sudo yum -y install epel-release

$ sudo yum -y install nodejs npm

$ npm -g install bower

$ npm -g install coffee-script

$ npm -g install requirejs

$ npm -g install haml-coffee

  •  Lỗi 6.

This board requires you to be registered and logged-in before you can view hidden messages.

thanks 2 người cảm ơn Ellry cho bài viết.
Binh1991 trên 28-05-2016(UTC) ngày, Nhat Hong trên 03-08-2016(UTC) ngày
Offline Ellry  
#10 Đã gửi : 22/04/2016 lúc 10:54:10(UTC)
Ellry


Danh hiệu: Advanced Member

Chức danh:

Nhóm: Moderator
Gia nhập: 05-10-2015(UTC)
Bài viết: 6,553
Woman
Viet Nam
Đến từ: Tp. Hồ Chí Minh

Được cảm ơn: 21 lần trong 17 bài viết

Config file Vagrantfile và những điều cần chú ý

// Tên box sau khi bạn chạy vagrant init

config.vm.box = "chef/centos-7.0"

 

// Có đồng bộ dữ liệu máy thật với máy ảo tự động không. Tôi khuyến cáo là có và tốt nhất là comment cái dòng này lại vì mặc định nó là `true`

config.vm.box_check_update = false

 

// Truy cập vào máy ảo thông qua port. Trong trường hợp này là port 8080

config.vm.network "forwarded_port", guest: 80, host: 8080

 

// Truy cập vào máy ảo thông qua địa chỉ IP. Khuyến cáo để mặc định.

config.vm.network "private_network", ip: "192.168.33.10"

 

// Giúp máy thật và máy ảo có thể nhận được IP của nhau

config.vm.network "public_network"

 

 

// Đồng bộ hóa dữ liệu thư mục

config.vm.synced_folder "../data", "/vagrant_data"

 

Ở đây mình sẽ nói rõ hơn về config đồng bộ thư mục giữa máy ảo và máy thật(sử dụng để di chuyển dữ liệu qua lại giữa máy thật và máy ảo).

Như đã nói trong cài đặt thì thư mục CentOS7 chính là thư mục máy ảo được đặc tại host(máy thật) , và nó cũng tương đương với thư mục /vagrant trên máy ảo và nó luôn ở trạng thái đã được đồng bộ .Nghĩa là có bất kỳ file nào được thêm vào thư mục /CentOS7 trên máy thật thì nó cũng được thêm vào folder /vagrant trong máy ảo. 

Nên việc mình config sẽ là để config cho các folder ở ngoài(chứ ko phải các folder nằm trong thư mục CentOS7, vì trong đó lúc nào cũng đồng bộ rồi), thì trong đó đường dẫn đầu tiên là đường dẫn tới thư mục mình muốn chứa và phải được tạo sẵn trên host của mình(trên win). Còn đường dẫn tiếp theo là nơi mình làm việc với nó trên guest(nó sữ tự động sinh ra khi  mình khởi động máy ảo theo file config – còn nếu có rồi thì ko cần sinh ra nữa)

Cài config mẫu:

config.vm.synced_folder "../data", "/vagrant_data"

 Ở đây ta hiểu thế này nhé, tính từ thư mục máy ảo hiện tại trên host là CentOS7, thì :

    ../data : .. là chỉ bố của thư mục hiện tại(bố của CentOS7 , chính là thư mục work), /data nghĩa là sẽ tồn tại 1 thư mục có tên data (thưc mục trên host cần phải được tạo sẵn). Như vậy data và CentOS7 là 2 thư mục đồng cấp. Và mọi dữ liệu trong thư mục data này, sẽ được đồng bộ với thư mục vagrant_data là thư mục con của “/” – cái “/” chính là ông tổ của mọi thằng trong linux, nó là cha của home, và cái thư mục vagrant_data sẽ được tự động sinh ra khi vagrant up được thực thi.

Vậy mình sẽ sửa file config như sau:  

config.vm.synced_folder "../rails_example", "/rails_example"

     Như vậy mình chỉ cần tạo 1 folder đồng cấp với CentOS7 tên là rails_example và config như trên, thì trên guest sẽ tự động sinh ra 1 folder có tên rails_example là con của thư mục “/” (đồng cấp với home/, là chú của /home/vagrant). Và mình sẽ tạo rails project tại đây, rồi đồng bộ nó với win và làm mọi việc trên win.

OK, vậy là mình đã khởi tạo 1 app rails trên guest.

À, còn phải vào file vagrant config lại port của guest và host nữa. Mình sử dụng cả 2 đều là cổng 3000

config.vm.network "forwarded_port", guest: 3000 , host: 3000

 Và ta bắt tay vào rails nào

Vậy là cài đặt môi trường Vagrant coi như đã xong, giờ mình sẽ test bằng cách tạo project Rails mới. Mình sẽ tạo các project trong thư mục rails_example được sinh ra khi sửa file Vagrantfile.

>vagrant up

>vagrant ssh

>pwd # Kiểm tra đường dẫn

>cd .. # Về thư mục cha

/home/>cd rails_example

/home/rails_example>rails new demo

Nếu muốn tạo project rails theo version thì dùng lệnh

>rails _x.x.x_ new app_name

Còn nếu ko thì dùng lệnh

>rails new app_name # nó sẽ tự động cài với version default

Như vậy là ta đã tạo xong 1 project rails rồi

>cd app_name # Vào trong thư mục rails app vừa tạo

>rails server (hoặc >rails s) # Khởi tạo server

 

Ra Win kiểm tra trong thư mục work/rails_example/ có thêm folder demo không nhé

thanks 1 người cảm ơn Ellry cho bài viết.
Nhat Hong trên 03-08-2016(UTC) ngày
Ai đang xem chủ đề này?
OceanSpiders 2.0
Chủ đề tương tự
Cài đặt facebook thoát khỏi lời mời kết bạn ảo (Facebook)
Bởi Ellry 31-08-2017 lúc 09:00:39(UTC)
Những ứng dụng hữu ích có thể cài đặt trên smartphone Android, iOS (Phần mềm di động)
Bởi Ellry 23-11-2016 lúc 04:59:42(UTC)
Cài đặt Google Analytics (Google Web Tools)
Bởi admin 05-06-2016 lúc 11:57:12(UTC)
Hướng dẫn gỡ bỏ và cài đặt Add-ons (Extension) trên Google Chrome (Bảo mật - Antivirus)
Bởi admin 05-05-2016 lúc 01:47:02(UTC)
Hướng dẫn cài đặt Google Analytic (SEO)
Bởi admin 01-05-2015 lúc 02:38:36(UTC)
Cài đặt MySQL & phpMyAdmin (VPS)
Bởi admin 18-03-2015 lúc 05:28:40(UTC)
Cài đặt PHP trên VPS (VPS)
Bởi admin 18-03-2015 lúc 05:27:20(UTC)
Cài đặt Apache Webserver trên VPS (VPS)
Bởi admin 18-03-2015 lúc 05:25:10(UTC)
Cài đặt WordPress trên VPS (VPS)
Bởi admin 18-03-2015 lúc 05:03:01(UTC)
Hướng dẫn cài đặt và sử dụng Aptana tương tác với Github trên Ubuntu (Git)
Bởi admin 09-03-2015 lúc 02:00:37(UTC)
Giới thiệu về MEAN Stack và cài đặt ứng dụng Mean.io (Giải pháp phần mềm)
Bởi admin 09-03-2015 lúc 01:34:52(UTC)
Cài đặt Microsoft Office Sharepoint Server trên nền Windows Server 2008 (Sharepoint for Beginners)
Bởi admin 05-02-2015 lúc 05:31:56(UTC)
Hướng dẫn cài đặt và cấu hình VMware Data Recovery (Ảo hóa - Máy ảo)
Bởi admin 05-02-2015 lúc 05:07:11(UTC)
Cài đặt SharePoint 2013 trên Windows Server 2008 R2 (Sharepoint for Beginners)
Bởi admin 05-02-2015 lúc 02:28:33(UTC)
Các bước cài đặt SharePoint Foundation 2013 (Sharepoint for Beginners)
Bởi admin 05-02-2015 lúc 12:38:47(UTC)
Di chuyển  
Bạn không thể tạo chủ đề mới trong diễn đàn này.
Bạn không thể trả lời chủ đề trong diễn đàn này.
Bạn không thể xóa bài của bạn trong diễn đàn này.
Bạn không thể sửa bài của bạn trong diễn đàn này.
Bạn không thể tạo bình chọn trong diễn đàn này.
Bạn không thể bỏ phiếu bình chọn trong diễn đàn này.

| Cung cấp bởi YAF.NET 2.2.4.14 | YAF.NET © 2003-2020, Yet Another Forum.NET
Thời gian xử lý trang này hết 2.092 giây.