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

2292
20-08-2018
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à nền tảng của các hosting website sử dụng chủ yếu Linux. LAMP stack là giải pháp máy chủ linh hoạt, được kết hợp từ 4 lớp giải pháp phần mềm riêng lẻ. Hãy cùng Bizfly Cloud  tìm hiểu tổng quan về  LAMP/LEMP stack thông qua bài viết dưới đây.

Tổng quan về LAMP/LEMP stack

LAMP stack là gì?

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

Linux: là lớp đầu tiên trong stack. Hệ điều hành này là cơ sở nền tảng cho các lớp phần mềm khác.

Apache: Lớp thứ hai bao gồm phần mềm web server, thường là Apache Web (HTTP) Server. Lớp này nằm trên lớp Linux. Web server chịu trách nhiệm chuyển đổi các web browser sang các website chính xác của chúng. Apache đã (và vẫn) là ứng dụng web server phổ biến nhất trên public Internet hiện nay. Trên thực tế, Apache được ghi nhận là đóng một vai trò quan trọng trong sự phát triển ban đầu của World Wide Web.

MySQL: Lớp thứ ba là nơi cơ sở dữ liệu database được lưu trữ. MySQL lưu trữ các chi tiết có thể được truy vấn bằng script để xây dựng một website. MySQL thường nằm trên Linux và cùng với Apache / lớp 2. Trong cấu hình highend, MySQL có thể được off load xuống 1 máy chủ lưu trữ riêng biệt.

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

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

Hầu hết các Developer nên biết về LAMP stack truyền thống vì nó đã được sử dụng làm web từ rất lâu rồi. Tất cả các công nghệ backend như PHP và Mysql đều rất phổ biến và được hỗ trợ bởi các nhà cung cấp hosting lớn. Do đó, ưu điểm lớn nhất của LAMP stack là bảo mật và sự hỗ trợ rộng rãi. Các CMS phổ biến nhất 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 tại sao Linux là lớp nền tảng cho môi trường này. Đây cũng là môi trường đơn giản nhất để các developer làm web trực tuyến.

LEMP stack là gì?

Các thành phần cấu thành LEMP stack cũng gần tương tự với LAMP, chỉ khác là Apache sẽ được thay thế bởi nginx. Nginx được đọc là "engine-x", giải thích cho chữ E trong "LEPM", nginx cũng là một ứng dụng HTTP proxy nhưng không có được danh tiếng ấn tượng như Apache, tuy nhiên, nó có ưu điểm là cho phép xử lý tốc độ tải cao hơn đối với các HTTP request.

Nginx giờ đây, đã đạt được sự thu hút đáng kể đối với người dùng khi nó bắt đầu được nhiều người sử dụng từ năm 2008 và hiện trở thành ứng dụng web server tiếng tăm thứ 2 sau Apache khi đề cập các active site theo báo cáo của Netcraft.

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

2. Phân biệt LEMP và LAMP Stack

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

Apache:

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

- Phương pháp process/thread-oriented – sẽ bắt đầu chậm lại khi xuất hiện tải nặng, cần tạo ra các quy trình mới dẫn đến tiêu thụ nhiều RAM hơn, bên cạnh đó, cũng tạo ra các thread mới cạnh tranh các tài nguyên CPU và RAM;

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

- Yếu tố hạn chế trong điều chỉnh Apache: bộ nhớ và thế vị cho các dead-locked threads cạnh tranh cho cùng một CPU và bộ nhớ.

Nginx:

- Ứng dụng web server 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 Event-driven, không đồng bộ và không bị chặn, không tạo các process mới cho mỗi request từ web.

- Đặt số lượng cho các worker process và mỗi worker có thể xử lý hàng nghìn kết nối đồng thời

- Các module sẽ được chèn vào trong thời gian biên dịch, có trình biên dịch mã PHP bên trong (không cần đến module PHP).

Để kết luận thì nginx nhanh hơn và có khả năng xử lý tải cao hơn nhiều so với Apache khi sử dụng cùng một bộ phần cứng. Tuy nhiên, Apache vẫn là tốt hơn nhiều khi nói đến chức năng và tính sẵn sàng của các module cần thiết để làm việc với các ứng dụng máy chủ back-end và chạy các ngôn ngữ kịch bản lệnh. Vậy nên 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 web server của mình. Việc chạy cả Apache và nginx trên cùng một máy chủ vẫn có khả năng thực hiện được, và nó sẽ giúp người dùng có được lợi ích tốt nhất từ cả 2 phương pháp. Ví dụ, bạn có thể chạy nginx như reverse proxy trong khi để Apache chạy trong back-end.

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

3. Cách thức triển khai LEMP/LAMP trên server (tự build)

Triển khai LEMP trên Ubuntu:

Lưu ý trước khi bạn thực hiện quy trình

- Bạn sẽ cần quyền truy cập root vào hệ thống hoặc tài khoản người dùng cấp quyền sudo.

- Khởi động hostname trên hệ thống

- Update hệ thống

Cài đặt:

- Nginx:

Các bước này giúp cài đặt NGINX Mainline trên Ubuntu từ repository chính thức của NGINX Inc.

Mở /etc/apt/sources.list trong text editor 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 sử dụng. Ví dụ, đối với Ubuntu 18.04, có tên Bionic Beaver, chèn bionic vào vị trí của CODENAME bên dưới:

/etc/apt/sources.list

1

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

Import các package signing key trong repository 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à sẽ tự động bật khi khởi động lại:

sudo systemctl start nginx

sudo systemctl enable nginx

- MariaDB

Cài đặt MariaDB server và các hỗ trợ MySQL / MariaDB-PHP. Bạn có thể sẽ được nhắc phải đặt mật khẩu gốc trong khi cài đặt.

