Tổng quan về LAMP/LEMP stack, phân biệt và hướng dẫn cài đặt trên server

LAMP stack là một nền tảng dùng để lưu trữ các trang web trên hệ điều hành Linux. Nó là một giải pháp linh hoạt được tạo ra bằng cách kết hợp từ 4 thành phần phần mềm khác nhau. Hãy cùng tìm hiểu sự tổng quan về LAMP/LEMP stack qua bài viết dưới đây được thực hiện bởi Bizfly Cloud.

Tổng quan về LAMP/LEMP stack

LAMP stack là gì?

LAMP là viết tắt của Linux, Apache, MySQL và PHP. Những thành phần này được sắp xếp theo các lớp tương thích với nhau, tạo thành một stack phần mềm. Các trang web và ứng dụng web chạy trên cơ sở của những stack cơ bản này.

Linux: Là lớp đầu tiên trong stack. Đây là hệ điều hành cung cấp nền tảng cho các lớp phần mềm khác.

Apache: Là lớp thứ hai, bao gồm phần mềm máy chủ web, thường là Apache Web (HTTP) Server. Lớp này nằm trên lớp Linux. Máy chủ web chịu trách nhiệm chuyển đổi yêu cầu từ trình duyệt web sang các trang web tương ứng. Apache là một phần mềm máy chủ web phổ biến nhất trên Internet. Được biết đến là một phần quan trọng trong sự phát triển ban đầu của World Wide Web.

MySQL: Là lớp thứ ba, nơi lưu trữ dữ liệu cơ sở dữ liệu. MySQL lưu trữ các chi tiết có thể được truy xuất thông qua các tập lệnh để xây dựng một trang web. MySQL thường nằm trên Linux và cùng với Apache (lớp thứ hai). Trong các cấu hình cao cấp, MySQL có thể được offload vào một máy chủ lưu trữ riêng.

PHP: Là lớp trên cùng của stack. Lớp này bao gồm PHP và / hoặc các ngôn ngữ lập trình web tương tự. Các trang web và ứng dụng web chạy trong lớp này.

Hầu hết các nhà phát triển nên biết về LAMP stack truyền thống vì nó đã được sử dụng trong lĩnh vực phát triển web trong một thời gian dài. Các công nghệ backend phổ biến như PHP và MySQL đều được hỗ trợ bởi các nhà cung cấp dịch vụ lưu trữ lớn. Vì vậy, ưu điểm lớn nhất của LAMP stack là tính bảo mật và hỗ trợ rộng rãi. Các CMS phổ biến như WordPress, Joomla, Drupal.. đều được phát triển trên nền PHP và MySQL.

Cả Apache, PHP và MySQL đều có mã nguồn mở, đó là lý do vì sao Linux là hệ điều hành cơ sở cho môi trường này. Đây cũng là môi trường đơn giản nhất để nhà phát triển làm việc trực tuyến.

LEMP stack là gì?

Các thành phần của LEMP stack tương tự với LAMP, chỉ khác là Apache sẽ được thay thế bằng nginx. Nginx được phát âm là “engine-x” và giải thích chữ “E” trong “LEPM”. Nginx cũng là một ứng dụng proxy HTTP nhưng không có sự phổ biến như Apache, tuy nhiên, nó có ưu điểm ở việc xử lý tốt hơn với khả năng chịu tải cao hơn cho các yêu cầu HTTP.

Nginx đã đạt được sự quan tâm đáng kể từ người dùng kể từ khi nó được sử dụng phổ biến từ năm 2008 và hiện đang là ứng dụng máy chủ web nổi tiếng thứ 2 sau Apache theo báo cáo từ Netcraft.

Có Thể Bạn Quan Tâm :   SA là gì? CH là gì? Nghĩa của kí hiệu SA và CH trên đồng hồ

2. Sự khác biệt giữa LEMP và LAMP Stack

Như đã đề cập, sự khác biệt cơ bản giữa LEMP và LAMP stack nằm ở 2 thành phần Apache và Nginx. Sự sử dụng của nginx và Apache sẽ tạo ra những khác biệt gì? Chúng ta sẽ so sánh riêng 2 phần mềm này để hiểu rõ hơn về sự khác biệt:

