Trang chủ Cloud Computing

Hướng dẫn cài đặt Linux, Nginx, MySQL, PHP (LEMP stack) trên Debian 9

Hướng dẫn cài đặt Linux, Nginx, MySQL, PHP (LEMP stack) trên Debian 9

Giới thiệu

LEMP software stack là một nhóm phần mềm, được sử dụng để phục vụ các trang web động và các ứng dụng web. LEMP là từ viết tắt mô tả một hệ điều hành Linux, với máy chủ web Nginx. Các backend data được lưu trữ trong MySQL database và dynamic processing được xử lý bởi PHP.

Trong hướng dẫn này, bạn sẽ cài đặt một LEMP stack trên máy chủ Debian bằng cách sử dụng các gói được cung cấp bởi hệ điều hành.

>> Tham khảo thêm:  Hệ điều hành Debian là gì? Tại sao nên chọn Debian 8?

Điều kiện tiên quyết

Để hoàn tất hướng dẫn này, bạn cần một máy chủ Debian 9 với non-root user sở hữu các đặc quyền sudo.

Bước 1: Cài đặt Nginx Web Server

Để hiển thị các trang web cho khách truy cập, chúng ta sẽ sử dụng Nginx - một máy chủ web hiện đại và rất hiệu quả.

>> Tham khảo thêm: Web server là gì?

