Hướng dẫn cài đặt LEMP Stack (Nginx, MariaDB, PHP7.2) trên Ubuntu 18.04 LTS

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt Nginx, MariaDB và PHP7.2 (LEMP) trên Ubuntu 18.04. Bạn có thể làm theo hướng dẫn này trên VPS (Máy chủ riêng ảo) hoặc trên máy tính cá nhân chạy Ubuntu 18.04. PHP7.2 được bao gồm trong Ubuntu 18.04 và có một cải tiến hiệu suất nhỏ so với php7.0.

Chuẩn bị

Để làm theo hướng dẫn này, bạn cần có HĐH Ubuntu 18.04 chạy trên máy tính cá nhân hoặc trên máy chủ từ xa. Nếu bạn đang tìm kiếm một VPS (Máy chủ riêng ảo), thì bạn có thể nhấp vào liên kết này để nhận khuyến mãi $50 trên DigitalOcean (Chỉ áp dụng cho tài khoản mới). Nếu bạn đã có tài khoản DigitalOcean, thì bạn có thể nhấp vào liên kết này để nhận khuyến mãi $50 trên Vultr (chri áp dụng cho tài khoản mới). Nếu không có vấn đề gì, chúng ta sẽ bắt đầu.

Step 1: Cập nhật gói phần mềm

Trước khi chúng tôi cài đặt LEMP, tốt nhất các bạn hãy cập nhật các gói phần mềm trên hệ thống bằng cách chạy các lệnh sau trên HĐH Ubuntu 18.04 của bạn.

sudo apt update
sudo apt upgrade

Step 2: Cài đặt NGINX

Nginx là một máy chủ web hiệu suất cao và rất phổ biến ngày nay. Nó cũng có thể được sử dụng như một máy chủ web, caching, reverse proxy và nhiều ứng dụng khác nữa. Nhập lệnh này để cài đặt máy chủ Nginx Web.

 sudo apt install nginx

Sau khi cài đặt thành công, để chắc chắn NGINX sẽ tự khởi chạy sau khi khởi động hệ điều hành, các bạn hãy chạy lệnh sau:

 sudo systemctl enable nginx

Bây giờ hãy kiểm tra NGINX đã chạy chưa.

 systemctl status nginx 

Truy cập vào public IP bằng trình duyệt. Các bạn sẽ thấy “Welcome to Nginx”. Như vậy Nginx Web server đã hoạt động. Trường hợp sử dụng máy tính cá nhân thì các bạn truy cập vào địa chỉ ip 127.0.0.1

Default page of nginx server

Cuối cùng, chúng ta cần phân quyền cho www-data (Nginx User) làm chủ sở hữu của thư mục web. Theo mặc định, nó thuộc sở hữu của user root.

 sudo chown www-data:www-data /usr/share/nginx/html -R 

Step 3: Cài đặt MariaDB Database Server

MariaDB là một 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 nguồn đóng. Nhập lệnh sau để cài đặt MariaDB trên Ubuntu 18.04.

 sudo apt install mariadb-server mariadb-client 

Sau khi cài đặt thành công MariaDB sẽ tự khởi chạy. Sử dụng lệnh systemctl để kiểm tra trạng thái. Nếu MariaDB chưa hoạt động, sử dụng câu lệnh sau để khởi chạy:

 sudo systemctl start mariadb 

Để MariaDB tự động khởi chạy cùng với hệ thống chúng ta sử dụng lệnh sau:

 sudo systemctl enable mariadb 

Bước tiếp theo là cấu hình bảo mật cho MariaDB

 sudo 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 cài đặt. Sau đó nhập y để cài đặt mật khẩu 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, 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 kiểm tra. Bước này là một yêu cầu cơ bản để bảo mật cơ sở dữ liệu MariaDB. (Lưu ý rằng Y được viết hoa, có nghĩa là đó là câu trả lời mặc định.)

