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ậ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ữ.
1 |
dnf update |
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).
1 |
dnf install httpd httpd-tools |
Sau khi cài đặt Apache thành công, chạy nó bằng lệnh:
1 |
systemctl start httpd |
Cho phép nó khởi động cùng hệ thống:
1 |
systemctl enable httpd |
Kiểm tra trạng thái của apache
1 |
systemctl status httpd |
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:
1 |
httpd -v |
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.
1 |
echo "Welcome to this site!" > /var/www/html/index.html |
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ủ)
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.
1 |
firewall-cmd --permanent --zone=public --add-service=http |
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:
1 |
firewall-cmd --permanent --zone=public --add-service=https |
Khởi động lại tường lửa:
1 |
firewall-cmd --reload |
hoặc
1 |
systemctl reload firewalld |
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 -R1.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 configtestAH00558: 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.
1 |
dnf install nanosudo nano /etc/httpd/conf.d/servername.confServerName localhost |
Khởi động lại apache để thay đổi có hiệu lực:
1 |
systemctl reload httpd |
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 -ySau khi Cài đặt xong chạy mariadb bằng lệnh:
systemctl start mariadbCho phép mariadb khởi động cùng hệ thống
systemctl enable mariadbKiểm tra lại trạng thái mariadb:
systemctl status mariadboutput:
● 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_installationKhi 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.
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.)
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Để 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.rpmTiế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.rpmSau 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 phpKế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:
Đầ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 phpHệ 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.4Nhấ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-curlLư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-fpmCho phép php-fpm khởi động cùng hệ thống
systemctl enable php-fpmKiểm tra lại trạng thái của PHP sau khi khởi động
systemctl status php-fpmoutput 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 1Khởi động lại apache:
systemctl restart httpd3.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.phpNhấn phím i chuyển về chế độ chèn, nhập đoạn mã sau
1 2 3 |
<?php phpinfo(); ?> |
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.phpKết quả:
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.phpBướ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 httpdTuy 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.confThê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.
1 2 3 |
[Service] Restart=always RestartSec=5s |
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 httpdSau đó 5 giây hãy kiểm tra lại bằng lệnh:
systemctl status httpdBạn sẽ thấy Apache tự động khởi động lại.