Cách cài đặt LAMP Stack (Linux, Apache, MariaDB, PHP) trên CentOS 7

Cách cài đặt LAMP Stack (Linux, Apache, MariaDB, PHP) trên CentOS 7

Một “LAMP” stack là bộ phần mềm mã nguồn mở thường được triển khai đồng bộ nhằm cho phép máy chủ lưu trữ và chạy các trang web, ứng dụng web động. Thuật ngữ “LAMP” là viết tắt của hệ điều hành Linux, máy chủ web Apache, cơ sở dữ liệu MySQL và ngôn ngữ lập trình PHP.

Trên hầu hết các hệ thống Linux, bạn có thể cài đặt MySQL thông qua gói mysql-server từ kho phần mềm mặc định. Tuy nhiên, đối với CentOS 7, gói mysql-server sẽ cài đặt MariaDB – một phiên bản phát triển từ cộng đồng của MySQL, tương thích hoàn toàn như một sự thay thế thay đổi trực tiếp. Do đó, bài hướng dẫn này sẽ chỉ dẫn cách cài đặt LAMP stack gồm Linux, Apache, MariaDB và PHP trên máy chủ CentOS 7, giúp bạn tối ưu hóa hạ tầng web của mình.

Yêu cầu

Trước khi bắt đầu với bài hướng dẫn này, bạn nên tạo một tài khoản người dùng riêng biệt không phải root trên máy chủ của mình. Bạn có thể tìm hiểu cách thực hiện điều này qua bài hướng dẫn thiết lập máy chủ ban đầu cho CentOS 7.

Bước 1 – Cài đặt máy chủ web apache

Apache là một máy chủ web mã nguồn mở phổ biến được sử dụng để hiển thị các trang web cho khách truy cập. Bạn có thể cấu hình Apache để phục vụ các trang PHP.

Hãy cài đặt Apache bằng cách sử dụng trình quản lý gói của CentOS, yum. Trình quản lý gói cho phép bạn cài đặt hầu hết phần mềm từ kho được duy trì bởi CentOS.

Nhập lệnh sau trong terminal của bạn để cài đặt gói Apache httpd:

sudo yum install httpd

Khi được hỏi, hãy nhập Y để xác nhận việc cài đặt Apache. Sau khi cài đặt xong, khởi động máy chủ Apache bằng lệnh:

sudo systemctl start httpd

Bạn có thể kiểm tra xem máy chủ đã chạy hay chưa bằng cách nhập địa chỉ IP công khai hoặc tên miền của bạn vào trình duyệt web.

Nếu bạn chưa có tên miền trỏ về máy chủ hoặc không biết địa chỉ IP công khai của máy chủ, bạn có thể tìm bằng cách chạy lệnh sau:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Lệnh này sẽ in ra một vài địa chỉ khác nhau. Hãy thử từng địa chỉ trên trình duyệt của bạn.

Một cách khác là sử dụng một dịch vụ bên ngoài để xác định địa chỉ IP của bạn. Bạn có thể làm điều này bằng cách nhập lệnh sau:

curl http://icanhazip.com

Bất kể cách bạn chọn, hãy nhập địa chỉ IP vào trình duyệt để xác nhận rằng máy chủ của bạn đang chạy:

http://your_server_IP_address
Bạn sẽ thấy trang đích mặc định của Apache trên CentOS 7.

cach cai dat linux apache mysql php lamp stack tren centos 7 1

Để tự động khởi động Apache khi khởi động máy, nhập:

sudo systemctl enable httpd.service

Bước 2 – Cài đặt mysql (mariadb)

Với máy chủ web của bạn đã chạy, bạn có thể cài đặt MariaDB. MariaDB sẽ tổ chức và cung cấp quyền truy cập vào cơ sở dữ liệu nơi trang web của bạn lưu trữ thông tin.

Để cài đặt gói phần mềm MariaDB, chạy:

sudo yum install mariadb-server

