Cách thiết lập máy chủ web LAMP với CentOS 7 Linux

Tác giả sysadmin, T.M.Hai 23, 2022, 09:22:27 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Cách thiết lập máy chủ web LAMP với CentOS 7 Linux


Với các gói chính xác, chúng tôi có thể nhanh chóng thiết lập một máy chủ CentOS 7 đơn giản để chạy một ngăn xếp LAMP đầy đủ.

Điều này sẽ biến hệ thống Linux của chúng tôi thành một máy chủ web có khả năng cung cấp nội dung động từ cơ sở dữ liệu phía sau.

Mặc dù LAMP theo truyền thống là viết tắt của Linux, Apache, MySQL và PHP, nhưng chúng tôi sẽ sử dụng MariaDB thay vì MySQL ở đây vì MariaDB là mặc định trong CentOS 7. Đừng lo lắng vì nó là sự thay thế cho MySQL nên về cơ bản nó giống với một quan điểm quản lý.

1. Cài đặt gói LAMP

Vì chúng tôi đã cài đặt CentOS 7 và sẵn sàng hoạt động, chúng tôi sẽ tiến hành bằng cách sử dụng yum để cài đặt các gói Apache, MariaDB và PHP như hình bên dưới.

Mã nguồn [Chọn]
[root@centos7 ~]# yum install httpd php php-mysql mariadb-server -y
2. Bắt đầu và kích hoạt dịch vụ

Theo mặc định, cả máy chủ web Apache và cơ sở dữ liệu MariaDB sẽ không được kích hoạt để khởi động khi khởi động hệ thống như được xác nhận bên dưới.

Mã nguồn [Chọn]
[root@centos7 ~]# systemctl is-enabled httpd mariadb
disabled
disabled

Chúng tôi có thể kích hoạt các dịch vụ này để chúng tự động khởi động khi khởi động hệ thống như hình bên dưới.

Mã nguồn [Chọn]
[root@centos7 ~]# systemctl enable httpd mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

[root@centos7 ~]# systemctl is-enabled httpd mariadb
enabled
enabled

Mặc dù các dịch vụ của chúng tôi hiện đã được kích hoạt để khởi động tự động khi khởi động, nhưng chúng hiện không chạy.

Mã nguồn [Chọn]
[root@centos7 ~]# systemctl is-active httpd mariadb
inactive
inactive

Bây giờ chúng ta sẽ tiến hành khởi động cả Apache và MariaDB, xác nhận rằng chúng đang chạy tích cực sau đó.

Mã nguồn [Chọn]
[root@centos7 ~]# systemctl start httpd mariadb
[root@centos7 ~]# systemctl is-active httpd mariadb
active
active

3. Cấu hình tường lửa

Theo mặc định, tường lửa đang chạy và được bật trong CentOS 7, do đó, các yêu cầu HTTP bên ngoài tới máy chủ web của chúng tôi sẽ tự động bị chặn. Do đó, chúng tôi sẽ sửa đổi tường lửa để nó chấp nhận lưu lượng truy cập vào trên cổng 80 cho các yêu cầu HTTP.

Trước tiên, chúng tôi thêm dịch vụ HTTP làm quy tắc vĩnh viễn để dịch vụ này tồn tại khi khởi động lại hệ thống, sau đó chúng tôi tải lại tường lửa để thay đổi có hiệu lực trong cấu hình đang chạy.

Mã nguồn [Chọn]
[root@centos7 ~]# firewall-cmd --permanent --add-service=http
success
[root@centos7 ~]# firewall-cmd --reload
success

Bây giờ nếu chúng tôi liệt kê các dịch vụ được chấp nhận thông qua tường lửa, chúng tôi sẽ thấy http được liệt kê cùng với ssh và dhcpv6-client được phép thông qua theo mặc định.

Mã nguồn [Chọn]
[root@centos7 ~]# firewall-cmd --list-services
dhcpv6-client http ssh

Chúng ta có thể kiểm tra bằng cách đặt địa chỉ IP của máy chủ vào trình duyệt web, chúng ta sẽ thấy trang kiểm tra mặc định của Apache nếu Apache có thể phản hồi yêu cầu chính xác.


Nếu không chắc địa chỉ IP của mình là gì, bạn có thể chạy lệnh 'ip'.

4. Tạo trang tùy chỉnh

Đối với mục đích thử nghiệm, chúng tôi sẽ tạo một trang index.html trong thư mục /var/www/html, sau đó trang này sẽ được tải thay vì trang Apache mặc định mà chúng tôi đã thấy trước đó.

Mã nguồn [Chọn]
[root@centos7 ~]# echo "Hello World" > /var/www/html/index.html

Tuyệt, vậy là Apache đang phục vụ nội dung tĩnh của chúng ta, bây giờ hãy kiểm tra xem PHP có hoạt động bình thường không và có thể phục vụ nội dung động không.

