Hướng dẫn Cài đặt LAMP Stack trên CentOS 8

Hướng dẫn Cài đặt LAMP Stack trên CentOS 8 sẽ cho bạn thấy làm thế nào để cài đặt  một máy chủ LAMP stack trên CentOS 8 hoặc RHEL 8.

LAMP Stack là gì?

LAMP Stack là một tập hợp các công cụ phần mềm được kết hợp với nhau. LAMP là viết tắt của Linux, Apache, MariaDB (hoặc MySQL) và PHP, tất cả đều là mã nguồn mở. Nó là Stack phần mềm phổ biến nhất cung cấp sức mạnh cho các trang web động và ứng dụng web. Linux là hệ điều hành; Apache là máy chủ web; MariaDB / MySQL là máy chủ cơ sở dữ liệu và PHP là ngôn ngữ kịch bản phía máy chủ chịu trách nhiệm tạo các trang web động.

cài đặt LAMP stack trên CentOS 8

Cập nhật hệ thống:

Trước khi chúng ta cài đặt LAMP Stack, bạn nên chạy lệnh sau để cập nhật gói phần mềm và kho lưu trữ.

Bước 1: Cài đặt máy chủ Apache

1.1 Cài đặt Apache

Nhập lệnh sau để cài đặt máy chủ Web Apache. Gói httpd-tools sẽ cài đặt một số tiện ích hữu ích như công cụ đo điểm chuẩn máy chủ Apache HTTP (ab).

Sau khi cài đặt Apache thành công, chạy nó bằng lệnh:

Cho phép nó khởi động cùng hệ thống:

Kiểm tra trạng thái của apache

Kết quả Output:

● httpd.service – The Apache HTTP Server   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)   Active: active (running) since Sat 2019-10-12 06:43:15 UTC; 14s ago     Docs: man:httpd.service(8) Main PID: 14515 (httpd)   Status: “Running, listening on: port 80”    Tasks: 213 (limit: 5092)   Memory: 24.8M   CGroup: /system.slice/httpd.service

Active cho biết rằng tính năng tự động khởi động lúc khởi động được bật và chúng ta có thể thấy rằng Apache đang chạy (running).

Kiểm tra phiên bản của apache:

Output:

Server version: Apache/2.4.37 (centos)

Server built: Oct 7 2019 21:42:02

1.2 Kiểm tra hoạt động của apache

Để kiểm tra xem máy chủ web Apache có đang chạy đúng cách hay không, chúng ta có thể tạo một tệp index.html dưới thư mục gốc mặc định (/ var / www / html /) bằng lệnh sau.

Tại trình duyệt web trên máy chủ gõ 127.0.0.1 hoặc localhost (Nếu truy cập từ máy khác trong LAN thì nhập IP máy chủ)

Kiểm tra hoạt động của apache

1.3 Mở port trên Firewall

Theo mặc định, CentOS 8 / RHEL 8 cấm truy cập công khai vào cổng 80. Để cho phép các máy tính khác truy cập trang web, chúng ta cần mở cổng 80 trong firewalld, trình quản lý tường lửa động trên RHEL / CentOS. Chạy lệnh sau để mở cổng 80.

nếu bạn có ý định chạy web bằng giao thức https trên cổng 433 thì thêm lệnh sau:

Khởi động lại tường lửa:

hoặc

Bây giờ các trang web của bạn trên máy chủ đã được tường lửa cho phép truy cập công khai.

1.4 Thay đổi quyền sở hữu người dùng

Chúng ta cần tạo người dùng apache làm chủ sở hữu của thư mục web. Theo mặc định, nó thuộc sở hữu của người dùng root.

chown apache:apache /var/www/html -R

1.5 Thay đổi servername:

Theo mặc định, Apache sử dụng tên máy chủ hệ thống làm Tên máy chủ toàn cầu của nó. Nếu không thể phân giải tên máy chủ hệ thống trong DNS, thì bạn có thể sẽ gặp lỗi sau sau khi chạy lệnh:

