Skip to main content

Sử dụng WSL cơ bản

Tại sao nên sử dụng WSL?

WSL (Windows Subsystem for Linux) cho phép chạy môi trường Linux trực tiếp trên Windows, mang lại trải nghiệm development tốt hơn so với môi trường Windows thuần.

So sánh: WSL vs Các môi trường phát triển khác

Tính năngWSLMôi trường Windows gốcMáy ảo
Hiệu năngNhẹ, sử dụng ít tài nguyênTrung bình, tùy thuộc vào công cụTiêu thụ tài nguyên cao
Tích hợpTích hợp hoàn toàn với WindowsGốc nhưng hạn chế hỗ trợ LinuxTích hợp hạn chế với Windows
Hệ thống tệpTruy cập được cả tệp Linux và WindowsChỉ hỗ trợ tệp WindowsHệ thống tệp riêng biệt
Thời gian thiết lậpThiết lập nhanh và dễ dàngCó sẵn mặc địnhTốn thời gian cài đặt và cấu hình
Tương thích công cụHỗ trợ các công cụ Linux như bash, git, makeCó thể thiếu tương thích với một số công cụTương thích hoàn toàn với Linux
Trường hợp sử dụngPhù hợp cho phát triển ưu tiên LinuxTốt cho các quy trình chỉ trên WindowsPhù hợp với môi trường cô lập

Lợi ích khi sử dụng WSL

1. Tương thích Linux trên Windows

  • Chạy các công cụ Linux gốc (bash, vim, grep) trực tiếp trên Windows
  • Tránh việc phải dual boot hoặc sử dụng máy riêng
  • Code trên môi trường Linux còn giao diện Windows và sử dụng các tính năng của Windows bình thường

2. Sử dụng tài nguyên hiệu quả

  • WSL 2 hoạt động trên một máy ảo nhẹ, sử dụng ít RAM và CPU hơn so với máy ảo thông thường

3. Truy cập hệ thống tệp dễ dàng

Truy cập tệp từ cả Linux và Windows:

# Tệp Linux
/home/user/project

# Tệp Windows từ WSL
/mnt/c/Users/TenCuaBan/

# Tệp WSL từ Windows
\\wsl$\Ubuntu\home\user\

4. Giảm lỗi khi phát triển

  • Các dự án dựa trên Linux (Node.js, Python, Docker) chạy mượt mà hơn trên môi trường Linux
  • Giảm thiểu lỗi compatibility so với Windows thuần

5. Tích hợp với các công cụ phổ biến

  • Dễ dàng tích hợp với Git, Docker, VS Code và các công cụ phát triển khác
  • Không cần dual boot

Các trường hợp sử dụng chính của WSL

🔧 Phát triển ứng dụng đa nền tảng

Sử dụng WSL để làm việc với các framework và công cụ ưu tiên Linux, đồng thời kiểm tra trên Windows.

🐳 Phát triển Docker và Container

WSL 2 hỗ trợ Docker Desktop, cho phép luồng công việc với container hiệu quả.

📚 Học Linux

Lý tưởng cho người dùng Windows muốn khám phá các lệnh và công cụ Linux mà không ảnh hưởng đến hệ điều hành chính.

🛠️ Tránh lỗi hệ thống

Nhiều công cụ và thư viện thiết kế cho Linux (Node.js, npm) hoạt động ổn định hơn trên WSL so với trực tiếp trên Windows.


Cài đặt WSL và các tính năng cơ bản

Resources chính thức:


Setup WSL cho Avada Projects

Prerequisites

Đảm bảo đã cài đặt:

  • WSL 2 với Ubuntu distribution
  • Node.js và npm/yarn trong WSL
  • Git configured trong WSL

Setup SSL Certificates với mkcert

Tại sao cần SSL cho local development?

Chứng chỉ an toàn

Cài đặt mkcert

mkcert

mkcert GitHub Repository - Tool để tạo local SSL certificates

Setup workflow:

  1. Cài mkcert cho Windows (như bình thường)

  2. Copy certificates vào Ubuntu

    Lý do

    Chrome chạy trên Windows và đọc chứng chỉ từ Windows store

  3. Rename certificates:

    # mkcert tạo ra:
    key.pem → ssl.key
    cert.pem → ssl.crt
Chú ý

Lấy đúng file certificates và đảm bảo paths chính xác cho project!


Project Configuration

Environment Configuration

.env
BACKEND_PORT=5010
FRONTEND_PORT=3010
Configuration Tips
  • Đổi ports trong functions và script tags nếu cần
  • Đảm bảo ports không conflict với services khác

Development Workflow

1. Start Firebase Emulators

./node_modules/.bin/firebase emulators:start --only hosting,functions,pubsub

2. Start Development Server

yarn start-dev-embed

3. Watch Assets (trong thư mục assets)

yarn watch:standalone

Additional Setup Requirements

Java Environment

  • JAVA_HOME: Cài đặt riêng cho Ubuntu environment
  • Configure proper Java paths trong WSL

Git Integration

  • Link Git Ubuntu to Windows: Sync git configuration giữa environments
  • Setup SSH keys và credentials

Service Account

  • Configure service account credentials
  • Đảm bảo proper authentication cho Firebase services

Troubleshooting Common Issues

Port Conflicts

# Check port usage
netstat -tulpn | grep :3050
lsof -i :3050

# Kill process on port
kill -9 $(lsof -ti:3050)

File Permission Issues

# Fix common permission issues
chmod +x node_modules/.bin/firebase
sudo chown -R $USER:$USER ~/.npm

WSL Performance Optimization

# Place project files in WSL filesystem for better performance
# BAD: /mnt/c/Users/YourName/project
# GOOD: /home/username/project

Best Practices

1. File Location Strategy

  • Đặt project files trong WSL filesystem (/home/user/) thay vì Windows filesystem (/mnt/c/)
  • Better performance và file watching capabilities

2. Development Environment

  • Sử dụng WSL terminal cho development commands
  • VS Code với WSL extension cho editing
  • Windows browser cho testing

3. Git Workflow

  • Configure git trong WSL
  • Sử dụng SSH keys cho authentication
  • Sync .gitconfig giữa Windows và WSL nếu cần

Kết luận

WSL mang lại môi trường development tối ưu cho Avada projects:

  • Linux compatibility cho Node.js và build tools
  • Windows integration cho GUI applications
  • Better performance so với Windows thuần
  • Easier SSL setup với mkcert
  • Native tooling support cho development workflow
Next Steps
  • Setup monitoring tools cho development
  • Configure automated testing trong WSL environment
  • Optimize build performance với WSL 2