Apache:

– Apache đã được sử dụng từ lâu (khoảng từ năm 1995), có rất nhiều module đã được viết và người dùng tham gia mở rộng các chức năng của Apache.

– Phương pháp dựa trên process/thread – sẽ chậm lại khi có tải nặng, cần tạo ra các quy trình mới gây tốn nhiều bộ nhớ hơn, đồng thời cũng tạo ra các luồng mới cạnh tranh tài nguyên CPU và bộ nhớ;

– Giới hạn phải được thiết lập để đảm bảo tài nguyên không bị quá tải, khi đạt đến giới hạn, các kết nối mới sẽ bị từ chối;

– Apache có nhược điểm trong việc điều chỉnh: bộ nhớ và thời gian chờ cho các luồng bị tắc nghẽn cạnh tranh cho cùng một CPU và bộ nhớ.

Nginx:

– Là một ứng dụng máy chủ web mã nguồn mở được viết để giải quyết các vấn đề về hiệu suất và khả năng mở rộng có liên quan đến Apache.

– Phương pháp dựa trên sự kiện (event-driven), không đồng bộ và không bị chặn, không tạo các quy trình mới cho mỗi yêu cầu từ web.

– Thiết lập số lượng quy trình chạy và mỗi quy trình có thể xử lý hàng nghìn kết nối cùng lúc.

– Nginx cho phép cắm và chạy các module trong quá trình biên dịch, có trình biên dịch mã PHP tích hợp trong (không đòi hỏi module PHP).

Tóm lại, nginx chạy nhanh hơn và có khả năng xử lý tải cao hơn rất nhiều so với Apache khi sử dụng cùng phần cứng. Tuy nhiên, Apache vẫn tốt hơn nhiều khi nói đến tính năng và sẵn sàng sử dụng các module cần thiết để làm việc với các ứng dụng máy chủ backend và chạy các ngôn ngữ kịch bản lệnh. Việc lựa chọn sẽ phụ thuộc phần lớn vào những gì bạn muốn chạy trên máy chủ web của mình. Việc chạy vànginx và Apache trên cùng một máy chủ cũng có thể thực hiện được và sẽ giúp người dùng tận dụng được ưu điểm tốt nhất từ cả hai phương pháp. Ví dụ, bạn có thể chạy nginx như một reverse proxy trong khi để Apache chạy ở backend.

3. Cách triển khai LEMP/LAMP stack trên máy chủ (cách tự thực hiện)

Triển khai LEMP trên Ubuntu:

Lưu ý trước khi bạn tiến hành quy trình:

– Bạn cần có quyền truy cập root vào hệ thống hoặc là một tài khoản được cấp quyền sudo.

– Hãy xác định tên máy chủ khi khởi động.

– Cập nhật hệ thống.

Cài đặt:

– Nginx:

Bước này giúp cài đặt NGINX Mainline trên Ubuntu từ kho lưu trữ chính thức của NGINX Inc.

Mở tệp /etc/apt/sources.list bằng trình chỉnh sửa văn bản và thêm dòng sau vào cuối. Thay thế CODENAME trong ví dụ này bằng tên mã của bản phát hành Ubuntu bạn đang sử dụng. Ví dụ, đối với Ubuntu 18.04, có tên mã là Bionic Beaver, hãy thay thế bionic thay thế cho CODENAME bên dưới:

Có Thể Bạn Quan Tâm :   Làm ca xoay là gì? Điều cơ bản bạn cần biết về ca xoay và ca gãy

/etc/apt/sources.list

1

deb http://nginx.org/packages/mainline/ubuntu/ CODENAME nginx

Thêm vào khoá công khai của các gói trong kho lưu trữ và thêm vào apt:

sudo wget http://nginx.org/keys/nginx_signing.key

sudo apt-key add nginx_signing.key

Cài đặt Nginx

sudo apt update

sudo apt install nginx

Đảm bảo NGINX đang chạy và tự động khởi động khi khởi động lại:

sudo systemctl start nginx

sudo systemctl enable nginx

