Series Quản trị server cơ bản - Khái niệm cơ bản

Series Quản trị server cơ bản - Khái niệm cơ bản

Bài viết trong chủ đề này:
  1. Series Quản trị server cơ bản - Khái niệm cơ bản
Tin ngắn hàng ngày dành cho bạn
  • Hơn 1 tuần nay mình không đăng bài, không phải không có gì để viết mà đang tìm cách để phân phối nội dung có giá trị hơn trong thời đại AI đang bùng nổ mạnh mẽ như thế này.

    Như từ hồi đầu năm đã chia sẻ, số lượng người truy cập vào trang blog của mình đang dần ít đi. Khi xem thống kê, lượng người dùng trong 6 tháng đầu năm 2025 đã giảm 30% so với cùng kì năm ngoái, 15% so với 6 tháng cuối năm 2024. Như vậy một sự thật là người dùng đang rời bỏ dần đi. Nguyên nhân do đâu?

    Mình nghĩ lý do lớn nhất là thói quen của người dùng đã thay đổi. Họ tìm thấy blog chủ yếu qua các công cụ tìm kiếm, trong đó lớn nhất là Google. Gần 1/2 số lượng người dùng quay trở lại blog mà không cần thông qua bước tìm kiếm. Đó là một tín hiệu đáng mừng nhưng vẫn không đủ để tăng lượng người dùng mới. Chưa kể giờ đây, Google đã ra mắt tính năng AI Search Labs - tức là AI hiển thị luôn nội dung tổng hợp khi người dùng tìm kiếm, điều đó càng khiến cho khả năng người dùng truy cập vào trang web thấp hơn. Một điều thú vị là khi Search Labs được giới thiệu, thì các bài viết bằng tiếng Anh đã soán ngôi trong bảng xếp hạng truy cập nhiều nhất.

    Một bài viết của mình thường rất dài, có khi lên đến cả 2000 chữ. Mà để viết ra được một bài như thế tốn nhiều thời gian. Nhiều bài viết ra chẳng có ai đọc là điều bình thường. Mình biết và chấp nhận vì không phải ai cũng gặp phải vấn đề đang nói đến. Viết đối với mình như một cách để rèn luyện sự kiên nhẫn và cả tư duy. Viết ra mà giúp được cả ai đó là một điều tuyệt vời.

    Vậy nên mình đang nghĩ sẽ tập trung vào nội dung ngắn và trung bình để viết được nhiều hơn. Nội dung dài chỉ khi muốn viết chi tiết hoặc đi sâu về một chủ đề nào đó. Nên là đang tìm cách thiết kế lại trang blog. Mọi người cùng chờ nha 😄

    » Xem thêm
  • CloudFlare đã giới thiệu tính năng pay per crawl để tính phí cho mỗi lần AI "cào" dữ liệu trên trang web của bạn. Là sao ta 🤔?

    Mục đích của SEO là giúp các công cụ tìm kiếm nhìn thấy trang web. Khi người dùng tìm kiếm nội dung mà có liên quan thì nó hiển thị trang web của bạn ra kết quả tìm kiếm. Điều này gần như là đôi bên cùng có lợi khi Google giúp nhiều người biết đến trang web hơn, còn Google thì được nhiều người dùng hơn.

    Bây giờ cuộc chơi với các AI Agents thì lại khác. AI Agents phải chủ động đi tìm kiếm nguồn thông tin và tiện thể "cào" luôn dữ liệu của bạn về, rồi xào nấu hay làm gì đó mà chúng ta cũng chẳng thể biết được. Vậy đây gần như là cuộc chơi chỉ mang lại lợi ích cho 1 bên 🤔!?

    Nước đi của CloudFlare là bắt AI Agents phải trả tiền cho mỗi lần lấy dữ liệu từ trang web của bạn. Nếu không trả tiền thì tôi không cho ông đọc dữ liệu của tôi. Kiểu vậy. Hãy chờ thêm một thời gian nữa xem sao 🤓.

    » Xem thêm
  • Lúc khái niệm "Vibe Code" bùng nổ mình cũng tò và tìm hiểu xem nó là gì. Hoá ra là chỉ cách lập trình mới: Lập trình viên ra lệnh và để cho LLM tự viết mã. Sau đó là hàng loạt các bài viết nói về cách họ đã xây dựng ứng dụng mà không cần phải viết một dòng mã nào, hoặc 100% là do AI viết...

    Mình không có ý kiến gì vì mỗi người một sở thích. Nhưng nếu tiếp xúc với nhiều thông tin như vậy thì ít nhiều thế hệ lập trình viên mới sẽ "ám ảnh". Khi làm việc với ngôn ngữ lập trình, chúng ta đang tiếp xúc ở bề nổi rồi. Đằng sau đó còn nhiều lớp khác che giấu sự phức tạp. Ví dụ biết viết JavaScript nhưng có biết nó chạy như thế nào không 🤔? Trên thực tế bạn chẳng cần phải biết nó chạy như thế nào mà chỉ cần biết cú pháp là viết được chương trình chạy ngon ơ.

    LLMs giờ đây lại thêm một lớp ảo hoá cho việc viết mã. Tức là nơi chúng ta không cần trực tiếp viết mà là ra lệnh. Làm việc sẽ nhanh hơn nhưng khi gặp vấn đề thì nhiều khả năng phải vận dụng kiến thức của tầng thấp hơn để giải quyết.

    Mình dùng Cursor, nhưng tính năng thích nhất và dùng nhiều nhất là Autocomplete & Suggestions. Thi thoảng cũng dùng Agents để bảo nó viết tiếp đoạn mã đang dở, thường thì nó làm rất tốt. Hoặc khi gặp lỗi thì hỏi, có lúc giải quyết được, lúc thì không. Nhìn chung nó đang làm thay nhiệm vụ của Google & Stack Overflow, giúp tiết kiệm thời gian 😆

    LLMs như một cuốn bách khoa toàn thư rất khủng khiếp. Hỏi gì cũng biết, cũng trả lời được nhưng có một sự thật là nó chỉ là mô hình đoán chữ (đoán tokens). Thế nên nếu vấn đề phổ biến thì nó sẽ làm rất tốt, nhưng vấn đề ít phổ biến hơn thì nó lại rất tệ, hoặc thậm chí là đưa ra thông tin sai lệch, nhiễu... Tóm lại, cần phải biết cách khai thác thông tin, mà để biết thì buộc người dùng phải có một lượng kiến thức nhất định, tránh rơi vào cái bẫy thiên kiến uy quyền (tin tưởng tuyệt đối vào ai đó) hoặc thiên kiến xác nhận (xác nhận niềm tin sẵn có bằng cách chỉ tìm bằng chứng xác nhận niềm tin đó).

    Tại thấy bài viết này nên lại nổi hứng viết vài dòng 🤓 Why I'm Dialing Back My LLM Usage

    » Xem thêm

Vấn đề

Khi nói về quản trị máy chủ, có rất nhiều kiến thức cần bàn đến. Bản thân tôi chỉ đang dừng lại ở mức độ cơ bản nhất có thể, nghĩa là có thể sử dụng máy chủ, cài đặt phần mềm và triển khai cho mình một vài stacks nho nhỏ cũng như khả năng khắc phục sự cố trong quá trình vận hành.

Ngay từ những ngày đầu tiên bước chân vào giới lập trình, không ai có nhiều thời gian để dạy cho mình biết tường tận mọi thứ. Tuy nhiên đôi khi chỉ là những gợi ý hoặc một con đường được vạch ra từ ai đó, để rồi từng bước tiến lên lại là tiền đề quan trọng, giúp cho chúng ta trên hành trình tự học.

Nhiều lập trình viên, họ quan tâm đến việc viết mã hơn là thiết lập một môi trường vững chắc cho việc chạy mã của họ. Nếu bạn là một lập trình viên web, có thể viết ra được rất nhiều ứng dụng hữu ích nhưng lại đang loay hoay với việc làm thế nào để tự mình triển khai, vận hành nó thì series bài viết này là dành cho bạn.

Tôi sẽ đi từ những khái niệm cơ bản cho đến khi triển khai được ứng dụng lên máy chủ. Tất cả đều là kinh nghiệm cá nhân của tôi, cho nên nếu có sai sót hoặc chỗ nào chưa hợp lý, hy vọng bạn đọc sẽ phản hồi mang tính xây dựng. Hơn nữa, mọi câu hỏi đều được hoan nghênh, nếu trong phạm vi hiểu biết, tôi sẽ giải đáp, ngược lại, hy vọng ai đó sẽ trả lời cho các bạn.

Được rồi! Hãy đến với bài viết đầu tiên ngay bây giờ nhé.

Server là gì?

Server là một máy tính hoặc hệ thống chịu trách nhiệm cung cấp dịch vụ, lưu trữ dữ liệu và xử lý yêu cầu từ các máy tính khác trong mạng, thường được sử dụng để phục vụ các ứng dụng web, email, hoặc lưu trữ dữ liệu.

Như vậy server cũng chỉ là một chiếc máy tính, có kết nối mạng LAN hoặc Internet và được sử dụng để phục vụ các dịch vụ nào đó. Chúng ta thường nghe nhắc đến máy chủ web, máy chủ API, máy chủ cơ sở dữ liệu… tất cả chúng đều gợi nhớ đến dịch vụ mà máy chủ đó đang cung cấp là gì.

Quản trị server là gì?

Quản trị server là tập hợp của một chuỗi công việc cần thiết để đảm bảo, duy trì server hoạt động liên tục và ổn định. Điều này bao gồm các hoạt động như:

  • Cài đặt và cấu hình server.
  • Bảo mật server.
  • Quản lý dịch vụ, tiến trình.
  • Sao lưu và khôi phục dữ liệu.
  • Theo dõi hiệu suất.
  • Phát hiện, ngăn chặn và khắc phục sự cố.
  • Nâng cấp và mở rộng.
  • Thực hiện các nhiệm vụ định kỳ.

Đi kèm theo đó là rất nhiều kinh nghiệm được tích lũy trong quá trình vận hành máy chủ.

Làm thế nào để có một server?

Nhiều người nghĩ rằng server phải nằm tập trung ở một vị trí nào đó hoặc phải là tập hợp của rất nhiều máy tính có phần cứng "khủng", cùng vô số sợi dây cáp mạng hấp háy ánh đèn vàng chi chít. Điều này là đúng, tuy nhiên công nghệ ngày càng phát triển, giờ đây chúng ta không cần phải tốn nhiều thời gian, công sức cũng như tiền bạc để đầu tư vào những thứ đó nữa mà rất đơn giản là…đi thuê.

Trước đây, server vật lý được ưa chuộng đơn giản vì công nghệ "Cloud" chưa phát triển như bây giờ. Hơn nữa, việc tự xây dựng máy chủ đảm bảo được vấn đề bảo mật thông tin và khả năng quản lý tất cả mọi thứ mà không chia sẻ thông tin với nhà cung cấp dịch vụ nào cả. Nhưng giờ đây, với sự tham gia của các ông lớn công nghệ vào lĩnh vực "Cloud" đang dần làm thay đổi suy nghĩ của mỗi người vì những lợi ích mà nó mang lại, đồng thời giảm được chi phí quản lý cũng như vận hành máy chủ.

Vì vậy, ngoài cách tự "build" cho mình một máy chủ vật lý, chúng ta chỉ cần trả một khoản tiền để đi thuê. Hiện nay có rất nhiều nhà cung cấp dịch vụ này, giá cả cũng rất đa dạng tùy thuộc vào mục đích sử dụng.

Lấy ví dụ, chỉ mất khoảng 5-6$/tháng là chúng ta đã có một Shared VPS 1CPU/1GB Ram/20-30GB SSD. Từ "Shared" là để chỉ việc chia sẻ tài nguyên, có nghĩa là: mặc dù tốc độ CPU bạn thuê trên giấy tờ là ~2.4GHz nhưng trên thực tế, con số này khó đạt được vì CPU đó được chia sẻ cho cả người dùng khác thuê Shared VPS như bạn. Chính vì thế, giá thành của chúng rẻ hơn. Ngược lại với "Shared" là "Dedicated", nghĩa là bạn bỏ tiền ra thuê nguyên một máy chủ vật lý, không chia sẻ tài nguyên với ai, điều đó cũng đồng nghĩa với chi phí tăng lên đáng kể.

Đăng nhập vào server

Ba thông số cần thiết để đăng nhập vào máy chủ là tên đăng nhập, mật khẩu và địa chỉ máy chủ. Hầu hết máy chủ đều hỗ trợ giao thức SSH, sử dụng lệnh ssh để truy cập vào máy chủ của bạn. Giả sử thông số đăng nhập nhà cung cấp gửi cho tôi có tên đăng nhập là hoaitx, mật khẩu là xxx, IP máy chủ là 12.34.56.789. Mở ứng dụng Terminal lên nếu bạn sử dụng Linux hoặc MacOS, trên Windows bạn có thể sử dụng cmd.exe hoặc PowerShell.

$ ssh [email protected]

Nhập mật khẩu và nhấn "Enter", nếu đăng nhập thành công, màn hình sẽ hiển thị thông tin đăng nhập thành công vào máy chủ.

Nhiều nhà cung cấp không cho thông số mật khẩu hoặc địa chỉ IP của server, thay vào đó họ yêu cầu chúng ta nhập vào khóa ssh key và một tên miền đăng nhập kì lạ như a-bc.xyz.nmt, thì đây cũng là cách mà họ tăng cường tính bảo mật hơn. Chúng ta vẫn sử dụng ssh để đăng nhập như bình thường.

Xem thông số cấu hình và quản lý tiến trình

Cấu hình là một trong những thứ quan trọng của máy tính, server cũng vậy, cấu hình càng cao, server của bạn sẽ càng khỏe và làm được nhiều thứ. Nếu như trên máy tính, chúng ta có thể bấm vào cài đặt để xem chi tiết cấu hình thì đối với server, mọi thứ cần được xem và giao tiếp qua lệnh. Vì thế bạn cần học cách sử dụng thành thạo một số lệnh cơ bản.

Đôi lúc, chúng ta không cần phải nhớ hết lệnh, hãy dành thời gian để phát triển khả năng tìm kiếm hoặc ghi nhớ một vài công cụ ưa thích.

Để xem thông số tổng quát của máy chủ như CPU, RAM, Disk… có thể sử dụng câu lệnh lshw.

$ sudo lshw | less

CPU

Có thể thấy tên, tốc độ và một số thông tin khác về CPU.

RAM

RAM 1GB và có xung nhịp 2933MHz.

Sử dụng lệnh df để xem thông tin ổ cứng:

$ df -h

Disk

Có 3 ổ chính là /dev/root dung lượng 7.6GB, phân vùng boot /dev/nvme0n1p15 105MB và thêm một phân vùng /dev/nvme1n1 22GB.

Giống như máy tính, server cũng có hàng loạt các tiến trình (process) đang chạy, để xem chúng, hãy sử dụng top hoặc htop.

$ htop

htop

Tại đây chúng ta thấy % CPU sử dụng ở các ô 0 và 1, lượng RAM đang sử dụng và danh sách các tiến trình cũng như tài nguyên mà chúng chiếm giữ.

Để biết cách đọc thông số cũng như các sử dụng lệnh htop, bạn đọc tham khảo thêm bài viết Understanding Output of htop Command.

Xem cấu hình port

Một ứng dụng, đôi khi cần mở port để giao tiếp với thế giới bên ngoài. Hãy tưởng tượng nếu như không mở port, ứng dụng của bạn gần như bị cô lập. Vì thế việc mở port là yếu tố cần thiết để ứng dụng của bạn có khả năng giao tiếp.

Ví dụ, bạn xây dựng một máy chủ API, bạn muốn máy chủ nginx kết nối được đến nó, thì việc mở port từ máy chủ API là điều cần thiết.

Để xem danh sách các port đang mở cũng như tên của ứng dụng đang sở hữu, có thể sử dụng lệnh lsof.

$ sudo lsof -i -P -n | grep LISTEN

lsof

Ví dụ ta thấy sshd đang giao tiếp trên port 22, dockerd đang mở 4 port… Để biết tại sao ứng dụng lại mở port, bạn đọc có thể tìm kiếm trong tài liệu của chúng. Chung quy, việc mở port nhằm một mục đích giao tiếp nào đó và đôi khi việc mở port cũng gây ra vấn đề rủi ro bảo mật.

Server cũng chỉ là một máy tính có cài sẵn hệ điều hành

Đúng vậy, nhưng khác với máy tính cá nhân, server thường được tối ưu hơn rất nhiều để phục vụ cho nhiều thiết bị hay người dùng khác. Server thường có cấu hình và phần cứng mạnh mẽ, bền bỉ, có mạng tốc độ cao và độ tin cậy cũng như khả năng bảo mật được ưu tiên hàng đầu.

Các hệ điều hành cũng được tối ưu cho server, loại bỏ bớt các tính năng cá nhân, tập trung vào tính ổn định và khả năng bảo mật. Chúng ta nghe nhiều đến cái tên như Ubuntu Server, Debian, CentOS Server, Red Hat… chúng đều được sử dụng phổ biến và có tính năng cũng như độ tin cậy khác nhau, tùy thuộc vào trường hợp mà sử dụng.

Để giảm bớt tài nguyên sử dụng cho nên nhiều hệ điều hành cho server đã loại bỏ phần GUI (giao diện hiển thị), thay vào đó tập trung phát triển lệnh để qua đó giúp cho chúng ta vận hành máy chủ tốt hơn.

Cao cấp
Hello

5 bài học sâu sắc

Mỗi sản phẩm đi kèm với những câu chuyện. Thành công của người khác là nguồn cảm hứng cho nhiều người theo sau. 5 bài học rút ra được đã thay đổi con người tôi mãi mãi. Còn bạn? Hãy bấm vào ngay!

Mỗi sản phẩm đi kèm với những câu chuyện. Thành công của người khác là nguồn cảm hứng cho nhiều người theo sau. 5 bài học rút ra được đã thay đổi con người tôi mãi mãi. Còn bạn? Hãy bấm vào ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (2)

Nội dung bình luận...
Avatar
Wiliam Sama1 năm trước

Blog mình viết dùng framework gì thế ạ?

Trả lời
Avatar
Xuân Hoài Tống1 năm trước

FE bằng nuxt.js và BE bằng JavaScript bạn nhé, tham khảo bài viết này để biết hơn về stacks của mình: https://2coffee.dev/bai-viet/hoan-tat-chuyen-doi-blog-thanh-web-is-on-the-edge

Avatar
Wiliam Sama1 năm trước

ádfádfádf ádf ádf

Trả lời