Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Bạn chạy ứng dụng bằng node server.js trong cửa sổ SSH, đóng cửa sổ là ứng dụng chết. Máy chủ khởi động lại là phải bật tay. Trên hầu hết bản phân phối Linux hiện nay, systemd giải quyết gọn vấn đề này: ứng dụng chạy nền, tự bật khi khởi động máy và tự bật lại khi sập.
systemd là hệ thống quản lý dịch vụ của nhiều bản phân phối Linux phổ biến như Ubuntu, Debian, CentOS. Mỗi dịch vụ được mô tả bằng một file unit có đuôi .service. Bạn điều khiển chúng bằng lệnh systemctl và xem nhật ký bằng journalctl.
Giả sử ứng dụng Node.js nằm ở /opt/myapp. Tạo file /etc/systemd/system/myapp.service:
[Unit]
Description=Ung dung web cua toi
After=network.target
[Service]
Type=simple
User=deploy
WorkingDirectory=/opt/myapp
EnvironmentFile=/opt/myapp/.env
ExecStart=/usr/bin/node server.js
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetBa phần của file:
After=network.target nghĩa là chạy sau khi mạng sẵn sàng.User chạy bằng người dùng thường thay vì root, ExecStart là lệnh chạy (nên dùng đường dẫn tuyệt đối), Restart=on-failure tự bật lại nếu ứng dụng thoát với lỗi.multi-user.target là chế độ chạy nhiều người dùng thông thường.Dòng EnvironmentFile nạp biến môi trường từ file riêng, tránh ghi bí mật thẳng vào unit.
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
sudo systemctl status myappSau khi sửa file unit lần nào cũng phải chạy daemon-reload để systemd đọc lại. Cờ --now vừa bật tự khởi động vừa khởi động ngay.
| Lệnh | Tác dụng |
|---|---|
| systemctl start myapp | Khởi động |
| systemctl stop myapp | Dừng |
| systemctl restart myapp | Khởi động lại |
| systemctl enable myapp | Tự chạy khi bật máy |
| systemctl disable myapp | Bỏ tự chạy |
| systemctl status myapp | Xem trạng thái |
journalctl -u myapp -f
journalctl -u myapp --since today
journalctl -u myapp -n 100 --no-pagerMọi thứ ứng dụng in ra stdout và stderr đều được systemd thu về, nên bạn không cần tự quản lý file log cho các ứng dụng đơn giản. Cờ -f theo dõi trực tiếp, -u chọn dịch vụ.
systemctl status myapp và đọc vài dòng cuối.journalctl -u myapp -n 50 để biết lỗi thật.ExecStart có tuyệt đối không (which node cho biết vị trí).systemctl reset-failed.Bạn có thể thêm các tùy chọn như NoNewPrivileges=true hay ProtectSystem=full trong phần Service để thu hẹp quyền của ứng dụng. Hãy thử từng dòng một vì chúng có thể chặn ứng dụng ghi vào chỗ nó cần.
Một file unit khoảng mười dòng đủ để biến ứng dụng thành dịch vụ đáng tin cậy: chạy nền, tự khởi động, tự hồi phục và có nhật ký tập trung. Đây là bước chuyển từ 'chạy thử trên máy chủ' sang 'vận hành thật'.
Để học trọn bộ kỹ năng triển khai từ Linux đến CI/CD, bạn có thể tham khảo khóa học trên codebem.com.
Nguyễn Đình Cường
0 comment