– MariaDB

Cài đặt máy chủ MariaDB và các công cụ hỗ trợ MySQL / MariaDB-PHP. Bạn sẽ có thể được yêu cầu đặt mật khẩu gốc trong quá trình cài đặt.

sudo apt install mariadb-server php7.0-mysql

Chạy script mysql_secure_installation:

sudo mysql_secure_installation

Nếu bạn không được yêu cầu tạo mật khẩu người dùng gốc MySQL khi cài đặt MariaDB, hãy trả lời tất cả các câu hỏi “Y” để đặt mật khẩu.

Đăng nhập vào giao diện SQL của MariaDB. Nhập mật khẩu người dùng gốc khi được nhắc.

mysql -u root -p

Tạo cơ sở dữ liệu thử nghiệm và người dùng có quyền truy cập. Thay thế “testdb” và “testuser” bằng tên phù hợp. Thay thế “password” bằng mật khẩu mạnh.

CREATE DATABASE testdb;

CREATE USER ‘testuser’ IDENTIFIED BY ‘password’;

GRANT ALL PRIVILEGES ON testdb.* TO ‘testuser’;

Quit

– PHP:

Cài đặt FastCGI PHP Processing Manager, nó cũng sẽ cài đặt các phụ thuộc cốt lõi PHP:

sudo apt install php7.0-fpm

Yêu cầu cho PHP chỉ nhận URI cho các tệp thực sự tồn tại trên máy chủ. Điều này giảm thiểu một lỗ hổng bảo mật có thể cho phép trình thông dịch PHP nhầm lẫn và cho phép thực thi mã tùy ý nếu tệp PHP được yêu cầu không tồn tại trên hệ thống tệp.

sudo sed -i ‘s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g’ /etc/php/7.0/fpm/php.ini

Đặt quyền sở hữu của cổng nghe UNIX của PHP thành “www-data” theo mặc định, nhưng chúng cần phù hợp với người dùng và nhóm NGINX đang chạy. Nếu bạn đã cài đặt Nginx từ repo NGINX như đã làm ở trên, Nginx sẽ sử dụng người dùng và nhóm nginx. Thay đổi các biến nghe trong www.conf thành:

sudo sed -i ‘s/listen.owner = www-data/listen.owner = nginx/g’ /etc/php/7.0/fpm/pool.d/www.conf

sudo sed -i ‘s/listen.group = www-data/listen.group = nginx/g’ /etc/php/7.0/fpm/pool.d/www.conf

– Đặt tệp cấu hình trang web NGINX

Tạo thư mục gốc nơi nội dung web sẽ hiển thị. Thay thế “example.com” bằng tên miền của trang web.

sudo mkdir -p /var/www/example.com/

Tắt tệp cấu hình mặc định được cung cấp làm ví dụ với gói. Nếu bạn không sử dụng, bạn có thể xóa nó.

Các tệp cấu hình trang web phải được đặt trong thư mục /etc/nginx/conf.d/. Tạo tệp cấu hình cho trang web của bạn. Một lần nữa thay thế “example.com” bằng tên miền của trang web.

/etc/nginx/conf.d/example.com.conf

– Test LEMP stack

Khởi động lại PHP và tải lại cấu hình NGINX

sudo systemctl restart php7.0-fpm

sudo nginx -s reload

Tạo một trang test để xác minh NGINX có thể hiển thị PHP và kết nối với cơ sở dữ liệu MySQL không. Thay thế “testuser” và “password” bằng thông tin đăng nhập MySQL bạn đã tạo ở trên.

/var/www/example.com/test.php

Truy cập vào đường dẫn http://example.com/test.php trên trình duyệt web. Bạn sẽ nhận được thông báo “You have connected successfully” nếu kết nối thành công. Nếu gặp thông báo lỗi hoặc trang không tải, hãy kiểm tra lại cấu hình.

Xóa tệp test khi xác minh xong stack để đảm bảo hệ thống hoạt động chính xác.

Có Thể Bạn Quan Tâm :   Tìm Hiểu Mì Ramen Là Gì Và Các Loại Ramen Phổ Biến Trong Ẩm Thực Nhật Bản

sudo rm /var/www/example.com/test.php

Triển khai LAMP trên Ubuntu:

– Linux:

Bước này giả định rằng bạn đã cài đặt Ubuntu trên máy tính của bạn. Sau khi đã thiết lập và chạy Ubuntu, bạn cần đảm bảo rằng mọi thứ trên hệ thống đang ổn định. Để làm điều đó, hãy mở terminal và nhập lệnh sau:

sudo apt-get update

Kết quả sẽ như sau:

sudo apt-get upgrade

Lưu ý: Bạn cần xác nhận bằng cách gõ “yes” khi chạy lệnh “upgrade”.

Lệnh đầu tiên sẽ cập nhật danh sách gói và phiên bản của chúng trên máy tính của bạn mà không cần cài đặt chúng. Lệnh thứ hai sẽ cài đặt các gói. Bạn nên chạy lệnh update trước và sau đó mới là upgrade.

– Cài đặt Apache

Để cài đặt Apache, nhập lệnh sau vào Terminal:

sudo apt-get install apache2

– Cài đặt Dependencies

Một bước bổ sung mà bạn cần thực hiện là cài đặt một công cụ có tên mod_wsgi, để đảm bảo Apache và Python hoạt động cùng nhau một cách trơn tru. Bạn cũng cần cài đặt gói hỗ trợ có tên là python-setuptools.

Để cài đặt tool và công cụ hỗ trợ, nhập lệnh sau vào Terminal:

sudo apt-get install python-setuptools libapache2-mod-wsgi

Bạn cần khởi động lại máy chủ Apache để tải mod_wsgi:

sudo service apache2 restart

– Cài đặt MySQL

Để cài đặt MySQL, nhập thông tin sau vào Terminal:

sudo apt-get install mysql-server

Trong quá trình cài đặt MySQL, bạn sẽ được nhắc nhập mật khẩu gốc. Đây là mật khẩu bạn sẽ sử dụng để cài đặt MySQL. Bạn có thể chọn nhập mật khẩu ngay lúc này hoặc để sau cũng được.

Sau khi cài đặt hoàn tất, MySQL sẽ tự động khởi động. Để đăng nhập vào máy chủ, sử dụng lệnh sau (bạn sẽ được nhắc nhập mật khẩu gốc):

mysql -u root -p

Từ đây, bạn có thể bắt đầu sử dụng MySQL, đặt cơ sở dữ liệu và người dùng mới.

– Cài đặt Python

Bước cuối cùng là cài đặt Python. Vì bạn đã chọn Ubuntu làm hệ điều hành, Python đã được cài đặt tự động. Nếu bạn muốn xác định phiên bản Python hiện tại, bạn chỉ cần nhập lệnh sau vào Terminal:

Python

4. Triển khai LEMP/LAMP stack tự động:

Với các bước triển khai cơ bản như đã mô tả ở trên, bạn có thể thiết lập LEMP/LAMP stack trên máy chủ của mình để sử dụng. Tuy nhiên, quá trình cài đặt này thường khá phức tạp, tốn thời gian và có thể gặp lỗi. Việc tìm và sửa lỗi trong những trường hợp như vậy đòi hỏi rất nhiều thời gian và công sức của người dùng.

Tuy nhiên, có một phương pháp đơn giản hơn rất nhiều để cài đặt LAMP/LEMP stack chỉ trong một bước. Với tính năng Pre-built Apps hỗ trợ trong sản phẩm Cloud server của BizFly Cloud, người dùng có thể cài đặt LAMP/LEMP stack một cách đơn giản chỉ bằng một cú nhấp chuột.

Nếu bạn đang sử dụng Cloud server của BizFly Cloud, bạn có thể sử dụng Pre-built Apps hoàn toàn miễn phí, đây là phần mềm DUY NHẤT tại Việt Nam cho phép cài đặt và triển khai ứng dụng tự động trực tiếp trên máy chủ.

Theo chia sẻ từ Bizfly Cloud

>> Có thể bạn quan tâm: Tổng quan về Pre-built Applications của BizFly Cloud là gì?

Back to top button