Làm việc với máy ảo VirtualBox

Trước khi bắt đầu một dự án, ta phải cài đặt môi trường phù hợp. Với nhiều loại ứng dụng khác nhau, ta phải cài nhiều loại môi trường khác nhau. Nếu cài tất cả lên cùng một máy thì có nguy cơ bị xung đột. Để tránh tình trạng này, ta nên dùng máy ảo để cách ly dự án với những thứ còn lại. Hơn nữa, với máy ảo, ta có thể cấu hình môi trường development cho giống với production để khi triển khai, ta không gặp trục trặc.

Có rất nhiều giải pháp ảo hóa, trong đó phổ biến nhất là VirtualBox. Nó nhỏ gọn, đơn giản mà lại miễn phí. Trong bài này, tôi sẽ hướng dẫn tạo một máy ảo Ubuntu Server và cấu hình nó để chia sẻ file với Windows.

Cài Ubuntu Server vào VirtualBox

Nếu chưa cài VirtualBox, bạn vào trang virtualbox.org để tải về. Tiếp theo, ta vào trang ubuntu.com để tải về file ISO của Ubuntu Server. File này dung lượng khoảng 650MB.

Trước khi cài Ubuntu Server cho máy ảo, ta vào phần Settings. Tại đây, ta chuyển qua mục Network và chọn kiểu kết nối là Bridged Adapter thay cho NAT. Với tùy chọn này, máy ảo sẽ như một máy thực trong mạng LAN. Những máy khác trong mạng có thể truy cập thư mục máy ảo này chia sẻ.

Bridged Adapter

Tiếp theo, ta vào phần Storage và chọn file ISO Ubuntu. Sau cùng, ta khởi động máy ảo để cài Ubuntu Server.

Sau khi cài xong, máy ảo sẽ khởi động lại để đăng nhập vào hệ thống. Tôi gõ tên tài khoản và mật khẩu đã đăng ký lúc cài đặt. Tiếp theo, tôi chạy hai lệnh sau để cập nhật hệ thống:

sudo apt update
sudo apt upgrade -y

Sau khi cập nhật xong, tôi gõ lệnh sau để cài Samba:

sudo apt install samba -y

Thiết lập IP tĩnh cho Ubuntu Server

Mặc định, máy ảo dùng IP động. Nếu IP của server thay đổi thì các máy khác muốn kết nối đến server cũng phải biết IP mới. Do đó, ta nên chuyển IP động sang tĩnh.

Trước tiên, ta chạy lệnh ifconfig để xem IP của máy (của tôi là 192.168.100.10). Tiếp theo, ta chạy lệnh sau để mở file cấu hình mạng:

sudo nano /etc/network/interfaces

Ta cập nhật file cấu hình như sau:

# The primary network interface
auto enp0s3
iface enp0s3 inet static

address 192.168.100.10
netmask 255.255.255.0
gateway 192.168.100.1
dns-nameservers 8.8.8.8

Tôi đặt IP tĩnh ở mục address giống với IP mà DHCP đã cấp để tránh xung đột. Trong mạng LAN, netmask phổ biến là 255.255.255.0. Bạn có thể thay đổi cho phù hợp với mạng của mình. Mục gateway là IP của modem. Trong mục dns-nameservers, tôi chọn DNS của Google. Cuối cùng, tôi khởi động lại Ubuntu để thay đổi có hiệu lực.

Chia sẻ file trong mạng LAN với Samba

Để chia sẻ file qua mạng, ta sẽ dùng Samba. Đầu tiên, ta dùng Nano để mở file cấu hình:

sudo nano /etc/samba/smb.conf

Ta kéo xuống cuối file và thêm nội dung sau:

[Shared Files]
path = /home/hieusensei/files
writable = yes
guest ok = no
valid users = hieusensei

Ở dòng đầu tiên, tôi đặt tên cho thư mục chia sẻ trong cặp dấu ngoặc vuông. Tên này không nhất thiết phải giống với thư mục trên Ubuntu. Mục path là đường dẫn đến thư mục ta muốn chia sẻ. Đường dẫn này phải tuyệt đối (bắt đầu từ root). Mục writable cho phép các máy khác có thể thay đổi nội dung thư mục chia sẻ. Ta có thể ghi là writable hoặc writeable đều được. Mục guest ok = no bắt buộc người dùng phải đăng nhập để vào thư mục. Mục valid users liệt kê những tài khoản trên Ubuntu được phép truy cập thư mục chia sẻ.

Lưu ý: Bạn thay đổi tên tài khoản cho phù hợp với tài khoản của mình, ở đây tài khoản tôi dùng là hieusensei.

Để dùng tài khoản đã khai báo trong mục valid users, ta phải gán mật khẩu Samba cho chúng. Mật khẩu này chỉ có hiệu lực với Samba và nó khác với mật khẩu đăng nhập hệ thống. Ta chạy lệnh sau để gán mật khẩu Samba cho tài khoản:

sudo smbpasswd -a hieusensei

Sau khi chạy lệnh, ta được yêu cầu cung cấp mật khẩu mới. Bạn phải nhớ mật khẩu này để truy cập thư mục chia sẻ từ máy khác. Cuối cùng, ta khởi động lại dịch vụ Samba bằng lệnh sau:

sudo service smbd restart

Bây giờ, từ một máy Windows bất kỳ trong mạng LAN, ta mở File Explorer và gõ \\192.168.100.10. Windows sẽ hiển thị thư mục Shared Files. Khi mở thư mục này, ta được yêu cầu đăng nhập. Nhớ là bạn phải gõ mật khẩu của Samba chứ không phải mật khẩu đăng nhập Ubuntu.

Network Drive

Thông thường, tôi bỏ tất cả file dự án vào thư mục này. Tôi quen dùng Windows, nên cảm thấy thoải mái hơn khi viết code trên Windows. Còn khi chạy ứng dụng, để cho chắc, tôi dùng máy ảo Ubuntu. Phương pháp này cho phép truy cập web từ máy khác trong mạng LAN. Chỉ cần gõ IP 192.168.100.10 vào trình duyệt là vô được (giả định port đang dùng là 80).

Lời kết

Công nghệ ảo hóa đã thay đổi cách làm việc với máy tính. Công việc trước kia phải cần nhiều máy thì giờ chỉ cần một. Khi bắt đầu dự án, tôi tạo một máy ảo. Khi kết thúc, tôi xóa nó đi. Mọi thứ trong máy thực của tôi không bị xáo trộn.