sudo apt install mariadb-server php7.0-mysql

Chạymysql_secure_installation script:

sudo mysql_secure_installation

Nếu bạn không được nhắc tạo mật khẩu người dùng gốc MySQL khi cài đặt MariaDB, hãy trả lời tập lệnh Y để đặt mật khẩu.

Trả lời Y với các lời nhắc sau:

Remove anonymous users?

Disallow root login remotely?

Remove test database and access to it?

Reload privilege tables now?

Đăng nhập vào shell 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 test database và người dùng có quyền truy cập. Thay thế testdb và testuser bằng các tên thích hợp. Thay thế mật khẩu bằng một 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ó sẽ mang lại các dependencies PHP cốt lõi:

sudo apt install php7.0-fpm

Yêu cầu PHP chỉ chấp nhận URI cho các tệp thực sự tồn tại trên server. Điều này giảm thiểu một lỗ hổng bảo mật trong đó trình biên dịch PHP có thể 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 có trong 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

Quyền sở hữu ổ cắm listen UNIX của PHP được đặt thành www-data theo mặc định, nhưng chúng cần khớp với người dùng và nhóm NGINX đang chạy. Nếu bạn đã cài đặt NGINX từ NGINX reposity như đã làm ở trên, NGINX sẽ sử dụng nginx user và nhóm nginx. Thay đổi các biến listen 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 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 website.

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

Tắt cấu hình trang mặc định dùng làm ví dụ được cho cùng với package. Trong trường hợp không sử dụng, bạn có thể delete.

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

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

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

 - Test LEMP stack

Restart PHP và tải lại cấu hình NGINX- Test LEMP stack

sudo systemctl restart php7.0-fpm

sudo nginx -s reload

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

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

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

Truy cập http://example.com/test.php trên trình duyệt web. Sẽ có thông báo hiển thị như sau: "You have connected successfully" có nghĩa là bạn đã kết nối thành công. Nếu thấy thông báo lỗi hoặc trang không tải được, kiểm tra lại cấu hình.

Xóa test file khi stack đã xác minh xong để hệ thống hoạt động chính xác.

sudo rm /var/www/example.com/test.phpsudo apt-get update

Triển khai LAMP trên Ubuntu:

- Linux:

Quy trình này giả định rằng Ubuntu đã được cài đặt trên máy của bạn. Sau khi đã thiết lập và chạy Ubuntu, bạn sẽ muốn đảm bảo rằng mọi thứ trên hệ thống đều trong trạng thái hiện hành. Để thực hiện, hãy mở terminal và nhập vào các lệnh sau:

sudo apt-get update

Kết quả sẽ trông giống như cửa sổ dưới đây. Chú ý rằng cửa sổ này và các cửa sổ tiếp sau sẽ cho thấy kết thúc khi hoàn thành mỗi dòng lệnh, và đây chỉ là một minh họa trong số đó.

sudo apt-get upgrade

Lưu ý: Bạn sẽ phải gõ xác nhận "yes" khi chạy lệnh "upgrade".

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

- Cài đặt Apache

Để cài đặt Apache, gõ 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 để đảm bảo rằng Apache và Python kết hợp nhau một cách nhịp nhàng: cài đặt tool có tên là mod_wsgi. Đây là một tool miễn phí để phục vụ các ứng dụng Python từ Apache. Bạn cũng sẽ cần cài đặt gói trợ giúp có tên là python-setuptools.

Để cài đặt tool và trình trợ giúp, gõ lệnh sau vào Terminal:

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

Bạn sẽ cần phải khởi động lại Apache server để tải mod_wsgi:

sudo service apache2 restart

- Cài đặt MySQL

Để cài đặt MySQL, hãy 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 để đặt 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 để thiết lập luôn, hoặc để sau cũng được.

Sau khi hoàn tất cài đặt, MySQL sẽ tự động khởi động. Để đăng nhập vào server, 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, thiết lập 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ì lựa chọn hệ điều hành Ubuntu, ta sẽ có Python được cài đặt một cách tự động. Nếu bạn muốn biết phiên bản nào hiện đang được cài đặt, chỉ cần gõ lệnh này vào Terminal:

Python

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

Với các bước triển khai cơ bản trên, bạn hoàn toàn có thể thiết lập một LEMP/LAMP stack trên server của mình để sử dụng. Tuy nhiên, quá trình cài đặt này cũng thường khá phức tạp, tốn nhiều thời gian và hay xảy ra lỗi. Sẽ mất khá nhiều thời gian, công sức để người dùng tìm và fix lỗi trong những trường hợp như thế này.

Tin mừng là có một cách đơ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 bổ trợ Pre-build Apps trong sản phẩm Cloud server của BizFly Cloud, cài đặt LAMP/LEMP stack giờ đây vô cùng đơn giản chỉ với một cú click.

Nếu bạn đã sử dụng Cloud server do BizFly Cloud cung cấp, bạn sẽ được sử dụng Pre-build Apps hoàn toàn miễn phí, phần mềm DUY NHẤT tại Việt Nam cho phép cài đặt, triển khai ứng dụng tự động trực tiếp trên server.

Theo Bizfly Cloud chia sẻ

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

Kể từ ngày 05/11/2018, VCCloud chính thức đổi tên thành BizFly Cloud - là nhà cung cấp các dịch vụ đám mây hàng đầu tại Việt Nam hiện nay với các dịch vụ nổi bật như: BizFly Cloud Server, BizFly CDN, BizFly Load Balancer, BizFly Pre-built Application, BizFly Business Mail, BizFly Simple Storage. Hãy tăng tốc thích nghi cho doanh nghiệp cùng các giải pháp công nghệ của BizFly Cloud tại đây.
SHARE