Bạn còn nhớ những ngày tháng 'lâm trận' với server không? Cứ mỗi lần cần chỉnh sửa gì là lại phải SSH vào, gõ gõ mấy dòng lệnh, run rẩy không biết có làm 'gãy' hệ thống không? À, những ngày ấy với tôi... giờ đã qua rồi! Trong thế giới của bảo mật siêu chặt chẽ, tuân thủ nghiêm ngặt và khả năng phục hồi thần tốc, tôi đã thay đổi cách nhìn về các server Linux. Giờ đây, tôi coi chúng như những 'công cụ dùng một lần' vậy đó! Nghe có vẻ lạ đúng không? Nhưng nếu một server bị lỗi hay lỗi thời, tôi không cố gắng 'vá víu' nó nữa – mà thẳng tay... thay thế nó bằng một cái mới toanh! Nghe hấp dẫn không? Hãy cùng tôi khám phá tại sao tôi lại 'say mê' triết lý hạ tầng bất biến này nhé. Bạn sẽ thấy nó đã giúp cải thiện bảo mật và thời gian hoạt động của server Linux của tôi như thế nào đấy!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/disposable_server_concept.png' alt='Server như đồ dùng một lần'>🧱 <b>Hạ tầng bất biến là gì? Nghe có vẻ cao siêu, nhưng thực ra đơn giản lắm!</b> Bạn hình dung thế này nhé: 'Bất biến' (Immutable) có nghĩa là 'không thể thay đổi'. Trong thế giới server, nó có nghĩa là một khi server đã được triển khai và chạy rồi, bạn sẽ <b>không bao giờ chỉnh sửa nó nữa!</b><ul><li>Không còn chuyện SSH vào để chỉnh sửa cấu hình thủ công.</li><li>Không còn vá lỗi (patching) trực tiếp trên server đang chạy.</li><li>Và đặc biệt là, không còn những pha 'hotfix' bất ngờ lúc 2 giờ sáng mà bạn phải mò mẫm sửa trên server production nữa!</li></ul>Vậy thay vào đó, chúng ta làm gì? Chúng ta sẽ:<ol><li><b>Xây dựng 'ảnh vàng' (Golden Images) mới:</b> Đây là bản sao hoàn hảo của server bạn muốn, đã được cấu hình và cài đặt mọi thứ một cách chính xác. Tưởng tượng như bạn có một bộ khuôn đúc server hoàn hảo vậy.</li><li><b>Triển khai server mới tinh từ ảnh vàng:</b> Mỗi khi cần thay đổi hoặc cập nhật, bạn tạo một server mới từ bản sao 'vàng' này. Nó sạch sẽ, đúng chuẩn, không tì vết.</li><li><b>Hủy bỏ server cũ:</b> Server cũ (có thể đã lỗi thời, hoặc đã được vá lỗi sai cách, hoặc chỉ đơn giản là không cần nữa) sẽ bị xóa sổ hoàn toàn.</li></ol>Mọi thứ đều được kiểm soát phiên bản (versioned), có thể lặp lại (repeatable) và được ghi lại đầy đủ (logged). Cứ như có một cỗ máy tạo server hoàn hảo và tự động vậy!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/immutable_flow.png' alt='Quy trình hạ tầng bất biến'>🔐 <b>Tại sao nó lại 'đỉnh' hơn về mặt bảo mật?</b>Cái này mới hay nè! Áp dụng hạ tầng bất biến không chỉ giúp bạn 'nhàn' hơn mà còn làm cho hệ thống của bạn 'miễn dịch' với nhiều loại vấn đề đấy!<b>✅ 1. Không còn 'lệch pha' (No Drift)</b>Bạn hình dung mỗi lần bạn SSH vào một server để sửa một lỗi nhỏ, hay cài thêm một gói phần mềm... là y như rằng server đó bắt đầu 'lệch pha' so với các server anh em khác. Cứ dần dà, mỗi server lại biến thành một 'bông tuyết' (snowflake server) – không có hai server nào giống nhau hoàn toàn!Mà server đã 'lệch pha' rồi thì sao?<ul><li>Tìm lỗi cực kỳ khó khăn: Lỗi xảy ra trên server A nhưng không xảy ra trên server B vì cấu hình khác nhau.</li><li>Bảo mật là một cơn ác mộng: Không thể đảm bảo tất cả các server đều được cấu hình bảo mật giống nhau, dễ tạo ra 'lỗ hổng' bất ngờ.</li></ul>Với hạ tầng bất biến, mọi server đều được tạo ra từ cùng một 'ảnh vàng' hoàn hảo. Đảm bảo mọi thứ đồng bộ như nhau, không còn 'bông tuyết' nào cả! Mọi thứ đều chuẩn chỉnh từ đầu đến chân!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/snowflake_servers.png' alt='Server bông tuyết và server đồng nhất'><b>✅ 2. Phục hồi tức thì (Instant Recovery)</b>Đây chính là 'siêu năng lực' của hạ tầng bất biến!Hãy tưởng tượng server của bạn đột nhiên gặp sự cố 'trời ơi đất hỡi', sập cái rụp. Nếu là cách truyền thống, bạn sẽ phải:<ul><li>Mò mẫm tìm lỗi.</li><li>Cố gắng sửa chữa.</li><li>Khởi động lại, và cầu nguyện.</li></ul>Quá trình này tốn rất nhiều thời gian và căng thẳng, đặc biệt là khi hệ thống đang bị ảnh hưởng trực tiếp!Còn với hạ tầng bất biến thì sao? Đơn giản thôi: <b>Server hỏng à? Vứt! Triển khai cái mới tinh từ 'ảnh vàng' chỉ trong vài phút!</b>Vì bạn đã có sẵn một bản sao hoàn hảo, được kiểm tra kỹ lưỡng, việc khôi phục chỉ là 'nhấn nút' để tạo một server mới và đưa nó vào hoạt động. Không cần mất công debug hay sửa chữa trên server đang 'đổ bệnh'. Thời gian downtime (thời gian hệ thống ngừng hoạt động) được rút ngắn đáng kể, giúp doanh nghiệp của bạn hoạt động trơn tru hơn rất nhiều!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/instant_recovery_server.png' alt='Phục hồi server tức thì'>
Chào bạn! Bạn có bao giờ tự hỏi, liệu cái máy chủ Linux mà bạn vừa cài xong có thật sự 'an toàn mặc định' như lời đồn không? Nghe có vẻ yên tâm nhỉ? Nhưng khoan đã! Sau khi 'mổ xẻ' hàng tá server, tôi nhận ra đây là một lầm tưởng... cực kỳ nguy hiểm đó! Ngay cả những 'anh lớn' như Ubuntu hay CentOS cũng có thể để lại 'cửa hậu' nếu bạn không cẩn thận. Hãy cùng tôi lật tẩy sự thật và xem tôi đã làm gì để bảo vệ 'nhà' mình nhé! Tưởng tượng mà xem, ngay sau khi bạn cài đặt xong server, tôi thử gõ lệnh `ss -tuln` (một 'thám tử' giúp bạn kiểm tra các cổng mạng đang mở) và bất ngờ thấy... ôi thôi, có mấy 'vị khách không mời' đang 'nghe ngóng' rồi! Hóa ra, nhiều bản Linux mặc định cài sẵn mấy dịch vụ như Avahi (cho phép tìm kiếm dịch vụ trong mạng nội bộ), cups (dành cho máy in, mà server thì mấy khi in?), hay rpcbind (dịch vụ liên quan đến RPC) – những thứ thường chẳng cần thiết mà lại có thể thành 'ổ' cho kẻ xấu đột nhập. Bí kíp của tôi là gì? Ngay sau khi cài đặt, tôi sẽ chạy liền hai lệnh 'thám tử' này: `sudo ss -tuln` và `sudo netstat -plnt`. Hai lệnh này sẽ giúp bạn nhìn thấy rõ ràng những 'cánh cửa' nào đang mở và dịch vụ nào đang chiếm giữ chúng. Sau đó, bất cứ dịch vụ nào mà tôi thấy 'lạ hoắc' hoặc 'không mời mà đến', tôi sẽ thẳng tay 'đóng cửa' và 'niêm phong' nó ngay lập tức. Ví dụ, với 'anh chàng' Avahi không cần thiết: `sudo systemctl stop avahi-daemon` (Tắt dịch vụ ngay lập tức) và `sudo systemctl disable avahi-daemon` (Ngăn không cho nó tự khởi động lại khi server reboot). Đơn giản, đúng không nào? Cứ như dọn dẹp nhà cửa vậy! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/open_ports_concept.png' alt='Minh họa các cổng mở trên server'> Tiếp theo, một 'cánh cửa' khác mà kẻ xấu rất thích nhòm ngó chính là SSH (Secure Shell) – cổng kết nối từ xa vào server của bạn. Có lần tôi kiểm tra, ôi không! SSH lại cho phép đăng nhập bằng mật khẩu (password login) và thậm chí là cho phép đăng nhập bằng tài khoản root (root login) ngay từ đầu! Nghe thì tiện nhưng thực ra đây là hai 'lỗ hổng' cực lớn. Đăng nhập bằng mật khẩu dễ bị tấn công 'brute-force' (thử mật khẩu liên tục), còn đăng nhập bằng root thì... giống như bạn trao chìa khóa vạn năng cho bất kỳ ai vậy! Tôi làm gì để 'khóa chặt' SSH? Thứ nhất là tắt đăng nhập bằng mật khẩu: Chuyển sang dùng SSH Keys (khóa công khai/khóa riêng tư). Cứ như bạn dùng vân tay thay vì mật khẩu vậy, bảo mật hơn rất nhiều. Thứ hai là tắt đăng nhập tài khoản root: Tạo một tài khoản người dùng thường và sử dụng `sudo` khi cần quyền quản trị. Điều này giúp hạn chế tối đa rủi ro nếu tài khoản bị lộ. Thứ ba là thay đổi cổng SSH mặc định: Thay vì cổng 22 quen thuộc, đổi sang một cổng khác ít ai ngờ tới. Tuy không phải là giải pháp tuyệt đối, nhưng nó giúp 'che mắt' những kẻ quét mạng tự động. Và cuối cùng là giới hạn IP được phép đăng nhập: Chỉ cho phép những IP cụ thể mà bạn biết được kết nối qua SSH. Cứ làm vậy, bạn sẽ biến cánh cửa SSH từ 'cổng chợ' thành 'cửa hầm bí mật' an toàn tuyệt đối! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/ssh_security_lock.png' alt='Minh họa bảo mật SSH'> Thấy đó, khái niệm 'an toàn mặc định' đôi khi chỉ là một 'lời ru ngủ' mà thôi. Để server của bạn thực sự vững chắc, bạn cần phải chủ động kiểm tra và cấu hình lại. Đừng tin vào lời hứa, hãy tin vào những gì bạn tự tay kiểm soát! Bằng cách áp dụng những mẹo nhỏ này, bạn không chỉ bảo vệ server khỏi nguy hiểm mà còn 'nâng tầm' kỹ năng quản trị của mình nữa đấy!
Khám phá cách biến chiếc PC tự ráp của bạn thành trung tâm AI mạnh mẽ! Hướng dẫn chi tiết cài đặt driver NVIDIA RTX 5090, Docker, NVIDIA Container Toolkit, Ollama và OpenWebUI trên Ubuntu để chạy các mô hình ngôn ngữ lớn (LLM) cục bộ.
Bạn muốn cài đặt Oracle Database Free 23c một cách nhanh chóng và gọn gàng? Bài viết này sẽ hướng dẫn bạn từng bước sử dụng Podman, biến việc cài đặt phức tạp thành chuyện nhỏ, kèm theo cách tích hợp với VSCode cực tiện lợi. Đọc ngay để làm chủ Oracle DB trên Linux/Mac!
Khám phá LogManticsAI, công cụ dòng lệnh mã nguồn mở sử dụng LLM để phân tích ngữ nghĩa log JSON, phát hiện bất thường thời gian thực và giám sát liên tục ngay tại terminal của bạn. Nâng cấp quy trình DevOps với AI!
Chào các bạn developer! Các bạn có còn nhớ ngôn ngữ C "thần thánh" đã mang lại cho chúng ta sức mạnh khủng khiếp để "đụng chạm" phần cứng không? Vậy thì giờ đây, một "người hùng" mới đang nổi lên, mang tên Rust, hứa hẹn sẽ "nâng cấp" sự an toàn lên một tầm cao mới! Và đoán xem, Linux Kernel, trái tim của rất nhiều hệ điều hành, đang "ôm" Rust vào lòng đấy! Đây không chỉ là một thay đổi nhỏ đâu, mà có thể là cú chuyển mình lớn nhất trong lập trình hệ thống suốt mấy chục năm qua luôn đó!Tưởng tượng mà xem, một hệ điều hành đã quá "lão làng" như Linux, nay lại "kết duyên" với một ngôn ngữ còn khá trẻ như Rust. Chắc chắn không phải là chuyện đùa đúng không? Vậy tại sao Rust lại quan trọng đến vậy với Linux Kernel? Những phần nào của Linux đã bắt đầu được viết bằng Rust rồi? Và con đường "yêu đương" này có gặp phải khó khăn gì không khi một ngôn ngữ mới muốn chen chân vào trung tâm của một dự án mã nguồn mở khổng lồ như Linux?Trong bài viết này, chúng ta sẽ cùng nhau "mổ xẻ" những câu hỏi siêu thú vị này! Hãy cùng tìm hiểu:* Tại sao Rust lại là "chìa khóa vàng" cho Linux Kernel?* Những mảnh ghép Rust nào đã "len lỏi" vào bên trong Linux rồi?* Những thử thách "cam go" khi tích hợp một ngôn ngữ mới vào một "cây đại thụ" mã nguồn mở như Linux là gì?<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fraxjwmzoq7qh1o45vfs6.jpg' alt='Rust trong nhân Linux'>Đừng chần chừ nữa, hãy cùng mình "lặn sâu" vào bài viết đầy hấp dẫn này để khám phá sự khởi đầu của một kỷ nguyên mới trong lập trình hệ thống nhé! Link bài viết đầy đủ đây nè: https://medium.com/@ashishjsharda/rust-in-the-linux-kernel-the-beginning-of-a-new-era-for-systems-programming-8a6be541ec84
Khám phá Redis, 'siêu nhân' lưu trữ dữ liệu trong RAM, và cách biến nó thành công cụ tăng tốc ứng dụng. Hướng dẫn chi tiết từng bước cài đặt Redis trên các bản phân phối Linux phổ biến như Ubuntu, Arch, CentOS, Fedora một cách dễ hiểu và vui nhộn. Từ cài đặt, khởi động, đến kiểm tra, bạn sẽ làm chủ Redis chỉ trong tích tắc!
Hướng dẫn khắc phục sự cố mô hình AI bị fine-tuned trên Ollama mất cấu hình (TEMPLATE, stop sequences). Học cách sao chép và áp dụng Modelfile từ mô hình gốc sang mô hình mới để AI hoạt động đúng cách.
Bạn có tò mò về Seccomp? Khám phá 'vệ sĩ' thầm lặng giúp bảo vệ các container Docker của bạn bằng cách giới hạn chính xác các lệnh ứng dụng gửi đến nhân Linux. Bài viết sẽ đi sâu vào cách Seccomp hoạt động, tầm quan trọng của nó trong môi trường sản xuất, và cách bạn có thể kiểm soát bảo mật 'từng syscall một' để đạt được nguyên tắc đặc quyền tối thiểu.
Khám phá hành trình của một kỹ sư phần mềm kiêm nhà sản xuất âm nhạc trong việc xây dựng môi trường làm việc lý tưởng: từ sức mạnh của Neovim trên Linux cho lập trình, đến hiệu suất vượt trội của Mac cho âm nhạc. Bài viết đi sâu vào triết lý kiểm soát, phát triển đa nền tảng với CI/CD, cùng kinh nghiệm làm việc trong lĩnh vực AI và startup.
Hướng dẫn cài đặt GitLab Runner trên Linux một cách chi tiết, dễ hiểu, kèm theo các lệnh hữu ích và hình ảnh minh họa. Biến quy trình CI/CD của bạn thành tự động với GitLab Runner.
Khám phá hành trình xây dựng môi trường Arch Linux cho lập trình, từ cài đặt, cập nhật, đến thiết lập các công cụ cần thiết như Git, VS Code, Node.js, NPM và Yarn, cùng với mẹo cấu hình Bash aliases để tối ưu hóa năng suất.
Chào các bạn! Đã bao giờ bạn muốn ứng dụng .NET Web API của mình trên Linux trở nên 'bất tử' chưa? Tức là dù có 'ngã' đi chăng nữa, nó cũng tự động 'đứng dậy' và chạy tiếp như chưa hề có cuộc chia ly! Nghe có vẻ thần kỳ, nhưng thực ra chúng ta sẽ biến điều đó thành hiện thực với sự trợ giúp của systemd – 'người hùng thầm lặng' quản lý các dịch vụ trên Linux. Cùng nhau khám phá cách biến Web API của bạn thành một chiến binh không bao giờ bỏ cuộc nhé!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/resilient_app.png' alt='Ứng dụng .NET tự động phục hồi với systemd'>Bước đầu tiên, chúng ta cùng điểm danh 'đồ nghề' cần có trên server Linux nhé! Hãy chắc chắn bạn đã chuẩn bị đủ bộ 'trang bị' này trước khi 'nhập cuộc':<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/setup_checklist.png' alt='Checklist chuẩn bị triển khai'>* **Máy chủ Linux xịn xò:** Một em server Linux bất kỳ (Ubuntu, CentOS...) đang chạy ngon lành và có kết nối Internet.* **Quyền 'Vua' (Root Rights):** Để cài đặt phần mềm và cấu hình dịch vụ, bạn cần có quyền sudo hoặc root nhé.* **.NET SDK:** Đây chính là 'ngôi sao' của buổi diễn! Nếu chưa có, bạn hãy ghé thăm 'nhà chính chủ' của .NET tại <a href='https://learn.microsoft.com/en-us/dotnet/core/install/linux'>website chính thức của .NET</a> để tải phiên bản phù hợp với Linux distro của bạn. Sau khi cài xong, nhớ kiểm tra lại bằng các lệnh sau để đảm bảo 'ngôi sao' đã lên sóng nhé: dotnet --list-sdks dotnet --list-runtimes dotnet --versionBước 2: Cài đặt 'ngôi sao' .NET SDK (nếu chưa có)Nếu bạn chưa có .NET SDK trong tay, giờ là lúc để 'rước em ấy về dinh' rồi! Đối với các hệ thống dựa trên Ubuntu hoặc Debian, bạn chỉ cần mở terminal lên và gõ nhẹ vài dòng lệnh sau: Đầu tiên, cập nhật danh sách gói phần mềm để không bị 'lạc hậu' nhé sudo apt update. Giờ thì 'thỉnh' em .NET SDK 8.0 về thôi! sudo apt install dotnet-sdk-8.0Bước 3 (Tùy chọn): Chưa có dự án ư? Chuyện nhỏ!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/dotnet_new_publish.png' alt='Tạo và publish dự án .NET Web API'>Đừng lo nếu bạn chưa có sẵn một dự án Web API để 'thử nghiệm' nhé! Chúng ta sẽ tạo ngay một 'công trình mẫu' .NET Web API chỉ trong nháy mắt. Mở terminal và gõ các lệnh sau: Tạo dự án Web API mới toanh: dotnet new webapi -n MyWebApi và sau đó cd MyWebApi.'Đóng gói' ứng dụng để sẵn sàng triển khai: Sau khi có dự án, chúng ta cần 'đóng gói' nó lại thành một phiên bản 'phát hành' gọn gàng để dễ dàng triển khai. Hãy chạy lệnh này: dotnet publish -c Release -o ./publish. Lệnh này sẽ tạo ra một thư mục publish chứa tất cả những gì cần thiết để ứng dụng của bạn chạy mượt mà.Bước 4: 'Phù phép' tạo file dịch vụ systemd - Bí quyết của sự tự động!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/systemd_config.png' alt='Cấu hình file systemd service'>Đây chính là phần quan trọng nhất để Web API của bạn có thể 'tự thân vận động' sau mỗi lần 'vấp ngã' hoặc khi server khởi động lại. Chúng ta sẽ tạo một file cấu hình dịch vụ trong thư mục /etc/systemd/system/. Đừng quên thay mywebapi bằng tên ứng dụng 'cưng' của bạn nhé: sudo nano /etc/systemd/system/mywebapi.service. Khi file được mở, hãy dán đoạn cấu hình 'thần thánh' này vào đó: [Unit]Description=My .NET Web API - Ứng dụng Web API siêu việt của tôi After=network.target [Service]WorkingDirectory=/path/to/your/project/publish ExecStart=/usr/bin/dotnet /path/to/your/project/publish/MyWebApi.dll Restart=always RestartSec=10 SyslogIdentifier=mywebapi User=yourusername Environment=ASPNETCORE_ENVIRONMENT=Production [Install]WantedBy=multi-user.target. Giải thích 'thần chú' một chút nhé:* WorkingDirectory: Đây là nơi chứa ứng dụng đã 'đóng gói' của bạn.* ExecStart: Lệnh để 'đánh thức' ứng dụng của bạn.* User: Người dùng Linux nào sẽ 'chịu trách nhiệm' chạy dịch vụ này. Nhớ là người dùng đó phải có quyền truy cập vào các file ứng dụng nhé!* Environment: Chúng ta cài đặt ASPNETCORE_ENVIRONMENT=Production để ứng dụng của bạn chạy ở chế độ tối ưu nhất, phù hợp cho môi trường thật.Bước 5: 'Khởi động' và 'Kích hoạt' dịch vụ - Đưa ứng dụng vào hoạt động!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/systemctl_status.png' alt='Quản lý dịch vụ systemd'>Sau khi đã tạo file cấu hình, chúng ta cần 'thông báo' cho systemd biết rằng có một dịch vụ mới vừa ra đời nhé: sudo systemctl daemon-reload. Bây giờ, chúng ta đã có thể 'ra lệnh' cho dịch vụ của mình rồi:* Để 'đánh thức' ứng dụng: sudo systemctl start mywebapi.service* Để ứng dụng tự động chạy mỗi khi server khởi động lại (siêu quan trọng!): sudo systemctl enable mywebapi.service* Muốn biết 'tình hình sức khỏe' của ứng dụng thế nào? sudo systemctl status mywebapi.service* Và nếu cần 'tạm dừng' ứng dụng: sudo systemctl stop mywebapi.serviceBước 6: Xác nhận 'sự sống' của ứng dụng - Đến lúc kiểm chứng!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/api_success.png' alt='Xác minh ứng dụng .NET Web API chạy trên Linux'>Mọi thứ đã 'đâu vào đấy' rồi! Giờ là lúc bạn truy cập vào ứng dụng của mình để xem nó có 'lên sóng' chưa nhé. Hãy mở trình duyệt và gõ địa chỉ IP hoặc tên miền của server bạn vào (ví dụ: <a href='http://your_domain_or_ip/'>http://your_domain_or_ip/</a>). Nếu là API, bạn có thể dùng các 'công cụ' như curl (trên terminal) hoặc Postman để kiểm tra các endpoint của mình: curl http://example.com/your_api_endpoint. Nếu nhận được phản hồi như mong đợi, xin chúc mừng! Ứng dụng của bạn đã 'sống' khỏe re rồi đấy!Bước 7: 'Hóng' log - Khi có vấn đề, đây là nơi 'tâm sự'<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/journalctl_logs.png' alt='Theo dõi nhật ký (logs) của dịch vụ systemd'>Trong quá trình triển khai, đôi khi 'sự cố' là điều không thể tránh khỏi. Nếu ứng dụng của bạn không 'hợp tác', hãy 'viện trợ' bằng cách kiểm tra nhật ký hoạt động của dịch vụ. Lệnh này sẽ giúp bạn 'nghe ngóng' được những gì đang xảy ra theo thời gian thực: sudo journalctl -u mywebapi.service -f. Lệnh -f (follow) sẽ giúp bạn theo dõi log mới nhất, cứ như đang đọc một cuốn nhật ký trực tiếp vậy!Nhiệm vụ hoàn thành! Chúc mừng 'chiến binh' của bạn!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/mission_accomplished.png' alt='Nhiệm vụ hoàn thành - Triển khai .NET Web API thành công'>Vậy là chúng ta đã 'phá đảo' thành công rồi! Ứng dụng .NET Web API của bạn giờ đây đã chính thức 'lên kệ' trên Linux, với một 'tấm lưới an toàn' mang tên systemd. Bạn đã tạo ra một dịch vụ 'kiên cường', không dễ dàng 'gục ngã' và sẽ tự động 'hồi sinh' mỗi khi có sự cố. Bước tiếp theo để 'nâng tầm' ứng dụng lên một đẳng cấp mới? Đó là đặt nó sau một reverse proxy để có một hệ thống sẵn sàng cho môi trường Production thực sự. Còn bất kỳ câu hỏi nào, đừng ngần ngại chia sẻ nhé! Chúng tôi luôn ở đây để giúp đỡ!
Biến chiếc Kali Linux mạnh mẽ của bạn thành một trạm làm việc phát triển đầy đủ! Hướng dẫn từng bước cách cài đặt và cấu hình Python 3.12, Git 2.47, Visual Studio Code và Docker Engine, kèm theo mẹo cấu hình SSH với GitHub để bạn sẵn sàng code ngay lập tức.
Bạn có bao giờ nghĩ, nếu sức mạnh của C kết hợp với sự an toàn của Rust thì sẽ 'bá đạo' đến mức nào không? Vâng, điều tưởng chừng chỉ có trong mơ ấy đang dần trở thành hiện thực! Linux kernel – trái tim của mọi hệ điều hành mã nguồn mở – đang dần 'kết nạp' Rust. Đây không chỉ là một thay đổi nhỏ đâu, mà có lẽ là bước ngoặt lớn nhất trong giới lập trình hệ thống suốt nhiều thập kỷ qua đấy!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/raxjwmzoq7qh1o45vfs6.jpg' alt='Rust và Linux Kernel: Một kỷ nguyên mới'>Trong bài viết này, chúng ta sẽ cùng nhau 'khám phá' mọi ngóc ngách của câu chuyện này, bao gồm:<ul><li>Tại sao Rust lại trở thành 'ngôi sao' sáng giá đến vậy, đủ sức 'chen chân' vào trái tim của Kernel Linux?</li><li>Liệu Rust đã 'len lỏi' vào những phần nào của Linux rồi nhỉ?</li><li>Và tất nhiên, việc 'đưa dâu' một ngôn ngữ mới vào một 'gia đình' mã nguồn mở đồ sộ như Linux Kernel liệu có dễ dàng? Những thử thách nào đang chờ đợi?</li></ul>Sẵn sàng cho một hành trình khám phá sâu hơn về bước ngoặt lịch sử này chưa? Hãy cùng 'lặn' sâu vào bài viết đầy đủ tại đây nhé: <a href="https://medium.com/@ashishjsharda/rust-in-the-linux-kernel-the-beginning-of-a-new-era-for-systems-programming-8a6be541ec84">https://medium.com/@ashishjsharda/rust-in-the-linux-kernel-the-beginning-of-a-new-era-for-systems-programming-8a6be541ec84</a>
Khám phá server-stats.sh, 'con dao Thụy Sĩ' của DevOps giúp bạn nhanh chóng chẩn đoán các vấn đề của máy chủ như CPU cao, bộ nhớ đầy hay ổ đĩa cạn kiệt, biến nỗi sợ 3 giờ sáng thành sự tự tin.
Học cách sử dụng script Python tự động dọn dẹp các ảnh Docker cũ, không dùng đến trên Harbor, tích hợp thông minh với Kubernetes để đảm bảo không xóa nhầm ảnh đang hoạt động, giúp tối ưu không gian lưu trữ và duy trì môi trường sản xuất ổn định.
Tìm hiểu cách sử dụng eBPF để theo dõi và gỡ lỗi các trường hợp OOM Kill (Out Of Memory) trong môi trường container Docker/Kubernetes. Khám phá kernel Linux và xây dựng probe tùy chỉnh.
Apple ra mắt Containerization, framework Swift mã nguồn mở giúp chạy Linux container trên macOS siêu nhẹ, nhanh và an toàn hơn hẳn với kiến trúc mỗi container một máy ảo riêng. Tìm hiểu cách nó thay đổi cuộc chơi cho các dev!
Khám phá sự khác biệt giữa các định dạng gói ứng dụng Linux phổ biến như DEB, RPM, Flatpak, Snap và AppImage. Bài viết giải thích ưu nhược điểm, cách hoạt động của từng loại gói một cách dễ hiểu và hài hước, giúp bạn chọn đúng định dạng cho nhu cầu của mình. Tìm hiểu về sự tiện lợi, tính di động, và cách quản lý ứng dụng trên Linux.