Khi cài đặt xong, khởi động MariaDB:

sudo systemctl start mariadb

Để tự động khởi động MariaDB khi máy khởi động, chạy:

sudo systemctl enable mariadb.service

Để tăng cường bảo mật cho máy chủ cơ sở dữ liệu của bạn, khuyến nghị chạy một script bảo mật được cài sẵn với MariaDB. Script này sẽ loại bỏ một số cài đặt mặc định không an toàn và khóa truy cập vào hệ thống cơ sở dữ liệu của bạn.

Khởi chạy script tương tác bằng cách chạy:

sudo mysql_secure_installation

Script này sẽ hướng dẫn bạn qua một chuỗi các câu hỏi, cho phép bạn thay đổi một số cài đặt của MariaDB. Câu hỏi đầu tiên sẽ yêu cầu bạn nhập mật khẩu root hiện tại của cơ sở dữ liệu. Đây không phải là mật khẩu của tài khoản root hệ thống. Tài khoản root của cơ sở dữ liệu là một người dùng quản trị với đầy đủ đặc quyền trên hệ thống cơ sở dữ liệu. Vì bạn vừa cài đặt MariaDB và chưa thay đổi cài đặt gì, mật khẩu này sẽ để trống. Nhấn ENTER khi được yêu cầu.

Câu hỏi tiếp theo hỏi bạn có muốn thiết lập mật khẩu cho root của cơ sở dữ liệu hay không. Nhập N, sau đó nhấn ENTER.

Sau đó, bạn có thể nhấn Y, sau đó ENTER, để chấp nhận các cài đặt mặc định cho các câu hỏi tiếp theo. Việc này sẽ loại bỏ người dùng ẩn danh và cơ sở dữ liệu test, vô hiệu hóa đăng nhập root từ xa, và tải các quy tắc mới để máy chủ ngay lập tức áp dụng các thay đổi mà bạn đã thực hiện.

Khi hoàn thành, đăng nhập vào MariaDB console bằng lệnh:

sudo mysql

Lệnh này sẽ kết nối bạn với máy chủ MariaDB với tư cách là người dùng quản trị cơ sở dữ liệu root.

Output

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Để tăng cường bảo mật, tốt nhất là tạo các tài khoản người dùng riêng với đặc quyền hạn chế cho từng cơ sở dữ liệu. Điều này đặc biệt quan trọng nếu bạn dự định có nhiều cơ sở dữ liệu trên máy chủ của mình.

Để minh họa, hãy tạo một cơ sở dữ liệu có tên example_database và một người dùng có tên example_user. Bạn có thể thay thế tên này bằng giá trị khác.

Từ MariaDB console, chạy lệnh sau để tạo cơ sở dữ liệu mới:

CREATE DATABASE example_database;

Tiếp theo, bạn có thể tạo người dùng mới và cấp cho họ toàn bộ đặc quyền trên cơ sở dữ liệu mà bạn vừa tạo. Lệnh dưới đây đặt mật khẩu của người dùng này là password, nhưng bạn nên thay thế giá trị này bằng một mật khẩu an toàn:

GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Lệnh này cấp cho example_user toàn bộ đặc quyền trên cơ sở dữ liệu example_database, đồng thời ngăn người dùng này tạo hoặc chỉnh sửa các cơ sở dữ liệu khác trên máy chủ của bạn.

Sử dụng lệnh FLUSH để nạp lại và lưu các đặc quyền vừa cấp cho example_user:

FLUSH PRIVILEGES;

Để thoát khỏi shell của MariaDB, nhập:

exit

Bạn có thể kiểm tra xem người dùng mới có đủ đặc quyền không bằng cách đăng nhập lại vào MariaDB console sử dụng thông tin đăng nhập của example_user:

mysql -u example_user -p

Lưu ý tham số -p trong lệnh trên, lệnh này sẽ nhắc bạn nhập mật khẩu mà bạn đã đặt khi tạo example_user. Sau khi đăng nhập, xác nhận rằng bạn có quyền truy cập vào cơ sở dữ liệu example_database bằng lệnh:

