Trang chủ / Chuyên đề / Cài đặt Nginx trên Ubuntu 20.04
Thứ sáu, 24/04/2020 | 00:00 GMT+7

Cài đặt Nginx trên Ubuntu 20.04

Nginx là một trong những web server phổ biến nhất trên thế giới và chịu trách nhiệm lưu trữ một số trang web lớn nhất và có lưu lượng truy cập cao nhất trên internet. Đây là một lựa chọn tốt được dùng như một web server hoặc Reverse Proxy.

Trong hướng dẫn này, ta sẽ thảo luận về cách cài đặt Nginx trên server Ubuntu 20.04, điều chỉnh firewall, quản lý tiến trình Nginx và cài đặt server block để lưu trữ nhiều domain từ một server duy nhất.

Yêu cầu

Trước khi bắt đầu hướng dẫn này, bạn nên có một regular user (user-thường), không phải root có các quyền sudo được cấu hình trên server. Bạn có thể tìm hiểu cách cấu hình account regular user (user-thường) theo Hướng dẫn cài đặt server ban đầu cho Ubuntu 20.04 .

Khi bạn có account, hãy đăng nhập với quyền user không phải root của bạn để bắt đầu.

Bước 1 - Cài đặt Nginx

Vì Nginx có sẵn trong các repository mặc định của Ubuntu, bạn có thể cài đặt nó từ các kho này bằng cách sử dụng trình apt .

Vì đây là lần tương tác đầu tiên với trình cài đặt gói apt trong phiên này, ta sẽ cập nhật index gói local để ta có quyền truy cập vào danh sách gói mới nhất. Sau đó, ta có thể cài đặt nginx :

  • sudo apt update
  • sudo apt install nginx

Sau khi chấp nhận quy trình, apt sẽ cài đặt Nginx và mọi phụ thuộc vào server.

Bước 2 - Điều chỉnh firewall

Trước khi thử nghiệm Nginx, phần mềm firewall cần được điều chỉnh để cho phép truy cập vào dịch vụ. Nginx tự đăng ký như một dịch vụ với ufw khi cài đặt, giúp cho phép Nginx truy cập dễ dàng.

Liệt kê các cấu hình ứng dụng mà ufw biết bằng lệnh:

  • sudo ufw app list

Bạn sẽ nhận được một danh sách các profile ứng dụng:

Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Như được mô tả trong kết quả, có ba cấu hình có sẵn cho Nginx:

  • Nginx Full : Cấu hình này mở cả cổng 80 (truy cập web bình thường, không được mã hóa) và cổng 443 (truy cập được mã hóa TLS / SSL)
  • Nginx HTTP : Cấu hình này chỉ mở cổng 80 (truy cập web bình thường, không được mã hóa)
  • Nginx HTTPS : Cấu hình này chỉ mở cổng 443 (truy cập được mã hóa TLS / SSL)

Bạn nên bật cấu hình chặn tối đa mà vẫn cho phép lưu lượng bạn đã cấu hình. Ngay bây giờ, ta sẽ chỉ cần cho phép lưu lượng truy cập trên cổng 80.

Bạn có thể kích hoạt tính năng này bằng lệnh:

  • sudo ufw allow 'Nginx HTTP'

Bạn có thể xác minh thay đổi bằng lệnh:

  • sudo ufw status

Kết quả sẽ cho biết truy cập HTTP nào được phép:

Output
Status: active

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

Bước 3 - Kiểm tra Server Web của bạn

Khi kết thúc quá trình cài đặt, Ubuntu 20.04 khởi động Nginx. Web server đã được cài đặt và đang chạy.

Ta có thể kiểm tra bằng systemd init đảm bảo dịch vụ đang chạy bằng lệnh:

  • systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   Memory: 3.5M
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

Như trên, dịch vụ đã chạy thành công. Tuy nhiên, cách tốt nhất để kiểm tra là truy cập một trang từ Nginx.

Bạn có thể truy cập trang đích Nginx mặc định để xác nhận phần mềm đang chạy đúng cách bằng cách chuyển đến địa chỉ IP của server. Nếu bạn không biết địa chỉ IP của server, bạn có thể tìm  bằng cách sử dụng công cụ icanhazip.com, công cụ này sẽ cung cấp cho bạn địa chỉ IP công cộng của bạn khi nhận được từ một vị trí khác trên internet:

  • curl -4 icanhazip.com

Khi bạn có địa chỉ IP của server, hãy nhập địa chỉ đó vào thanh địa chỉ của trình duyệt:

http://your_server_ip

Bạn sẽ nhận được trang đích Nginx mặc định:

Trang mặc định của Nginx

Nếu bạn đang ở trang này, server đang chạy chính xác và sẵn sàng được quản lý.

Bước 4 - Quản lý Tiến trình Nginx

Đến đây bạn đã cài đặt và chạy web server, hãy xem lại một số lệnh quản lý cơ bản.

Để dừng web server, hãy nhập:

  • sudo systemctl stop nginx

Để khởi động web server khi nó bị dừng, hãy nhập:

  • sudo systemctl start nginx

Để dừng và sau đó bắt đầu lại dịch vụ, hãy nhập:

  • sudo systemctl restart nginx

Nếu bạn chỉ thực hiện thay đổi cấu hình, Nginx thường có thể tải lại mà không làm mất kết nối. Để làm điều này, hãy nhập:

  • sudo systemctl reload nginx

Theo mặc định, Nginx được cấu hình để khởi động tự động khi server khởi động. Nếu bạn không muốn vậy, bạn có thể vô hiệu hóa hành vi này bằng lệnh:

  • sudo systemctl disable nginx

Để bật lại dịch vụ khởi động khi server khởi động, có thể chạy lệnh:

  • sudo systemctl enable nginx

Đến đây bạn đã học các lệnh quản lý cơ bản và đã sẵn sàng để cấu hình trang web để lưu trữ nhiều hơn một domain.

Khi sử dụng web server Nginx, các server block (tương tự như VirtualHost trong Apache) được dùng để đóng gói chi tiết cấu hình và lưu trữ nhiều domain từ một server duy nhất. Ta sẽ cài đặt domain có tên your_domain , nhưng bạn nên thay thế domain này bằng domain của riêng bạn

Nginx trên Ubuntu 20.04 có một server block được bật theo mặc định được cấu hình để cung cấp tài liệu ở folder /var/www/html . Mặc dù điều này hoạt động tốt cho một trang web nhưng nó có thể trở nên khó sử dụng nếu bạn đang lưu trữ nhiều trang web. Thay vì sửa đổi /var/www/html , hãy tạo cấu trúc folder trong /var/www cho trang web your_domain , giữ nguyên /var/www/html làm folder mặc định để đáp ứng các truy cập mặc định.

Tạo folder cho your_domain như sau:

  • sudo mkdir -p /var/www/your_domain/html

Tiếp theo, chỉ định quyền sở hữu folder với biến môi trường $USER :

  • sudo chown -R $USER:$USER /var/www/your_domain/html

Đảm bảo các quyền của bạn là chính xác và cho phép chủ sở hữu đọc, ghi và thực thi các file trong khi chỉ cấp quyền đọc và thực thi cho các group và những người khác, bạn có thể nhập lệnh sau:

  • sudo chmod -R 755 /var/www/your_domain

Tiếp theo, tạo một trang index.html mẫu bằng nano hoặc editor bạn quen dùng:

  • nano /var/www/your_domain/html/index.html

Bên trong, thêm HTML mẫu sau:

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

Lưu file bằng lệnh CTRLX rồi đến YENTER khi bạn hoàn tất.

Để Nginx phân phát nội dung này, bạn cần tạo một server block. Thay vì sửa đổi trực tiếp file cấu hình mặc định, hãy tạo một file mới tại /etc/nginx/sites-available/your_domain :

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

Paste vào khối cấu hình sau, khối này tương tự như khối mặc định, nhưng được cập nhật cho folder và domain mới :

/ etc / nginx / sites-available / your_domain
server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

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

Lưu ý ta đã cập nhật cấu hình root vào folder mới và server_name thành domain .

Tiếp theo, hãy kích hoạt file bằng cách tạo liên kết từ nó đến folder sites-enabled , mà Nginx đọc từ đó trong khi khởi động:

  • sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Hai server block hiện đã được kích hoạt và được cấu hình để phản hồi các yêu cầu dựa trên các lệnh listenserver_name (bạn có thể đọc thêm về cách Nginx xử lý các lệnh này tại đây ):

  • your_domain : Sẽ phản hồi các yêu cầu cho your_domainwww.your_domain .
  • default : Sẽ phản hồi bất kỳ yêu cầu nào trên cổng 80 không trùng với hai khối còn lại.

Để lỗi có thể xảy ra khi thêm tên server bổ sung, cần phải điều chỉnh một giá trị duy nhất trong file /etc/nginx/nginx.conf . Mở tập tin:

  • sudo nano /etc/nginx/nginx.conf

Tìm chỉ thị server_names_hash_bucket_size và xóa ký hiệu # để bỏ comment. Nếu bạn đang sử dụng nano, bạn có thể nhanh chóng tìm kiếm các từ trong file bằng cách nhấn CTRLw .

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Lưu file khi bạn hoàn tất.

Tiếp theo, hãy kiểm tra đảm bảo không có lỗi cú pháp trong các file Nginx của bạn:

  • sudo nginx -t

Nếu không có sự cố nào, hãy khởi động lại Nginx để kích hoạt các thay đổi:

  • sudo systemctl restart nginx

Nginx bây giờ sẽ cho truy cập domain của bạn. Bạn có thể kiểm tra bằng cách chuyển đến http:// your_domain , nơi bạn sẽ thấy thông tin như sau:

Server block đầu tiên của Nginx

Bước 6 - Làm quen với các file và folder Nginx quan trọng

Đến đây bạn đã biết cách quản lý dịch vụ Nginx, bạn nên dành vài phút để tự làm quen với một số folder và file quan trọng.

Nội dung

  • /var/www/html : Nội dung web mặc định chỉ bao gồm trang Nginx mặc định mà bạn đã xem trước đó. 

Cấu hình server

  • /etc/nginx : Folder cấu hình Nginx. Tất cả các file cấu hình Nginx đều nằm ở đây.
  • /etc/nginx/nginx.conf : File cấu hình Nginx chính. Điều này có thể được sửa đổi để thực hiện các thay đổi đối với cấu hình global của Nginx.
  • /etc/nginx/sites-available/ : Folder có thể lưu trữ các server block trên mỗi trang web. Nginx sẽ không sử dụng các file cấu hình được tìm thấy trong folder này trừ khi chúng được liên kết với folder sites-enabled . Thông thường, tất cả cấu hình server block được thực hiện trong folder này, và sau đó được kích hoạt bằng cách liên kết đến folder khác (xem cái tiếp theo).
  • /etc/nginx/sites-enabled/ : Folder lưu trữ các server block cho mỗi trang. Thông thường, chúng được tạo bằng cách liên kết đến các file cấu hình được tìm thấy trong folder sites-available của sites-available .
  • /etc/nginx/snippets : Folder này chứa các đoạn cấu hình lặp lại có thể được bao gồm ở những nơi khác trong cấu hình Nginx.

Log server

  • /var/log/nginx/access.log : Mọi yêu cầu đến web server đều được ghi lại trong file log này.
  • /var/log/nginx/error.log : Mọi lỗi Nginx sẽ được ghi lại trong log này.

Kết luận

Đến đây bạn đã cài đặt web server, bạn có nhiều tùy chọn về nội dung web và các công nghệ bạn muốn sử dụng để tạo ra trải nghiệm phong phú hơn.

Nếu bạn muốn xây dựng một ứng dụng hoàn chỉnh hơn, hãy xem bài viết Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên Ubuntu 20.04 .



Các tin trước

Khởi tạo bảo mật Server Ubuntu 20.04 2020-04-23

Cài đặt SSH Key trên Ubuntu 20.04 2020-04-23

Cài đặt MySQL trên Ubuntu 18.04 2020-04-21

Cài đặt và bảo mật phpMyAdmin trên Ubuntu 18.04 2020-04-21

Cài đặt Webserver Apache trên CentOS 7 2019-05-29

So sánh SQLite , MySQL , PostgreSQL 2019-03-19

Cài đặt và sử dụng Docker trên Ubuntu 16 2018-10-19

Cài đặt và sử dụng Composer trên Ubuntu 18.04 2018-10-16

Cài đặt WordPress với LAMP trên Ubuntu 18.04 2018-07-06

Chuyển folder dữ liệu Mysql tới vị trí mới trên Ubuntu 18.04 2018-07-06