LAMP là gì? Hướng dẫn cài đặt LAMP trên CentOS 7 chi tiết

LAMP là một hệ thống các phần mềm xây dựng lên môi trường máy chủ web trên Linux. Cùng tìm hiểu cách cài đặt LAMP trên CentOS 7 ngay sau đây nhé.

L.A.M.P là một hệ thống các phần mềm được xây dựng để tạo dựng nên môi trường máy chủ web trên Linux. Bài viết sẽ tìm hiểu chi tiết LAMP là gì và hướng dẫn cách cài đặt LAMP trên CentOS 7. Tìm hiểu chi tiết ngay dưới đây nhé.

1. LAMP là gì ?

Trước khi thực hiện cài đặt LAMP trên CentOS 7, bạn cần hiểu rõ LAMP là gì? LAMP hay L.A.M.P là chữ viết tắt của Linux, Apache, MySQL(hay MariaDB), PHP(cũng có thể là Python, hoặc là Perl). Mỗi trong số đó đều là các gói phần mềm riêng lẻ, được kết hợp để tạo thành một máy chủ web linh hoạt. Các thành phần đượ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. Dưới đây, chúng ta cùng đi tìm hiểu các thành phần của LAMP.

Hình 1.1 - L.A.M.P

1.1 Linux

Đây là lớp đầu tiên trong stack - Lớp hệ điều hành. Đây chính là cơ sở làm nền tảng cho các lớp phần mềm khác hoạt động. Linux là một hệ điều hành tự do phát triển (mã nguồn mở). Nó đặc biệt được dùng để quản lý, điều phối các tài nguyên (resource) của hệ thống (bao gồm cả các phần cứng và phần mềm khác nữa).

Hình 1.2 - Hệ điều hành Linux

1.2 Apache

Đóng vai trò là một phần mềm Web Server lớp thứ hai thường là Apache Web (HTTP) Server. Lớp này nằm trên lớp Linux. Web Server sẽ chịu trách nhiệm cho việc chuyển đổi từ các web browser sang các website chính xác của chúng. Đây chính là phần mềm máy chủ web phổ biến nhất trên mạng với độ an toàn, nhanh chóng, và đáng tin cậy. Bạn có thể tùy chỉnh Apache để nó có thể hỗ trợ các ngôn ngữ web khác như PHP, CGI/Perl, SSL, SSI, ePerl và thậm chí kể cả ASP nữa.

>>> Xem thêm: Apache là gì? Kiến thức cho người mới tìm hiểu về Apache

Hình 1.3 - Apache WebServer

1.3 MySQL

Lớp thứ ba chính là nơi các cơ sở dữ liệu database được lưu trữ. MySQL sẽ lưu trữ các chi tiết có thể được truy vấn bằng các scripts để xây dựng một website. Với tốc độ ổn định, độ bảo mật thông tin cao, dễ sử dụng và có tính khả chuyển, MySQL đã trở thành hệ quản trị cơ sở dữ liệu nguồn mở phổ biến nhất trên thế giới. Tuy nhiên hiện nay, chúng ta có MariaDB là một phiên bản thay thế cho MySQL. Nó được phát triển bởi một nhóm thành viên cũ của MySQL - những người lo ngại rằng Oracle có thể biến MySQL thành một sản phẩm mã nguồn đóng.

Hình 1.4 - MySQL và MariaDB

1.4 PHP

PHP đóng vai là lớp cuối cùng trong L.A.M.P stack. Là một ngôn ngữ lập trình mã nguồn mở, PHP chủ yếu thực hiện các mã nguồn phía máy chủ trong môi trường web Apache và tương tác với cơ sở dữ liệu MySQL. Đây là một cấu hình phổ biến cho việc phát triển ứng dụng web động - nơi mà PHP đóng vai trò là trung tâm trong việc xử lý và hiển thị dữ liệu trên nền tảng Linux.

Hình 1.5 - Ngôn ngữ lập trình PHP

2. Cài đặt LAMP trên Centos 7

Sau khi đã biết được một số khái niệm cơ bản về L.A.M.P, chúng ta cùng tiến hành cài đặt L.A.M.P trên máy chủ CentOS 7.

>>> Xem thêm: Hướng dẫn tạo Template CentOS 7 chi tiết trên VMware

2.1 Yêu cầu trước khi triển khai cài đặt LAMP trên CentOS 7

Có một vài điều kiện mà bạn cần có để có thể cài đặt LAMP:

  • Một máy tính cá nhân để SSH vào Server sử dụng CentOS 7 hoặc bạn cũng có thể cài đặt trực tiếp trên Server sử dụng CentOS 7.
  • Bạn cần có quyền truy cập sudo user account với quyền root (khả năng sử dụng sudo command).
  • YUM update manager, các thành phần mặc định của CentOS 7.
  • Một trình soạn thảo văn bản. VIM được đi kèm với hầu hết các bản phân phối Linux. Hoặc bạn cũng có thể dùng Nano.

2.2 Cài đặt web server Apache

Trong CentOS và nhiều bản phân phối Linux khác, tên của máy chủ web Apache không được gọi là "Apache," mà thay vào đó được đặt là "httpd" - hay http daemon. Nguyên nhân chính đằng sau điều này là sự quy ước trong cộng đồng Linux để giữ tên gọi ngắn gọn và thường sử dụng tên binary (tập tin thực thi) của ứng dụng để làm tên dịch vụ. Vì Apache là một gói đã có sẵn trong kho lưu trữ của CentOS, nên bạn chỉ cần dụng lệnh sau để cài đặt:

yum install -y httpd

Sau khi cài đặt xong, mặc định Apache sẽ được khởi chạy tự động trên hệ điều hành. Tuy nhiên, để cho chắc chắn, chúng ta sẽ khởi động thủ công bằng các câu lệnh sau:

Khởi động dịch vụ Apache:

systemctl start httpd

Bât tự khởi động mỗi khi bật hệ điều hành:

systemctl enable httpd

Sau khi đã bật hoàn tất, ta thực hiện kiểm tra lại bằng câu lệnh:

systemctl status httpd

Nếu kết quả hiện như hình 2.1 nghĩa là bạn đã khởi động thành công Apache.

Hình 2.1 - Trạng thái Apache đã được khởi động

Lưu ý: Nếu sau khi nhập lệnh kiểm tra trạng thái nhưng không thoát được ngay lập tức, bạn có thể bấm phím Q hoặc bấm tổ hợp phím Ctrl + C để trở về Terminal.

Mặc định trên CentOS 7 sẽ sử dụng tường lửa là Firewall, nên các bạn cần thực hiện mở Port dịch vụ Apache với Firewall theo cách sau:

Thêm Port 80:

firewall-cmd --zone=public --add-port=80/tcp

Reset lại tường lửa sau khi thêm Port:

firewall-cmd --reload 

2.3 Cài đặt MariaDB

Để cài đặt MariaDB các bạn thực hiện chạy lệnh sau:

yum install -y mariadb mariadb-server

Sau khi cài đặt xong, hãy kiểm tra trạng thái của Mariadb xem đã được bật hay chưa.

systemctl status mariadb

Hình 2.2 - Trạng thái đã bật của MariaDB

Nếu như MariaDB không được bật tự động, ta có thể tự bật thủ công bằng 2 câu lệnh sau:

systemctl start mariadb

systemctl enable mariadb

MariaDBServer bao gồm một tập lệnh bảo mật để thay đổi một số tùy chọn mặc định kém an toàn như Remote Connect và user test. Các bạn có thể sử dụng lệnh sau để chạy tập lệnh bảo mật:

mysql_secure_installation

Tiến trình cài đặt sẽ được mô tả ở Hình 2.3 và Hình 2.4

Hình 2.3 - Tiến trình cài Secure cho MariaDB

Giải thích:

1: Nhập Password để vào MariaDB, nếu không có thì bấm Enter.

2: Tạo Password mới: Bấm Y để tạo.

3: Nhập Password mới:...

4: Nhập lại Password vừa tạo ở trên: …

Lưu ý: Mục 3 và 4 sẽ không hiển thị ra Password bạn đã nhập.

Hình 2.4 - Tiến trình cài Secure cho MariaDB