SHOW DATABASES;

Kết quả đầu ra sẽ hiển thị example_database:

Output

+--------------------+
| Database           |
+--------------------+
| example_database   |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)

Để thoát khỏi shell của MariaDB, nhập:

exit

Hệ thống cơ sở dữ liệu của bạn đã được thiết lập, bây giờ bạn có thể tiến hành cài đặt PHP.

Bước 3 – Cài đặt PHP

Bạn đã cài đặt Apache để phục vụ nội dung và MariaDB để lưu trữ và quản lý dữ liệu. PHP sẽ xử lý mã để hiển thị nội dung động cho người dùng. Bên cạnh gói php, bạn cũng cần cài đặt php-mysql, một module của PHP cho phép PHP giao tiếp với các cơ sở dữ liệu dựa trên MySQL. Các gói PHP cốt lõi sẽ tự động được cài đặt như là các phụ thuộc.

Sử dụng lệnh sau để cài đặt các gói phpphp-mysql bằng yum:

sudo yum install php php-mysql

Khởi động lại máy chủ Apache để kích hoạt module PHP bạn đã cài đặt:

sudo systemctl restart httpd.service

Máy chủ của bạn bây giờ đã được cấu hình với tất cả các thành phần cần thiết cho ứng dụng LAMP stack của bạn. Bước tiếp theo là kiểm tra cấu hình của bạn để đảm bảo mọi thứ hoạt động hài hòa.

Bước 4 – Kiểm tra PHP trên máy chủ web apache của bạn

Cài đặt mặc định của Apache trên CentOS 7 sẽ tạo một document root tại /var/www/html. Bạn không cần thay đổi cài đặt mặc định của Apache để PHP hoạt động chính xác trong máy chủ web.

Tuy nhiên, bạn có thể điều chỉnh để thay đổi cài đặt quyền truy cập mặc định cho thư mục document root của Apache. Điều này cho phép bạn tạo và chỉnh sửa các file trong thư mục đó với tài khoản người dùng thông thường mà không cần thêm sudo cho mỗi lệnh.

Lệnh sau sẽ thay đổi quyền sở hữu của document root mặc định của Apache về cho một người dùng và nhóm có tên sammy. Hãy chắc chắn thay thế tên người dùng và nhóm này bằng tên và nhóm thực tế trên hệ thống của bạn:

sudo chown -R sammy.sammy /var/www/html/

Bạn có thể tạo một file test PHP để kiểm tra máy chủ web có hoạt động đúng hay không. Sử dụng trình soạn thảo văn bản ưa thích của bạn để tạo file này. Ví dụ dưới đây sử dụng trình soạn thảo vi mặc định trên CentOS 7.

Tạo một file PHP có tên info.php trong thư mục /var/www/html:

vi /var/www/html/info.php

Lệnh này mở một file PHP trống tại /var/www/html. Nhấn phím I để chuyển sang chế độ INSERT trong trình soạn thảo vi, cho phép bạn nhập và chỉnh sửa nội dung. Nhập đoạn mã PHP sau:

<?php phpinfo(); ?>

Đoạn mã PHP này sẽ hiển thị thông tin về môi trường PHP đang chạy trên máy chủ của bạn. Khi bạn hoàn thành việc chỉnh sửa file, nhấn phím ESC để thoát khỏi chế độ INSERT, sau đó nhập 😡 để lưu và đóng file.

Bạn có thể kiểm tra xem máy chủ web có hiển thị nội dung PHP đúng không bằng cách truy cập vào địa chỉ IP công khai của máy chủ, theo sau là /info.php:

http://your_server_IP_address/info.php

Một trang web hiển thị thông tin về máy chủ PHP của bạn sẽ được mở ra trên trình duyệt.

cach cai dat linux apache mysql php lamp stack tren centos 7 2