Chúng tôi sẽ làm điều này bằng cách tạo một tệp phpinfo, tệp này chỉ xuất ra tất cả các loại thông tin về PHP cho trang.

Mã nguồn [Chọn]
[root@centos7 ~]# echo "<?php phpinfo(); ?>" > /var/www/html/index.php
Bây giờ nếu chúng ta tải địa chỉ IP theo sau là index.php, chúng ta sẽ thấy trang thông tin PHP.


Điều này xác nhận rằng Apache có thể phục vụ nội dung PHP động.

5. Cấu hình cơ sở dữ liệu

Cuối cùng, chúng ta sẽ tạo một cơ sở dữ liệu đơn giản với một số nội dung ví dụ để hiển thị trên trang của chúng ta.

Để nhanh chóng định cấu hình MariaDB, hãy chạy 'mysql_secure_installation' và thực hiện theo các bước. Đối với cài đặt của tôi, tôi đã trả lời có cho mọi thứ, điều này sẽ đặt mật khẩu gốc cho cơ sở dữ liệu. Xem hướng dẫn cài đặt của chúng tôi để biết thêm thông tin về cách thiết lập MariaDB.

Sau khi hoàn tất, chúng tôi sẽ đăng nhập vào MariaDB như hình bên dưới. Điều này sẽ nhắc chúng tôi nhập mật khẩu gốc mà chúng tôi vừa đặt.

Mã nguồn [Chọn]
[root@centos7 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 5.5.50-MariaDB MariaDB Server

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

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

MariaDB [(none)]>

Bây giờ chúng ta đang ở dấu nhắc MariaDB, chúng ta có thể tạo cơ sở dữ liệu của mình. Khi cơ sở dữ liệu đã được tạo, chúng tôi chỉ định rằng chúng tôi muốn sử dụng nó.

Mã nguồn [Chọn]
MariaDB [(none)]> create database testing;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use testing;
Database changed

Tiếp theo, chúng ta sẽ tạo một bảng và chèn một số dữ liệu vào đó.

Mã nguồn [Chọn]
MariaDB [testing]> create table user(firstname VARCHAR(40), lastname VARCHAR(40));
Query OK, 0 rows affected (0.00 sec)

MariaDB [testing]> insert into user (firstname, lastname) values ('john', 'smith');
Query OK, 1 row affected (0.00 sec)

MariaDB [testing]> select * from user;
+-----------+----------+
| firstname | lastname |
+-----------+----------+
| john      | smith    |
+-----------+----------+
1 row in set (0.00 sec)

Thay vì sử dụng tài khoản root, chúng tôi sẽ tạo một tài khoản 'demo' mới chỉ có các quyền được chọn trên bảng người dùng trong cơ sở dữ liệu thử nghiệm và không có gì khác, vì đây là tất cả những gì cần thiết để đọc dữ liệu. Sử dụng tài khoản root cho mục đích đơn giản này không được coi là một biện pháp bảo mật tốt.

Mã nguồn [Chọn]
MariaDB [testing]> create user demo@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [testing]> grant select on testing.user to demo@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [testing]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Bây giờ, hãy in thông tin này ra một trang web với sự trợ giúp của PHP, đây là lý do tại sao chúng tôi đã cài đặt gói php-mysql ngay từ đầu, nó được sử dụng để chúng tôi có thể truy cập cơ sở dữ liệu MySQL/MariaDB thông qua PHP.

Ví dụ chúng tôi đang sử dụng ở đây dựa trên ví dụ này từ   Đăng nhập để xem liên kết.

Về cơ bản, tập lệnh PHP này sẽ tải nội dung của tên và họ từ bảng người dùng trong cơ sở dữ liệu thử nghiệm, in chúng ra trang.

Mã nguồn [Chọn]
[root@centos7 ~]# cat /var/www/html/users.php
 <?php
$servername 
"localhost";
$username "demo";
$password "password";
$dbname "testing";

// Create connection
$conn = new mysqli($servername$username$password$dbname);
// Check connection
if ($conn->connect_error) {
    die(
"Connection failed: "$conn->connect_error);
}

$sql "SELECT firstname, lastname FROM user";
$result $conn->query($sql);

if (
$result->num_rows 0) {
    
// output data of each row
    
while($row $result->fetch_assoc()) {
        echo 
"Name: "$row["firstname"]. " "$row["lastname"]. "<br>";
    }
} else {
    echo 
"0 results";
}
$conn->close();
?>


Và với ví dụ cuối cùng đó, chúng tôi hiện đã tạo nội dung sử dụng tập lệnh PHP để đọc dữ liệu từ cơ sở dữ liệu MariaDB, sau đó được cung cấp qua HTTP thông qua Apache.

Chúng tôi đã chỉ cho bạn cách cài đặt Apache, MariaDB và PHP, cho phép bạn biến bản cài đặt Linux CentOS 7 của mình thành một máy chủ web ngăn xếp LAMP chính thức.