Giải thích:

5: Xóa bỏ các user khác: Nhấn Y để xóa.

6: Tắt quyền truy cập Root từ xa: Nhấn Y để tắt.

7: Xóa bỏ các database: Nhấn Y để xóa.

8: Khởi chạy lại bảng Privilege (bảng phân quyền): Nhấn Y để khởi chạy.

Vậy là chúng ta đã cài đặt và thiết lập thành công MariaDB.

2.4 Cài đặt PHP

Phiên bản PHP có sẵn ở CentOS 7 là phiên bản PHP 5.4 - đã quá cũ và đã lỗi thời, vì lý do đó các bạn nên cài kho lưu trữ của bên thứ ba để có thể sử dụng các phiên bản PHP mới nhất. Remi là một kho lưu trữ gói phổ biến, cung cấp các bản phát hành PHP mới nhất cho máy chủ CentOS.

Để cài đặt Remi, các bạn chạy lệnh sau:

yum install -y yum-utils http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Sau khi cài đặt gói Remi xong, các bạn cần chọn phiên bản PHP mà bạn cần cài đặt và kích hoạt gói chứa phiên bản PHP đó. 

Ở hướng dẫn này mình sẽ cài đặt PHP 8.0 nên sẽ kích hoạt gói bằng lệnh sau:

yum-config-manager --enable remi-php80

Lưu ý: Ở số 80 - tương ứng PHP 8.0, bạn có thể thay thế bằng phiên bản PHP bạn muốn (Ví dụ: 72 – 73 –74 tương ứng 7.2 –7.3 – 7.4..)

Khi module remi-80 của PHP đã được bật, bạn có thể tiến hành cài đặt PHP và các gói hỗ trợ cần thiết bằng lệnh bên dưới.

yum install -y php php-ldap php-zip php-embedded php-cli php-mysql php-common php-gd php-xml php-mbstring php-mcrypt php-pdo php-soap php-json php-simplexml php-process php-curl php-bcmath php-snmp php-pspell php-gmp php-intl php-imap perl-LWP-Protocol-https php-pear-Net-SMTP php-enchant php-pear php-devel php-zlib php-xmlrpc php-tidy php-opcache php-cli php-pecl-zip unzip gcc

Kiểm tra lại phiên bản php vừa cài đặt:

php -v

Đầu ra sẽ là:

PHP 8.0.30 (cli) (built: Aug  3 2023 17:13:08) ( NTS gcc x86_64 )

Copyright (c) The PHP Group

Zend Engine v4.0.30, Copyright (c) Zend Technologies

    with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies

2.5 Kiểm tra việc Apache xử lý PHP

Thư mục gốc web mặc định sẽ là /var/www/html. Ta sẽ thực hiện tạo một tệp PHP có tên là info.php trong thư mục này để kiểm tra việc Apache xử lý PHP.

Sử dụng trình soạn thảo VIM để tạo file:

vim /var/www/html/info.php

Sau đó, bấm phím I để vào chế độ Insert và chép nội dung sau vào file:

<?php

phpinfo();

?>

Thực hiện lưu file và thoát bằng cách bấm ESC để trở về chế độ mặc định và tổ hợp phím “:wq” để tiến hành lưu và thoát khỏi VIM.

Sau khi cài đặt xong thực hiện khởi động lại dịch vụ Httpd.

systemctl restart httpd

Sau đó, truy cập vào một trình duyệt bất kì và thực hiện nhập ServerIP/info.php (hãy thay thế ServerIP bằng IP Server của bạn). Bạn sẽ thấy thông tin PHP máy chủ, điều này có nghĩa là các script PHP đã chạy đúng với Apache WebServer. Trang web sẽ trông như dưới đây.

Hình 2.5 - Trang web trạng thái PHP

Vậy là bạn đã cài đặt thành công PHP. L.A.M.P đã được cài đặt thành công trên máy chủ của bạn.

2.6 Cài đặt PHP Admin (tùy chọn)