Trang này cung cấp thông tin về máy chủ của bạn từ góc nhìn của PHP. Nó hữu ích cho việc gỡ lỗi và đảm bảo rằng các cài đặt của bạn đang được áp dụng đúng cách. Sau khi kiểm tra, tốt nhất nên xóa file này vì nó chứa thông tin nhạy cảm về môi trường PHP và máy chủ CentOS của bạn.

Để xóa file, sử dụng lệnh:

rm /var/www/html/info.php

Bạn luôn có thể tạo lại trang này nếu cần truy cập thông tin trong tương lai. Tiếp theo, bạn có thể kiểm tra kết nối cơ sở dữ liệu qua PHP.

Bước 5 – Kiểm tra kết nối cơ sở dữ liệu với PHP (Tùy chọn)

Bạn có thể kiểm tra xem PHP có kết nối đến MariaDB và thực thi các truy vấn cơ sở dữ liệu hay không bằng cách tạo một bảng test và chèn dữ liệu test. Sau đó, truy vấn nội dung của bảng thông qua một script PHP.

Đầu tiên, đăng nhập vào MariaDB console với tài khoản cơ sở dữ liệu bạn đã tạo ở bước 2:

mysql -u example_user -p

Từ MariaDB console, chạy câu lệnh sau để tạo một bảng có tên todo_list trong cơ sở dữ liệu example_database:

CREATE TABLE example_database.todo_list (
    item_id INT AUTO_INCREMENT,
    content VARCHAR(255),
    PRIMARY KEY(item_id)
);

MariaDB console sẽ thông báo kết quả sau mỗi lần chỉnh sửa bảng:

Output

Query OK, 0 rows affected (0.00 sec)

Tiếp theo, chèn một vài dòng dữ liệu vào bảng test. Bạn có thể lặp lại lệnh sau một vài lần với các giá trị khác nhau để làm đầy bảng test của mình:

INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

Để xác nhận rằng dữ liệu đã được lưu thành công vào bảng, chạy:

SELECT * FROM example_database.todo_list;

Kết quả đầu ra mẫu:

Output

+---------+--------------------------+
| item_id | content                  |
+---------+--------------------------+
|       1 | My first important item  |
|       2 | My second important item |
|       3 | My third important item  |
|       4 | and this one more thing  |
+---------+--------------------------+
4 rows in set (0.000 sec)

Sau khi xác nhận dữ liệu hợp lệ trong bảng test, thoát khỏi console của MariaDB:

exit

Bây giờ, bạn có thể tạo script PHP để kết nối với MariaDB và truy vấn dữ liệu. Tạo một file PHP mới trong thư mục gốc web tùy chỉnh của bạn bằng trình soạn thảo yêu thích. Ví dụ dưới đây sử dụng vi:

vi /var/www/html/todo_list.php

Nhấn phím I để chuyển sang chế độ INSERT và thêm nội dung sau, nhớ thay thế example_userpassword bằng thông tin của riêng bạn:

<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>TODO</h2><ol>"; 
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

Khi đã xong, nhấn ESC rồi gõ 😡 để lưu và thoát file.

Giờ bạn có thể truy cập trang này trên trình duyệt bằng cách nhập tên máy chủ hoặc địa chỉ IP công khai của bạn, theo sau là /todo_list.php:

http://server_host_or_IP/todo_list.php

Trang web sẽ hiển thị nội dung mà bạn đã chèn vào bảng test.

cach cai dat linux apache mysql php lamp stack tren centos 7 3

Kết luận

Trong hướng dẫn này, bạn đã tạo dựng một nền tảng mạnh mẽ và linh hoạt phục vụ các trang web cùng ứng dụng PHP, sử dụng Apache làm máy chủ web để xử lý các yêu cầu. Bạn đã cấu hình thành công Apache cho PHP và thiết lập cơ sở dữ liệu MariaDB để lưu trữ dữ liệu trang web một cách an toàn và hiệu quả.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *