LEMP là một nhóm phần mềm kết hợp với nhau được dùng để phục vụ trang web, với NGINX Server là một Web Server mã nguồn mở mạnh mẽ sử dụng ít tài nguyên hệ thống.Các hệ thống quản lý nội dung như WordPress, Joomla, Drupal và các hệ thống khác, tất cả đều chủ yếu sử dụng LAMP hoặc LEMP Stack, trong bài viết hướng dẫn cài LEMP trên Ubuntu, MZE sẽ trình bày cho bạn cách làm thế để cài đặt LEMP Stack trên Ubuntu một cách dễ dàng nhất

Bài viết này tổng hợp các thành phần trong bộ LEMP stack được đăng trên MZE, nếu bạn cần chi tiết có thể xem qua các bài viết bên dưới:

Giới thiệu LEMP Stack, LEMP Stack là gì ?

LEMP được viết tắt bởi các chữ cái đầu của các gói phần mềm, nó là một nhóm phần mềm mã nguồn mở bao gồm

  • Linux: là lớp đầu tiên. Hệ điều hành này là cơ sở cho các gói phần mềm khác, có thể là Ubuntu, Centos
  • Nginx: hay còn được gọi (Engine-X) được viết là Nginx là một HTTP server để xử lý các yêu cầu được gửi tới máy chủ.
  • MySQL hoặc MariaDB: MySQLMariaDB là cơ sở dữ liệu được dùng để lưu trữ tất cả thông tin trên website
  • PHP-FPM: PHP đảm nhiệm xử lý các nhiệm vụ cần thiết hoặc kết nối với cơ sở dữ liệu mục đích để lấy thông tin cần thiết sau đó trả về cho Nginx trả kết quả nhận được về cho Client.

Yêu cầu trước khi cài LEMP cho Ubuntu

Trong bài viết này MZE sẽ cài các phần mềm trong LEMP theo các phiên bản

  1. Ubuntu 19.10
  2. NginX 1.16.1
  3. MySQL 8.0.20 hoặc MariaDB 10.4 (Stable)
  4. PHP 7.3

Điều kiện tiên quyết trước khi thực hiện bài viết này

  1. Chuẩn bị một Ubuntu Server mới
  2. Tài khoản người dùng trên máy chủ, có đặc quyền Sudo hoặc Root

Hướng Dẫn Cài LEMP Trên Ubuntu 19

Lưu ý trong bài viết này, MZE sử dụng tài khoản root, nếu bạn sử dụng tài khoản người dùng sẽ cần thêm Sudo trước câu lệnh

Update gói cài đặt trên Ubuntu server

Đầu tiên để cài đặt, chúng ta nên cập nhật thông tin các gói ứng dụng có sẵn của Ubuntu lên phiên bản mới nhất qua dòng lệnh

apt update

Sau khi đã cập nhật thông tin các gói phần mềm, chúng ta sẽ bắt đầu tiến hành các bước cài đặt

A. Cài Nginx HTTP Server

Để cài đặt Nginx Server từ Ubuntu Server bằng lệnh sau, thêm “-y” để bỏ qua dòng nhắc tiếp tục

apt install nginx -y

Output :

[email protected]:~# apt install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libnginx-mod-http-geoip libnginx-mod-http-image-filter
libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libtiff5 libwebp6 libxpm4 nginx-common nginx-core
Suggested packages:
libgd-tools fcgiwrap nginx-doc ssl-cert
The following NEW packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libnginx-mod-http-geoip libnginx-mod-http-image-filter
libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libtiff5 libwebp6 libxpm4 nginx nginx-common nginx-core
0 upgraded, 18 newly installed, 0 to remove and 64 not upgraded.
Need to get 2441 kB of archives.
After this operation, 7946 kB of additional disk space will be used.
Do you want to continue? [Y/n]

Nhấn “Y” để cài đặt

Sau khi quá trình cài đặt Nginx kết thúc, chúng ta sẽ khởi động NGINX, cho phép Nginx khởi động cùng hệ thống, và kiểm tra trạng thái hoạt động Nginx qua các dòng lệnh bên dưới

Khởi động Nginx

sudo systemctl start nginx

Cho phép Nginx khởi động cùng hệ thống

sudo systemctl enable nginx

Kiểm tra trạng thái Nginx hoạt động với

sudo service nginx status

hoặc

sudo systemctl status nginx
huong dan cai lemp tren ubuntu cai nginx nginx status
huong dan cai lemp tren ubuntu cai nginx nginx status

Kiểm tra trạng thái thiết lập NGINX, bạn hãy mở trình duyệt Web nhập vào địa chỉ http://your_IP hoặc http://your_domain, khi bạn thấy thông báo hiển thị như bên dưới thì Nginx đã hoạt động rồi đó

Trong đó:

  • Your_IP : địa chỉ IP máy chủ Web
  • Your_domain : tên miền của bạn

Document root mặc định của Nginx là /var/www/html

huong dan cai lemp tren ubuntu cai nginx
huong dan cai lemp tren ubuntu cai nginx

B. Cài đặt hệ quản trị Cơ sở dữ liệu

Trong bài viết này MZE sẽ hướng dẫn bạn cách để cài đặt và cấu hình cả 2 phần mềm là MySQL và MariaDB trên Ubuntu 19.10, bạn chỉ cần chọn 1 trong 2 cách để thực hiện

Cài MySQL và cấu hình trên Ubuntu quản lý cơ sở dữ liệu

Để cài MySQL, chúng ta sẽ sử dụng lệnh bên dưới, hãy thêm “-y” nếu không muốn xuất hiện dòng nhắc tiếp tục cài đặt

sudo apt install mysql-server

Output : các gói cài đặt đi kèm MySQL sẽ được liệt kê bên như bên dưới

[email protected]:~# apt install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-6 libfcgi-perl
libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl
libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libtimedate-perl
liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0
mysql-common mysql-server-8.0 mysql-server-core-8.0
Suggested packages:
libdata-dump-perl libipc-sharedcache-perl libwww-perl mailx tinyca
The following NEW packages will be installed:
libcgi-fast-perl libcgi-pm-perl libencode-locale-perl libevent-core-2.1-6 libfcgi-perl
libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl
libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libtimedate-perl
liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0
mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0
0 upgraded, 24 newly installed, 0 to remove and 64 not upgraded.
Need to get 30.3 MB of archives.
After this operation, 246 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Sau khi quá trình cài đặt đã hoàn tất, chúng ta sẽ phải cần cấu hình bảo mật cho MySQL hãy xem thêm bài viết tại đây

Cài MariaDB và cấu hình trên Ubuntu quản lý cơ sở dữ liệu

Xem thêm hướng dẫn cài đặt MariaDB trên Ubuntu

C. Cài đặt PHP Xử lý và các module liên quan

Chúng ta đã thực hiện các bước để cài MySQL hay MariaDB để quản lý cơ sở dữ liệu và Nginx làm Web Server, tuy nhiên vẫn chưa có thể xử lý được dữ liệu và các web động, vì vậy bước tiếp theo chúng ta sẽ đi cài PHP-FPM để xử lý vấn đề này

Để cài đặt php-fpm (fastCGI process manager) và php-mysql

sudo apt install php-fpm php-mysql

Output : Các gói đề xuất và các gói sẽ được cài đặt đi kèm như bên dưới

[email protected]:~# apt install php-fpm
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
php-common php7.3-cli php7.3-common php7.3-fpm php7.3-json php7.3-opcache php7.3-readline
Suggested packages:
php-pear
The following NEW packages will be installed:
php-common php-fpm php7.3-cli php7.3-common php7.3-fpm php7.3-json php7.3-opcache
php7.3-readline
0 upgraded, 8 newly installed, 0 to remove and 65 not upgraded.
Need to get 3987 kB of archives.
After this operation, 17.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Nhấn “Y” để tiếp tục cài đặt

Chú ý: (tùy chọn)

Tùy thuộc vào nhà cung cấp host của bạn, có thể bạn phải cần thêm kho lưu trữ (universe repository) trên Ubuntu, nó được bao gồm phần mềm miễn phí và nguồn mở được duy trì bởi cộng đồng Ubuntu, trước khi cài đặt gói php-fpm, để thực hiện bạn hãy sử dụng lệnh

sudo add-apt-repository universe

Trong quá trình cài đặt, chúng ta có thể cài thêm một số module trợ giúp PHP, hoặc sử dụng lệnh bên dưới, hoặc loại bỏ các module (nếu không dùng)

apt install php7.3-fpm php7.3-common php7.3-zip php7.3-curl php7.3-mbstring php7.3-xml php7.3-xmlrpc php7.3-json php7.3-mysql php7.3-pdo php7.3-gd php7.3-imagick php7.3-ldap php7.3-imap php7.3-intl php7.3-cli php7.3-recode php7.3-tidy php7.3-opcache php7.3-bcmath

Hoặc có thể dùng câu lệnh rút gọn này, hãy thêm các module khác trong dấu {}

sudo apt install php7.3-{fpm,common,mbstring,xmlrpc,soap,gd,xml,intl,mysql,cli,zip,curl,bcmath,bz2} -y