Tất cả phần mềm chúng ta sử dụng cho bước này sẽ đến trực tiếp từ kho lưu trữ gói mặc định của Debian (Debian's default package repositories). Điều này có nghĩa là chúng ta có thể sử dụng bộ quản lý gói apt để hoàn tất việc cài đặt.

Vì đây là lần đầu tiên chúng ta sử dụng apt cho phiên này, chúng ta nên bắt đầu bằng cách cập nhật local package index. Sau đó tiến hành cài đặt máy chủ:

$ sudo apt update

$ sudo apt install nginx

Trên Debian 9, Nginx được cấu hình để bắt đầu chạy khi cài đặt.

Nếu tường lửa ufw đang chạy, bạn cần phải cho phép kết nối tới Nginx. Bạn nên kích hoạt restrictive profile, điều này sẽ cho phép lượng truy cập mà bạn mong muốn. Vì chưa định cấu hình SSL cho máy chủ nên trong hướng dẫn này, chúng ta sẽ chỉ cần cho phép lưu lượng truy cập trên cổng 80.

Bạn có thể bật tính năng này bằng cách nhập:

$ sudo ufw allow 'Nginx HTTP'

Bạn có thể xác minh sự thay đổi bằng cách nhập:

$ sudo ufw status

Bạn sẽ thấy lưu lượng truy cập HTTP được phép trong đầu ra được hiển thị:

Hướng dẫn cài đặt Linux, Nginx, MySQL, PHP (LEMP stack) trên Debian 9 - Ảnh 1.

Bây giờ, kiểm tra xem máy chủ có đang hoạt động hay không, bằng cách truy cập tên miền của máy chủ hoặc public IP address trong web browser. Nếu bạn không có domain name trỏ vào server và bạn cũng không biết public IP address của máy chủ, bạn có thể tìm nó bằng cách nhập một trong những dòng sau vào terminal:

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

Lệnh này sẽ hiển thị ra một vài địa chỉ IP. Bạn có thể thử chúng lần lượt trong trình duyệt web.

>> Xem thêm:  Tìm hiểu chung về địa chỉ IP

Nó sẽ đưa bạn đến trang đích mặc định của Nginx:

http://your_domain_or_IP

Hướng dẫn cài đặt Linux, Nginx, MySQL, PHP (LEMP stack) trên Debian 9 - Ảnh 2.

Nếu bạn thấy trang trên, bạn đã cài đặt thành công Nginx.

Bước 2 - Cài đặt MySQL để quản lý dữ liệu trang web

Chúng ta đã có một web server, chúng ta cần phải cài đặt MySQL, một hệ thống quản lý cơ sở dữ liệu, để lưu trữ và quản lý dữ liệu cho trang web.

Bạn có thể cài đặt dễ dàng bằng cách gõ:

$ sudo apt install mysql-server

Lưu ý: Trong Debian 9, một nhánh cộng đồng của dự án MySQL - MariaDB - được đóng gói như là biến thể MySQL mặc định. Trong khi MariaDB hoạt động tốt trong hầu hết các trường hợp, nếu bạn cần các tính năng chỉ tìm thấy trong MySQL của Oracle, bạn có thể cài đặt và sử dụng các gói từ một kho lưu trữ được duy trì bởi các nhà phát triển MySQL.

Phần mềm cơ sở dữ liệu MySQL hiện đã được cài đặt, nhưng cấu hình của nó chưa hoàn thành.

Để bảo đảm cài đặt, chúng ta có thể chạy một security script, bạn sẽ được hỏi: bạn có muốn sửa đổi một số mặc định không an toàn hay không. Bắt đầu script bằng cách gõ:

$ sudo mysql_secure_installation

Bạn sẽ được yêu cầu nhập mật khẩu cho tài khoản gốc MySQL. Chúng ta chưa thiết lập điều này, vì vậy chỉ cần nhấn ENTER. Sau đó, bạn sẽ được hỏi bạn có muốn đặt mật khẩu đó không, gõ "y" và đặt một root password.

Với các câu hỏi còn lại bạn sẽ nhấn "y" sau đó gõ ENTER tại mỗi lần nhắc. Điều này sẽ giúp loại bỏ một số người dùng ẩn danh và test database, vô hiệu hóa remote root logins và tải các quy tắc mới, MySQL ngay lập tức sẽ tuân theo những thay đổi bạn vừa thực hiện.Tại thời điểm này, hệ thống cơ sở dữ liệu của bạn hiện đã được thiết lập và bảo mật. Hãy thiết lập PHP.

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

Đến đây tức chúng ta đã cài đặt xong Nginx và MySQL. Tuy nhiên vẫn chưa thể tạo các nội dung động. Đây là lúc phải tiến hành cài đặt PHP.

Vì Nginx không chứa native PHP processing như một số web servers khác, chúng ta sẽ cần phải cài đặt fpm, viết tắt của "fastCGI process manager". Chúng ta sẽ yêu cầu Nginx chuyển các yêu cầu PHP tới phần mềm này để xử lý. Đồng thời cài đặt một gói phần mềm trợ giúp bổ sung cho phép PHP giao tiếp với cơ sở dữ liệu MySQL. Quá trình cài đặt sẽ cần các PHP core files.

Sau đó cài đặt gói php-fpm và php-mysql:

$ sudo apt install php-fpm php-mysql

Vậy là đã cài đặt xong các thành phần PHP. Tiếp theo chúng ta sẽ cấu hình Nginx.

Bước 4 - Cấu hình Nginx để sử dụng PHP Processor

Chúng ta sẽ thực hiện cấu hình ở cấp độ server block (server blocks tương tự như các virtual hosts của Apache). Chúng ta sẽ để nguyên cấu hình Nginx mặc định, tạo một tệp cấu hình mới và thư mục web root mới để giữ các tệp PHP. Sau đó, đặt tên cho file cấu hình và thư mục sau domain name hoặc hostname mà server phản hồi.

Đầu tiên, tạo một thư mục mới trong /var/www để giữ trang PHP:

$ sudo mkdir /var/www/your_domain

Sau đó, mở một tệp cấu hình mới trong thư mục sites-available của Nginx:

$ sudo nano /etc/nginx/sites-available/your_domain

Thao tác này sẽ tạo một tệp trống mới. Dán vào cấu hình sau:

/etc/nginx/sites-available/your_domain

server {    listen 80;    listen [::]:80;    root /var/www/your_domain;    index index.php index.html index.htm;    server_name your_domain;    location / {        try_files $uri $uri/ =404;    }    location ~ \.php$ {        include snippets/fastcgi-php.conf;        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;    } }

Đây là một cấu hình rất cơ bản: lắng nghe trên cổng 80 và phục vụ các tệp từ web root mà chúng ta vừa tạo. Nó sẽ chỉ đáp ứng các requests có tên dưới dạng server_name và bất kỳ tệp nào kết thúc bằng .php sẽ được xử lý bằng tiến trình php-fpm trước khi Nginx gửi kết quả cho người dùng.

Lưu và đóng tệp khi bạn đã hoàn thành tùy chỉnh.

Kích hoạt cấu hình bằng cách liên kết đến tệp cấu hình từ thư mục sites-enabled của Nginx:

$ sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

Cấu hình này sẽ được áp dụng ngay sau khi Nginx được load lại. Trước tiên, hãy kiểm tra cấu hình của bạn để tìm ra lỗi cú pháp bằng cách nhập:

$ sudo nginx -t

Nếu có bất kỳ lỗi nào được báo cáo, hãy quay lại và kiểm tra lại tệp trước khi tiếp tục.

Khi đã sẵn sàng, hãy tải lại Nginx để thực hiện các thay đổi:

$ sudo systemctl reload nginx

Tiếp theo chúng ta sẽ tạo một tệp trong web root directory mới để kiểm tra việc xử lý PHP.

Bước 5 - Tạo một tệp PHP để kiểm tra cấu hình

LEMP stack bây giờ đã được thiết lập xong. Chúng ta sẽ kiểm tra để xác nhận rằng Nginx có thể xử lý các tệp .php một cách chính xác.

Tạo một test PHP file trong document root. Mở một tệp mới có tên là info.php trong thư mục gốc của tài liệu trong text editor:

$ sudo nano /var/www/your_domain/info.php

Nhập hoặc dán các dòng sau vào tệp mới. Đây là mã PHP hợp lệ sẽ trả về thông tin về máy chủ:

/var/www/your_domain/info.php

<?php

 phpinfo();

?>

Khi hoàn tất, lưu và đóng tệp.

Bạn có thể truy cập trang này trong trình duyệt web n bằng cách truy cập vào domain name máy chủ hoặc public IP address theo sau bởi /info.php:

http://your_domain/info.php

Bạn sẽ thấy một trang web được PHP tạo ra với thông tin về máy chủ của bạn:

Hướng dẫn cài đặt Linux, Nginx, MySQL, PHP (LEMP stack) trên Debian 9 - Ảnh 3.

Nếu bạn thấy một trang thông tin như trên, tức là bạn đã cài đặt PHP processing với Nginx thành công.

Sau khi xác nhận Nginx đã hiển thị đúng trang, tốt nhất hãy xóa tệp đã tạo đó đi, vì nó sẽ giúp cho người dùng trái phép các gợi ý về cấu hình khi họ cố gắng đột nhập trái phép vào hệ thống của bạn.

Xóa tệp bằng cách nhập:

$ sudo rm /var/www/html/info.php

Bạn luôn có thể tạo lại tệp này khi cần.

Kết luận

Vậy là đã hoàn thành LEMP stack được cấu hình trên máy chủ Debian và bạn đang sở hữu một nền tảng rất linh hoạt nhằm mục đích phục vụ nội dung web cho khách truy cập của mình.

>> Có thể bạn quan tâm: Tổng quan về LAMP/LEMP stack, phân biệt và hướng dẫn cài đặt trên server