Ở bài trước mình đã tìm hiểu về browser, cái mà người dùng sẽ tương tác hàng ngày để xem phim, đọc báo, mua sắm … vân vân và mây mây 🙂
Thế có bao giờ bạn tự hỏi những cái hình ảnh hay những văn bản kia từ đâu mà có không nhỉ. Hay việc những trang web mua sắm, thương mại điện tử làm cách nào để tính toán đơn hàng, gợi ý người dùng thích sản phẩm nào ra sao không ?
Vâng về cơ bản, tất cả những công việc đó được “một” anh gọi là xẹc vơ (Server) làm đó. Nghe tới đây chắc các bạn cũng tưởng tượng ra một hệ thống đồ sộ, dây nhợ chằng chịt các thứ, giống như các hình ảnh trên báo chí, phim ảnh rồi đúng không. Và sự thật một phần đúng là như vậy, nhưng những sự phức tạp đó hoàn toàn có thể giải thích bằng những cách đơn giản nhất. Và đối với những chiến sĩ mang danh IT như chúng ta thì việc tìm hiểu những thứ như vậy hoàn toàn không có gì là khó khăn cả.
Cùng nhau khám khá anh xẹc vơ nào. LET’S GO
Thực chất, xẹc vơ cũng chỉ là một chiếc máy tính thông thường, giống như máy tính bàn hay laptop bạn sử dụng hàng ngày mà thôi. Chẳng qua là nó được build mạnh hơn, tối ưu hơn cho nhiệm vụ của nó mà thôi. Và việc setup chiếc máy tính bàn hay laptop của bạn thành một xẹc vơ là điều hoàn toàn khả thi.
Trong bài viết này mình sẽ lấy một ví dụ cụ thể về làm website để phân tích cho các bạn dễ hình dung nhé.
Hiện tại mình đang làm việc với LAMP stack để làm website nên mình sẽ lấy ví dụ liên quan tới stack mình đang làm nhé.
(Cho những bạn nào chưa biết thì LAMP stack bao gồm : hệ điều hành dòng dõi Linux, web server Apache, hệ cơ sở dữ liệu MySql, ngôn ngữ xử lý backend PHP).
Ok, trước hết mình cần có một chiếc máy tính thông thường chưa được cài đặt gì cả (kể cả hệ điều hành). Bước đầu tiên chúng ta sẽ cần tới một hệ điều hành để xử lý các tác vụ các tác vụ cơ bản nhất (thành phần không thể thiếu). Và cái mình chọn là Ubuntu (một distro Linux), cũng là một hệ điều hành mình đang sài trên máy tính của mình. Bạn cũng có thể chọn những hệ điều hành khác tùy thích nhưng nên theo dòng dõi Linux. Tại sao lại là Linux ? mĩnh đã gặp khá nhiều người người trong lẫn ngoài ngành của mình hỏi nhũng câu hỏi liên quan tới vấn đề này. Sẵn tiện đây mình giải đáp thắt mắt luôn. Có 2 lý do chính mình chọn hệ điều hành Ubuntu (distro Linux) :
- Thứ nhất: Nó là hệ điều hành mở và miễn phí (không như windows) nên việc cài đặt và sử dụng hoàn toàn yên tâm về vấn đề bản quyền này nọ.
- Thứ hai: Nó được tối ưu để làm các tác vụ về làm xẹc vơ, website và nó cũng tương thích với các phần mềm chuyên dụng để làm một website. Nó khá nhẹ, nếu đem so sánh với windows thì nó nhẹ hơn nhiều vì windows khá nhiều thứ bên trong cũng như có giao diện (GUI) nặng nề. Mà đây là yếu rất tố quan trọng khi làm website khi mà người dùng ngày càng khó tính.
- Thứ 3: Nó đồng nhất với hệ điều hành trên máy tính cá nhân của mình, vì vậy việc setup môi trường phát triển cũng dễ dàng và đồng bộ hơn rất nhiều. Thực ra thì vấn đề này có thể giải quyết bằng các cách khác, như việc dùng công nghệ đang hot trend “docker” chẳng hạng. Nhưng theo mình nghĩ việc mình buil một sản phẩm trên một môi trường giống với môi trường thật nhất và giải quyết các lỗi phát sinh về môi trường nó sẽ tốt hơn rất nhiều. Mình sẽ tự tin hơn rất nhiều khi tự tay release một sản phẩm cho người dùng. Hơn nữa, dùng cách khác để thay thế như như docker theo mình ngĩ thì cũng khá là hay nhưng đối với mình là không cần thiết. Nó sẽ rất tốt nếu bạn là người thích vọc vạch công nghệ, làm chung với team nhiều người hoặc bạn làm nhiều dự án yêu cầu nhiều môi trường có sự khác biệt lớn.
Phù …, xong phần hệ điều hành, bộ não của xẹc vơ. Còn những cái như Apache, MySql, PHP kia là gì nhỉ ? Thực chất ra xét cho cùng nó cũng chỉ là phần mềm thôi. Và việc cài hệ điều hành xong thì việc cài các phần mềm kia không thành vấn đề nữa. Mỗi phần mềm sẽ đảm nhiệm một chức năng riêng để phối hợp làm một cái website nhé.
Mình sẽ mô tả tóm tắt nhiệm vụ từng thằng như sau:
- Thằng Web Server “Apache” : Nhiệm vụ thằng này là tiếp nhận request từ người dùng (browser), trả về cho người dùng kết quả khi đã xử lý xong.
- Thằng MySql (relational database management system ): Tiếp nhận, quản lý, tương tác, lưu trữ dữ liệu (dữ liệu ở đây chỉ là văn bản text hoặc số thôi nhé, các bạn đừng nhầm lẫn với dữ liệu âm thanh, hình ảnh).
- Thằng PHP: được gọi từ thằng web server, xử lý các tác vụ logis chính, tính toán, kết hợp với thằng MySql để lấy dữ liệu trả về cho người dùng. Đây là nơi mà các developer như mình tương tác nhiều nhất. Thực ra thì thằng PHP này không xử lý tính toán mà việc đó là do các con chíp bên trong xẹc vơ xử lý, thằng này đơn giản là có thể nói, giao tiếp với máy tính (hệ điều hành) một cách gián tiếp (Interpreter), và người phát triển website như mình cũng có thể giao tiếp với thằng PHP này theo cách dễ dàng nhất (hơn là giao tiếp trực tiếp với máy tính). Đó là cách giải thích đơn giản nhất cho thằng PHP (Scripting language). Nếu bạn muốn tìm hiểu sâu hơn cách PHP làm việc thì có thể tìm hiểu thêm.
Đó, đó là các thành phần cơ bản nhất để bạn thiết lập một con xẹc vơ làm website. Tùy vào mức độ phức tạp mà người ta có thể mở rộng hoặc kết hợp với nhiều thành phần khác, hoặc kết hợp nhiều xẹc vơ lại với nhau.
Nguồn tham khảo:
https://en.wikipedia.org/wiki/Interpreter_(computing)
https://en.wikipedia.org/wiki/LAMP_(software_bundle)