PHPMyAdmin là một ứng dụng web mã nguồn mở được viết bằng PHP, được thiết kế để quản lý hệ thống cơ sở dữ liệu MySQL thông qua giao diện web. Đây là một công cụ phổ biến trong việc quản lý và thao tác với cơ sở dữ liệu MySQL mà không cần sử dụng command line.

Thực hiện thêm EPEL repo để có thể cài đặt phiên bản phpMyAdmin mới nhất bằng câu lệnh sau:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

yum -y install epel-release

Cài đặt phpMyAdmin

yum -y install phpMyAdmin

Sau khi đã cài đặt xong, chúng ta thực hiện cấu hình phpMyAdmin. Truy cập vào file cấu hình của phpMyAdmin để thực hiện các chỉnh sửa. Bạn có thể dùng trình soạn thảo VIM hoặc Nano để truy cập:

vim /etc/httpd/conf.d/phpMyAdmin.conf

Sau khi vào file, bạn hãy xóa toàn bộ nội dung và thay thế lại bằng đoạn code ở dưới.

Alias /phpMyAdmin /usr/share/phpMyAdmin

Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>

   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>

     <RequireAny>

       Require all granted

     </RequireAny>

   </IfModule>

   <IfModule !mod_authz_core.c>

     Order Deny,Allow

     Deny from All

     Allow from 127.0.0.1

     Allow from ::1

   </IfModule>

</Directory>

<Directory /usr/share/phpMyAdmin/setup/>

   <IfModule mod_authz_core.c>

     <RequireAny>

       Require ip 127.0.0.1

       Require ip ::1

     </RequireAny>

   </IfModule>

   <IfModule !mod_authz_core.c>

     Order Deny,Allow

     Deny from All

     Allow from 127.0.0.1

     Allow from ::1

   </IfModule>

</Directory>

<Directory /usr/share/phpMyAdmin/libraries/>

   <IfModule mod_authz_core.c>

     Require all denied

   </IfModule>

   <IfModule !mod_authz_core.c>

     Order Deny,Allow

     Deny from All

     Allow from None

   </IfModule>

</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>

   <IfModule mod_authz_core.c>

     Require all denied

   </IfModule>

   <IfModule !mod_authz_core.c>

     Order Deny,Allow

     Deny from All

     Allow from None

   </IfModule>

</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>

   <IfModule mod_authz_core.c>

     Require all denied

   </IfModule>

   <IfModule !mod_authz_core.c>

     Order Deny,Allow

     Deny from All

     Allow from None

   </IfModule>

</Directory>

Sau khi thực hiện chỉnh sửa, hãy lưu file và thoát khỏi VIM. Sau đó, bạn lên trình duyệt web và gõ: “http://Server_IP/phpmyadmin hãy thay thế Server_IP bằng IP Server của bạn. Trang web đăng nhập của phpMyAdmin sẽ hiện ra. Lúc này, bạn thực hiện đăng nhập username là “root” và password là password MariaDB mà bạn đã tạo ở trên. 

Hình 2.6 - Trang đăng nhập vào phpMyAdmin

Đăng nhập hoàn tất, lúc này trang chủ của phpMyAdmin sẽ hiện ra. Ở đây, bạn có thể quản lý các database, thao tác với dữ liệu, phân quyền người dùng,....

Hình 2.7 - Trang chủ phpMyAdmin

Tổng kết

Qua bài viết trên, các bạn có thể nhận thấy việc xây dựng một web server không khó và nó không đòi hỏi quá nhiều kiến thức kỹ thuật. Bạn chỉ cần cài đặt LAMP trên CentOS 7. Sau đó Apache sẽ quản lý các nội dung trên trình duyệt, PHP sẽ thực thi lệnh và truy vấn tới MariaDB để lấy dữ liệu. Nếu trong quá trình thực hiện có khó khăn gì, bạn hãy liên hệ với chúng tôi để được hỗ trợ nhanh nhất nhé.

Tác giả:
author avatar
Mình là Huy, hiện mình đang là kỹ sư hệ thống tại SunCloud. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn về mạng, hệ thống, điện toán mây và an ninh bảo mật. Mình đã triển khai và vận hành rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số chứng chỉ quốc tế như CCNP, LPI, VCP, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.

Tin tức nổi bật
Tin tức khác