apachectl configtest

AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1. Set the ‘ServerName’ directive globally to suppress this message

Để giải quyết vấn đề này, chúng ta có thể đặt ServerName toàn cục trong Apache. Cài đặt trình soạn thảo văn bản dòng lệnh Nano và sử dụng nó để tạo tệp cấu hình mới.

Khởi động lại apache để thay đổi có hiệu lực:

Bây giờ chạy lại lệnh apachectl configtest bạn sẽ thấy không còn xuất hiện lỗi AH00558 vừa rồi

Bước 2: Cài đặt MariaDB Server:

MariaDB là bản thay thế cho MySQL. Nó được phát triển bởi các thành viên cũ của nhóm 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.

2.1 Cài đặt Mariadb

Nhập lệnh sau để cài đặt MariaDB trên CentOS 8 / RHEL 8:

dnf install mariadb-server mariadb -y

Sau khi Cài đặt xong chạy mariadb bằng lệnh:

systemctl start mariadb

Cho phép mariadb khởi động cùng hệ thống

systemctl enable mariadb

Kiểm tra lại trạng thái mariadb:

systemctl status mariadb

output:

● mariadb.service – MariaDB 10.3 database server   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)   Active: active (running) since Sat 2019-10-12 09:02:53 UTC; 33s ago

Trạng thái Active cho biết mariadb đã được enable.

2.2 Cấu hình password cho mariadb:

Chạy security script sau:

mysql_secure_installation

Khi nó yêu cầu bạn nhập mật khẩu gốc MariaDB, hãy nhấn phím Enter vì mật khẩu gốc chưa được đặt. Sau đó nhập y để đặt mật khẩu gốc cho máy chủ MariaDB.

Cấu hình password cho mariadb

Tiếp theo, bạn có thể nhấn Enter để trả lời tất cả các câu hỏi còn lại, thao tác này sẽ xóa người dùng ẩn danh, vô hiệu hóa đăng nhập root từ xa và xóa cơ sở dữ liệu thử nghiệm. Bước này là yêu cầu cơ bản để bảo mật cơ sở dữ liệu MariaDB. (Lưu ý rằng chữ cái Y được viết hoa, có nghĩa là nó là câu trả lời mặc định.)

Cấu hình password cho mariadb

Từ Bây giờ bạn có thể chạy lệnh sau và nhập mật khẩu gốc MariaDB để đăng nhập vào MariaDB shell

mysql -u root -p

đăng nhập vào MariaDB shell

Để thoát cửa sổ lệnh mariadb nhập lệnh:

exit;

Bước 3: Cài đặt PHP trên CentOS 8

3.1 Cài đặt kho EPEL chứa php 7.4:

Mặc định PHP trên CentOS 8 là 7.2, tuy nhiên hướng dẫn này sẽ giúp các bạn cài đặt bản PHP mới nhất đến thời điểm viết bài đó là PHP 7.4.

Đầu tiên, cài đặt kho EPEL

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Tiếp theo chạy lệnh sau để cài đặt gói dnf-utils và cho phép remi-repository

dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Sau khi cài đặt thành công gói yum-utils và Remi, hãy tìm kiếm các mô-đun PHP có sẵn để tải xuống bằng cách chạy lệnh.

dnf module list php

Kết quả đầu ra sẽ bao gồm các mô-đun PHP có sẵn, cấu hình luồng và cài đặt tương tự như hình dưới đây:

Cài đặt PHP trên CentOS 8

Đầu ra chỉ ra rằng phiên bản PHP hiện được cài đặt là PHP 7.2. Để cài đặt phiên bản mới hơn, PHP 7.4, hãy đặt lại các mô-đun PHP.

dnf module reset php

Hệ thống sẽ quét lại thứ tự các phiên bản php. Nhập y để trả lời, nhấn Enter.

Sau khi đặt lại các mô-đun PHP, hãy bật mô-đun PHP 7.4 bằng cách chạy lệnh

dnf module enable php:remi-7.4

Nhấn Y để trả lời khẳng định.

3.2 Cài đặt php 7.4

Trên CentOS 8 bạn cài đặt PHP và một số mô-đun phổ biến bằng lệnh sau:

dnf install -y php php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring php-curl

Lưu ý là máy chủ web Apache trên CentOS 8 / RHEL 8 theo mặc định sử dụng PHP-FPM thay vì mod_php để chạy mã PHP, vì vậy trong lệnh trên chúng ta cũng đã cài đặt php-fpm. Sau khi cài đặt xong, chúng ta cần khởi động nó.

systemctl start php-fpm

Cho phép php-fpm khởi động cùng hệ thống

systemctl enable php-fpm

Kiểm tra lại trạng thái của PHP sau khi khởi động

systemctl status php-fpm

output có dạng:

● php-fpm.service – The PHP FastCGI Process Manager   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)   Active: active (running) since Sat 2019-10-12 09:54:37 UTC; 3s ago Main PID: 19755 (php-fpm)   Status: “Ready to handle connections”    Tasks: 6 (limit: 5092)   Memory: 24.5M

3.3 Cấp phép SELinux cho PHP

Để hướng dẫn SELinux cho phép Apache thực thi mã PHP thông qua chạy PHP-FPM.

setsebool -P httpd_execmem 1

Khởi động lại apache:

systemctl restart httpd

3.4 Kiểm tra thông tin PHP đã cài đặt

Để kiểm tra PHP vừa cài đặt với máy chủ web, bạn hãy tạo tệp info.php trong thư mục gốc của máy chủ web:

vi /var/www/html/info.php

Nhấn phím i chuyển về chế độ chèn, nhập đoạn mã sau

Nhấn ESC thoát về chế độ lệnh, nhấn :wq để ghi lại và đóng trình soạn thảo.

Mở trình duyệt của bạn và nhập URL bên dưới. Hãy nhớ thay thế địa chỉ IP của máy chủ bằng địa chỉ IP thực của máy chủ của bạn.

http://Ser-ver-IP/infor.php

Kết quả:

php info

Chú ý quan trọng: Toàn bộ các thông tin về PHP có thể được các Hacker lợi dụng để khai thác hệ thống của bạn, do vậy bạn hãy xóa file infor.php ngay sau khi kiểm tra xong.

Thực hiện lệnh sau để xóa file infor.php lúc trước bạn đã tạo:

rm /var/www/html/info.php

Bước 4: Tự động khởi động lại Apache:

Nếu vì bất kỳ lý do gì mà dịch vụ Apache của bạn bị dừng lại (chết), bạn cần chạy lệnh sau để khởi động lại nó.

systemctl restart httpd

Tuy nhiên không phải lúc nào bạn cũng thường trực trên máy, vì vậy có thể dịch vụ apache trên máy chủ của bạn gián đoạn nhiều ngày bạn mới nhận ra. Để khởi động lại apache, thay vì gõ lệnh trên theo cách thủ công, chúng ta có thể làm cho Apache tự động khởi động lại bằng cách chỉnh sửa đơn vị dịch vụ httpd.service systemd. Để ghi đè cấu hình dịch vụ systemd mặc định, chúng tôi tạo một thư mục riêng.

mkdir -p /etc/systemd/system/httpd.service.d/

Sau đó, tạo một tệp trong thư mục này.

vi /etc/systemd/system/httpd.service.d/restart.conf

Thêm các dòng sau vào tệp, điều này sẽ làm cho Apache tự động khởi động lại 5 giây sau khi phát hiện lỗi.

Ghi lại nội dung file. Giờ nạp lại systemd bằng lệnh:

systemctl daemon-reload

Để kiểm tra, giết chết apache bằng lệnh:

pkill httpd

Sau đó 5 giây hãy kiểm tra lại bằng lệnh:

systemctl status httpd

Bạn sẽ thấy Apache tự động khởi động lại.