Theo mặc định, gói MaraiDB trên Ubuntu sử dụng unix_socket để xác thực đăng nhập người dùng, điều đó có nghĩa là bạn có thể sử dụng tên người dùng và mật khẩu của HĐH để đăng nhập vào bảng điều khiển MariaDB. Vì vậy, bạn có thể chạy đang nhập MariaDB bằng command line mà không cần cung cấp mật khẩu.

Step 4: Cài đặt PHP7.2

PHP7.2 được bao gồm trong kho lưu trữ Ubuntu 18.04 và có một cải tiến hiệu suất nhỏ so với PHP7.0. Nhập lệnh sau để cài đặt php7.2 và một số tiện ích mở rộng phổ biến

 sudo apt install php7.2 php7.2-fpm php7.2-mysql php-common php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl 

Các phần mở rộng PHP thường cần thiết cho các hệ thống quản lý nội dung (CMS) như WordPress. Ví dụ: nếu cài đặt của bạn thiếu php7.2-xml , thì một số trang trên trang WordPress của bạn có thể trống và bạn có thể tìm thấy lỗi trong nhật ký lỗi Nginx như:

 PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function xml_parser_create() 

Cài đặt các phần mở rộng PHP này đảm bảo rằng CMS của bạn chạy trơn tru. Bây giờ khởi chạy php7.2-fpm

 sudo systemctl start php7.2-fpm 

Mặc định chạy cùng với hệ thống

 sudo systemctl enable php7.2-fpm 

Step 5: Tạo Nginx Server Block

Nginx server block cũng giống như virtual host trong Apache. Chúng ta sẽ không sử dụng cấu hình mặc định của Nginx vì nó rất phức tạp và có nhiều thứ không cần thiết. Hãy xóa đi file cấu hình mặt định của Nginx trong thư mục /etc/nginx/sites-enabled bằng câu lệnh dưới đây. (Nhớ vẫn giữ lại file gốc trong thư mục/etc/nginx/sites-available/default đề phòng trường hợp lỗi xảy ra.)

 sudo rm /etc/nginx/sites-enabled/default 

Sau đó bắt đầu tạo file cấu hình mới vào đường dẫn thư mục /etc/nginx/conf.d/

 sudo nano /etc/nginx/conf.d/default.conf 

Đoạn cấu hình sau sẽ cho Nginx Web server chạy trên IPv4 và IPv6 với tên miền bất kỳ nào được trỏ về Public IP của bạn.

server {
  listen 80;
  listen [::]:80;
  server_name _;
  root /usr/share/nginx/html/;
  index index.php index.html index.htm index.nginx-debian.html;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }


 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Lưu và đóng tập tin. Sau đó kiểm tra cấu hình Nginx

 sudo nginx -t 

Nếu kiểm tra thành công, hãy khởi động lại lại Nginx

 sudo systemctl restart nginx 

Step 6: Test PHP

Để kiểm tra PHP-FPM với máy chủ Nginx Web, chúng ta cần tạo tệp info.php trong thư mục gốc của server.

 sudo nano /usr/share/nginx/html/info.php 

Sử dụng hàm phpinfo() để kiểm tra

  

Lưu và đóng tập tin. Bây giờ trong thanh địa chỉ trình duyệt, nhập server-ip-address / info.php . Thay thế sever-ip-address bằng IP thực tế của bạn. Nếu bạn làm theo hướng dẫn này trên máy tính cục bộ của mình, hãy nhập 127.0.0.1/info.php ; hoặc localhost / info.php .

Bạn sẽ thấy thông tin PHP máy chủ của bạn. Điều này có nghĩa là các tập lệnh PHP có thể chạy đúng với máy chủ web Nginx.

Chúc mừng! Bạn đã cài đặt thành công Nginx, MariaDB và PHP7.2 trên Ubuntu 18.04. Để bảo mật máy chủ của bạn, bạn nên xóa tệp info.php ngay bây giờ để ngăn chặn tin tặc nhìn thấy nó.

 sudo rm /usr/share/nginx/html/info.php

Leave a Reply

Your email address will not be published. Required fields are marked *