Sau khi cài đặt hoàn thành, để kiểm tra phiên bản PHP đang sử dụng được cài đặt trên máy, hãy sử dụng câu lệnh

php -v

Output :

[email protected]:~# php -v
PHP 7.3.11-0ubuntu0.19.10.4 (cli) (built: Apr 8 2020 18:58:29) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.11-0ubuntu0.19.10.4, Copyright (c) 1999-2018, by Zend Technologies

File cấu hình mặc định PHP

/etc/php/7.3/fpm/php.ini

Tham khảo thêm cách cài đặt PHP 7.x trên Ubuntu 18.04, và chuyển đổi các phiên bản PHP đang sử dụng trên cùng Server

Sau khi cài đặt PHP hoàn thành là bạn đã cài đặt đủ các thành phần trong LEMP Stack, các thành phần cần thiết cho Web Server bao gồm LINUX, NGINX, MySQL/MariaDB, PHP

D. Cấu hình Nginx

1. Chỉnh sửa file cấu hình mặc định trên Nginx

Sau khi thực hiện các bước bên trên là bạn đã cài đặt tất cả các thành phần LEMP stack cần thiết, nhưng chúng ta vẫn cần thực hiện một vài thay đổi cấu hình để yêu cầu Nginx sử dụng bộ xử lý PHP cho nội dung động

Tìm file Virtual host Nginx trong thư mục /etc/nginx/sites-available, sử dụng lệnh nano để mở file qua command

sudo nano /etc/nginx/sites-available/default

Tìm và thay đổi các trường dữ liệu trong file cấu hình default theo bên dưới

server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name default_server;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}

location ~ /\.ht {
deny all;
}
}

Save và thoát file

Trong đó :

  • Listen : Xác định cổng nào Nginx sẽ lắng nghe. Trong trường hợp này, nó sẽ lắng nghe trên cổng 80, cổng mặc định cho HTTP
  • Thay đổi server_name default_server bằng tên miền
  • Thêm “index.php” ngay dòng index
  • Sửa đường dẫn phù hợp
  • Chỉnh sửa nội dung trong location ~ \.php$

2. Cấu hình Virtual host trên Nginx ( Tùy chọn )

Điều này được thực hiện ở cấp độ khối máy chủ (các khối máy chủ tương tự như các máy chủ ảo Apache).

Để thực hiện việc này, hãy mở tệp cấu hình khối máy chủ mới trong thư mục /etc/nginx/sites-available/. Trong ví dụ này, file cấu hình khối máy chủ mới được đặt tên là mzengineer.com.conf, bạn cũng có thể đặt tên theo tên gì mà bạn muốn

sudo nano /etc/nginx/sites-available/mzengineer.com.conf
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name mzengineer.com;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}

location ~ /\.ht {
deny all;
}
}

Save và exit,

Để cho phép Block máy chủ mới của bạn hoạt động hãy tạo một liên kết tượng trưng từ tệp cấu hình khối máy chủ mới của bạn trong thư mục /etc/nginx/sites-available/ vào thư mục /etc /nginx/sites-enable/ qua dòng lệnh

sudo ln -s /etc/nginx/sites-available/mzengineer.com.conf /etc/nginx/sites-enabled/

Nếu bạn cần hãy hủy liên kết cấu hình mặc định bằng lệnh

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

Lưu ý :

Nếu bạn cần sử dụng lại cấu hình mặc định, chúng ta có thể tạo lại liên kết tượng trưng qua dòng lệnh

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

3. Kiểm tra file cấu hình Nginx

Sau khi thực hiện chỉnh sửa file cấu hình Nginx, bạn cần kiểm tra lại lỗ cú pháp (nếu có) trong file cấu hình mới bằng lệnh

sudo nginx -t

Nếu hiển thị như bên dưới là thành công, file cấu hình mới không gặp lỗi khi hoạt động

[email protected]:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Khi đã sẵn sàng, chúng ta sẽ cần tải lại Nginx để thực hiện các thay đổi cần thiết, để tránh gián đoạn quá trình truy cập, bạn có thể sử dụng lệnh

sudo systemctl reload nginx

Hoặc khởi động lại Nginx bằng lệnh

sudo systemctl restart nginx

E. Kiểm tra cài đặt PHP với Nginx

Tạo file info.php, save file ở thư mục đường dẫn /var/www/html

sudo nano /var/www/html/info.php

Sau đó thêm đoạn code bên dưới vào file info.php, xem thêm sử dụng lệnh nano để biết cách chỉnh sửa file

