series Railway Bài 5: Theo Dõi Log, Khắc Phục Sự Cố (Troubleshooting) & Railway CLI
Khi hệ thống đã chạy trơn tru trên internet với tên miền xịn xò, mọi thứ trông thật hoàn hảo. Nhưng thực tế của một lập trình viên Backend là... code sẽ có lúc chạy sai (bug), hoặc server bất ngờ "sập". Bài học hôm nay sẽ trang bị cho bạn bộ kỹ năng sinh tồn thiết yếu: theo dõi log, chẩn đoán lỗi và làm quen với công cụ dòng lệnh Railway CLI.
1. Đọc Log - "Bác sĩ" bắt bệnh cho ứng dụng
Trên môi trường đám mây, bạn không thể nhìn thấy màn hình console/terminal như lúc chạy code ở máy tính cá nhân. Thay vào đó, Railway lưu lại toàn bộ lịch sử hoạt động vào các file nhật ký (Log).
Có 2 loại Log quan trọng bạn cần phân biệt trong tab Deployments của một Service:
- Deploy Logs (Nhật ký triển khai): Ghi lại quá trình Railway tải code của bạn về, cài đặt các thư viện (ví dụ: chạy npm install hoặc composer install nếu bạn dùng PHP/Laravel) và đóng gói ứng dụng. Nếu bạn thấy nhãn Failed màu đỏ ngay từ lúc đang deploy, hãy kiểm tra tab này. Lỗi thường do sai phiên bản ngôn ngữ hoặc thiếu thư viện.
- App Logs (Nhật ký ứng dụng): Ghi lại những gì xảy ra sau khi ứng dụng đã chạy. Mỗi khi có lệnh console.log() hoặc một lỗi Exception (ví dụ: lỗi kết nối Database), nó sẽ hiện ở đây. Nếu người dùng báo lỗi 500 Internal Server Error, việc đầu tiên bạn làm là mở App Logs để xem chi tiết thông báo lỗi.
2. Các lỗi kinh điển của người mới & Cách khắc phục
Dưới đây là 3 lỗi phổ biến nhất khi mới làm quen với Railway và cách xử lý:
- Lỗi CrashLoopBackOff (Ứng dụng liên tục khởi động lại rồi chết):
- Nguyên nhân lớn nhất: Bạn quên cấu hình cho ứng dụng lắng nghe đúng cái "cửa" (Port) mà Railway yêu cầu.
- Cách sửa: Luôn đảm bảo code của bạn sử dụng biến môi trường do Railway cấp, ví dụ: process.env.PORT thay vì viết cứng app.listen(3000).
- Lỗi không thể kết nối Database:
- Nguyên nhân: App chạy trước khi Database khởi động xong, hoặc biến DATABASE_URL bị cấu hình sai.
- Cách sửa: Kiểm tra lại tab Variables để đảm bảo biến môi trường đã được cung cấp chính xác và đầy đủ.
- Build thất bại do thiếu file cấu hình:
- Cách sửa: Đảm bảo các file định nghĩa dự án như package.json, go.mod, hoặc composer.json nằm ở ngay thư mục gốc (root directory) của kho chứa trên GitHub, chứ không bị giấu bên trong một thư mục con nào khác.
3. Trải nghiệm sức mạnh của Railway CLI
Mặc dù giao diện web của Railway rất thân thiện, nhưng khi bạn đã quen với việc thao tác qua màn hình đen (Terminal), Railway CLI sẽ giúp bạn làm việc với tốc độ ánh sáng.
Cách cài đặt: Mở Terminal trên máy tính của bạn và chạy lệnh cài đặt (nếu đã cài Node.js): npm i -g @railway/cli
Các lệnh "phép thuật" cơ bản:
- railway login: Đăng nhập vào tài khoản Railway của bạn từ Terminal.
- railway link: Gắn thư mục code hiện tại trên máy bạn với một Project có sẵn trên Railway.
- railway logs: Xem log của ứng dụng trực tiếp trên máy tính mà không cần mở trình duyệt web.
- railway run <câu lệnh>: Chạy một lệnh trên máy tính của bạn nhưng sử dụng các biến môi trường được lấy trực tiếp từ Railway. Điều này cực kỳ hữu ích khi bạn muốn test ứng dụng ở máy local nhưng lại muốn dùng chung Database đang chạy trên Railway!
Lời Kết & Bước Đi Tiếp Theo
Chúc mừng Hiếu đã hoàn thành lộ trình cơ bản! Bạn giờ đây hoàn toàn có khả năng tự mình đưa các dự án từ ý tưởng lên không gian mạng.
Để tiến xa hơn, khi ứng dụng bắt đầu phát triển và có nhiều người dùng, bạn có thể tự mình thử nghiệm những kiến trúc nâng cao hơn ngay trên chính Railway. Nền tảng này hỗ trợ rất tốt cho việc tạo lập một hệ sinh thái phân tán, ví dụ như bạn có thể triển khai thêm các dịch vụ Message Broker (như Kafka hoặc RabbitMQ) để xử lý các hàng đợi sự kiện, hoặc thiết lập nhiều node Database khác nhau để nghiên cứu về replication và sharding.
All rights reserved