<?php 
phpinfo( );
?>

Save và exit,

Khởi động lại php-fpm và Nginx bằng lệnh

sudo systemctl restart php7.3-fpm
sudo nginx -s reload

Bây giờ bạn có thể kiểm tra cài đặt Nginx và PHP thông qua file info.php bằng trình duyệt, hãy mở trình duyệt lên, sau đó nhập http://your_IP/info.php hoặc http://your_domain/info.php, chúng ta sẽ thấy một trang web được tạo bởi PHP với thông tin về máy chủ của bạn, nếu xuất hiện như hình bên dưới thì bạn đã thiết lập PHP xử lý với Nginx thành công.

huong dan cai lemp tren ubuntu info php
huong dan cai lemp tren ubuntu info php

Lưu ý :

Sau khi xem các thông tin cần thiết, bạn nên xóa file info.php để tránh sự dòm ngó từ bên ngoài, hạn chế sự xâm nhập trái phép từ các hacker nhé, sử dụng lệnh bên dưới để remove file info.php, thay đổi đường dẫn lưu source code nếu cần thiết, ở đây MZE sử dụng đường dẫn mặc định là /var/www/html

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

F. Cho phép LEMP bật khi khởi động

1. Kiểm tra trạng thái hoạt động Nginx, MySQL, PHP

sudo systemctl status mysql
sudo systemctl status nginx
sudo systemctl status php7.3-fpm (hãy thay phiên bản php phù hợp câu lệnh)

Khi cài đặt Nginx, MySQL, PHP-FPM mặc định sẽ khởi động cùng hệ thống khi reboot, nếu chưa được bật khởi động cùng hệ thống, bạn hãy sử dụng các lệnh bên dưới

sudo systemctl enable mysql
sudo systemctl enable nginx
sudo systemctl enable php7.3-fpm (hãy thay phiên bản php phù hợp câu lệnh)

G. Bật Firewall (Tùy chọn)

Nếu bạn sử dụng UFW (Uncomplicated Firewall) trên máy chủ của mình, hãy bật tường lửa cho phép lưu lượng truy cập web

Liệt kê các cấu hình ứng dụng trên UFW

sudo ufw app list

Output : có 3 profile có sẵn cho Nginx trên UFW

[email protected]:~# sudo ufw app list
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Trong đó:

  • Nginx Full : profile này sẽ mở cả 2 port 80 và 443 trên UFW
  • Nginx HTTP : profile này sẽ mở port 80
  • Nginx HTTPS : profile này sẽ mở port 443

Trước khi bật tường lửa UFW, hãy đảm bảo bạn thêm quy tắc cho SSH, nếu không bạn có thể bị khóa khỏi máy chủ nếu bạn kết nối từ xa

sudo ufw allow OpenSSH
  1. Kiểm tra trạng thái Firewall trên Ubuntu, trường hợp chưa bật Firewall bạn sẽ nhận được thông báo inactive
sudo ufw status

Output :

Status: active

To Action From
-- ------ ----
Nginx HTTP ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH ALLOW Anywhere
Nginx HTTP (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)

2. Bật chức năng Firewall

sudo ufw enable

3. Tắt chức năng Firewall

sudo ufw disable

4. Kiểm tra các cổng được kích hoạt cho Nginx (Nginx Full profile)

sudo ufw app info "Nginx Full"

5. Cho phép traffic các cổng trên Firewall với Nginx Full profile

sudo ufw allow in "Nginx Full"

H. Phân quyền thư mục và file

Chúng ta cần phân quyền để sau này có thể cài đặt source code chạy website, thì folder đó phải được gán quyền sở hữu của user www-data

sudo chown -R www-data:www-data /var/www/html

Trong đó:

/var/www/html : là Document root mặc định của Nginx, bạn có thể thay thế đường dẫn này cho phù hợp với vị trí lưu trữ source code

Lời kết

LEMP stack là một nền tảng mạnh mẽ cho phép bạn có thể thiết lập và phục vụ gần như bất kỳ trang web hoặc ứng dụng nào từ máy chủ của bạn.

Như vậy trong bài viết này, MZE đã hướng dẫn bạn làm thế nào để cài LEMP trên Ubuntu, và các tùy chỉnh Nginx, cấu hình PHP để sử dụng, bạn cần lưu ý vấn đề phân quyền folder của user www-data nhằm tránh các lỗi trong quá trình sử dụng.

Nếu bài viết có ích hãy LikeShare, và đừng quên đánh giá bài viết bên dưới nhé.

Nguồn MzEngineer.com

LEAVE A REPLY

Please enter your comment!
Please enter your name here