Hướng dẫn cài đặt Nginx trên Ubuntu 20.04
BÀI VIẾT

Hướng dẫn cài đặt Nginx trên Ubuntu 20.04

17.0K
author Tuấn Ngọc Nguyễn - 2021-12-23 13:39:02 (GMT+7)

Bạn không sử dụng Ubuntu 20.04?
Xem bài viết cho các distro khác

Giới thiệu

Nginx là web server mã nguồn mở, được tạo ra để đáp ứng nhu cầu về dịch vụ web, reverse proxy, caching, cân bằng tải, media streaming và nhiều tính năng khác. Nginx được thiết kế để có hiệu suất và độ ổn định tối đa. Được phát hành năm 2004, đến nay Nginx đã dần thay thế web server Apache bởi các ưu điểm tuyệt vời của nó.

Ngoài phục vụ cho dịch vụ web (HTTP), Nginx còn được dùng làm reverse proxy cho email (IMAP, POP3, SMTP), đồng thời làm reverse proxy và cân bằng tải cho TCP và UDP.

Bài viết dưới đây sẽ hướng dẫn bạn cài đặt Nginx trên Ubuntu 20.04.

Yêu cầu

  • Hệ thống chạy Ubuntu 20.04
  • Người dùng có quyền sudo hoặc quyền root
  • Sử dụng command-line trên terminal
  • Đã cài phần mềm curl

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

  1. Một điều vô cùng quan trọng trước khi cài một phần mềm mới, bạn phải cập nhật danh sách repository của mình. Hãy mở terminal của mình và nhập dòng lệnh sau:
bash (non-root)
sudo apt-get update
  1. Bạn để yên cho hệ thống tự hoàn thành công việc của mình. Sau khi hoàn thành thì máy của bạn đã sẵn sàng cài Nginx từ repostitories rồi. Bạn chạy lệnh cài đặt Nginx:
bash (non-root)
sudo apt-get install nginx
  1. Kiểm tra nginx đã cài hay chưa thì bạn chỉ cần sử dụng lệnh sau:
bash (non-root)
nginx -v

Thời điểm hiện tại của bài viết Nginx đang ở ver 1.18.0.

Kết quả
nginx version: nginx/1.18.0 (Ubuntu)

Bước 2: Điều chỉnh Firewall

Bạn cần phải cấu hình tường lửa để Nginx có thể đáp ứng dịch vụ qua internet. Sử dụng lệnh ufw theo hướng dẫn sau:

  1. Kiểm tra uwf có hoạt động không:
bash (non-root)
sudo ufw app list

Kết quả output của bạn nên xuất hiện các phần mềm của Nginx như sau:

Kết quả
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  1. Bạn có thể lựa chọn cho phép truy cập phần mềm HTTP bằng cách sau:
bash (non-root)
sudo ufw allow 'Nginx HTTP'
Kết quả
Rules updated
Rules updated (v6)
  1. Xác nhận phần mềm bạn chọn đã được thông qua hay chưa bằng lệnh:
bash (non-root)
sudo ufw status

Output của bạn nên có dạng như sau, nếu không hãy xem lại mình sai ở đâu và làm lại từ đầu.

Kết quả
Status: active

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

Bước 3: Kiểm tra web server

Nếu mọi chuyện đều thuận lợi thì bước này sẽ là bước kiểm tra xem Web Server của bạn có chạy bình thường hay không. Chúng ta sẽ check bằng systemd để đảm bảo service đang chạy:

bash (non-root)
systemctl status nginx

Nếu phần Active: của bạn đang running như mình thì mọi thứ đang chạy rồi!

Kết quả
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-12-14 05:56:20 PST; 4min 27s ago
       Docs: man:nginx(8)
   Main PID: 2308 (nginx)
      Tasks: 3 (limit: 2260)
     Memory: 3.6M
     CGroup: /system.slice/nginx.service
             ├─2308 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─2309 nginx: worker process
             └─2310 nginx: worker process

Tuy nhiên, cách thiết thực nhất chính là mở trình duyệt, truy cập vào địa chỉ http://dia_chi_ip_server Nếu trang web Welcome to nginx hiện ra, nghĩa là web server của bạn đang hoạt động.

Default Nginx Landing Page

Bước 4: Quản lý dịch vụ Nginx

Bởi vì Nginx được quản lý bằng systemd cho nên muốn điều chỉnh bạn phải sử dụng công cụ systemctl. Bây giờ chúng ta sẽ đi qua các lệnh quản lý cơ bản:

  • Khởi động Web Server
bash (non-root)
sudo systemctl start nginx
  • Dừng Web Server
bash (non-root)
sudo systemctl stop nginx
  • Restart Web Server
bash (non-root)
sudo systemctl restart nginx
  • Reload Web Server mà không mất kết nối: Thường được sử dụng trong trường hợp bạn thay đổi cấu hình và muốn Nginx cập nhật cấu hình vừa thay đổi.
bash (non-root)
sudo systemctl reload nginx
  • Bật khởi động cùng hệ thống: Thao tác này sẽ giúp Nginx tự khởi động cùng hệ thống sau khi bạn khởi động lại máy chủ.
bash (non-root)
 sudo systemctl enable nginx
  • Tắt khởi động cùng hệ thống
bash (non-root)
 sudo systemctl disable nginx
  • Kiểm tra tình trạng của web server
bash (non-root)
 sudo systemctl status nginx

Bước 5: Cấu hình server block (virtual host)

Server block trong Nginx tương tự như Virtualhost trong Apache. Server block giúp bạn khai báo và chạy nhiều website với nhiều tên miền khác nhau trên cùng một máy chủ Nginx.

Trong các thao tác dưới đây mình sẽ sử dụng tên miền your_domain.com để tạo nên một website mới.

  1. Tạo thư mực /var/www/your_domain.com/html để chứa mã nguồn website.
bash (non-root)
sudo mkdir -p /var/www/your_domain.com/html
  1. Trao quyền và chủ sở hữu cho thư mục.
bash (non-root)
sudo chown –R $USER:$USER /var/www/your_domain.com
sudo chmod –R 755 /var/www/your_domain.com
  1. Tạo một file index.html tại /var/www/your_domain.com/html/ chứa nội dung sau:
/var/www/your_domain.com/index.html
<html>
    <head>
        <title>Server cua toi</title>
    </head>
    <body>
        <h1>Xin chao the gioi</h1>
    </body>
</html>
  1. Tạo file cấu hình nginx cho tên miền your_domain.com tại /etc/nginx/sites-available/your_domain bằng cách.
bash (non-root)
sudo nano /etc/nginx/sites-available/your_domain.com

Và ghi vào nội dung sau:

Lưu ý: Ở dòng rootserver_name, bạn sẽ phải thay đổi your_domain thành tên miền của bạn.

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

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

        server_name your_domain.com www.your_domain.com;

        location / {
                try_files $uri $uri/ =404;
        }
}
  1. Tạo một symbolic link để liên kết file /etc/nginx/sites-available/your_domain.com sang thư mục /etc/nginx/sites-enabled/. Nginx sẽ đọc các file cấu hình tại thư mục /etc/nginx/sites-enabled/ mỗi khi khởi động.
bash (non-root)
sudo ln -s /etc/nginx/sites-available/your_domain.cpm /etc/nginx/sites-enabled/
  1. Kiểm tra cấu hình bằng lệnh sau.
bash (non-root)
sudo nginx –t

Nếu output cũng như bên dưới thì bạn đã cấu hình chính xác rồi đấy

Kết quả
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  1. Khởi động lại Web Server bằng lệnh mình đã giới thiệu ở Bước 4: Quản lý dịch vụ Nginx.
bash (non-root)
sudo systemctl restart nginx
  1. Mở trình duyệt truy cập vào website http://your_domain.com để xem kết quả. Nếu ở bước này bạn không có tên miền, bạn có thể trỏ file hosts trên máy tính của mình để truy cập. Kết quả you_domain.com

Nếu như bạn chưa đăng kí tên miền, bạn có thể cấu hình file hosts trên máy tính để có thể truy cập website trên trình duyệt. Xem thêm hướng dẫn trỏ file hosts trên máy tính.

Bước 6: Các thư mục quan trọng trong Nginx

Bạn cần phải nắm các thư mục và các file cấu hình quan trọng của Nginx. Cụ thể:

1. Nội dung mã nguồn website:

  • /var/www/html/ – Đây là thư mục chứa nội dung mã nguồn website.

2. Các thư mục và file cấu hình của Nginx:

  • /etc/nginx/ – Thư mục chứa các file cấu hình của Nginx
  • /etc/nginx/nginx.conf – File config chính Nginx.
  • /etc/nginx/sites-available/ – Thư mục chứa các file cấu hình server block.
  • /etc/nginx/sites-enabled/ – Thư mục chứa Danh sách các server blocks được kích hoạt.

3. Các file log của Nginx, bao gồm access log và error log:

  • /var/log/nginx/access.log – Chứa các lịch sử request tới Web server của bạn (Bạn có thể thay đổi việc lưu log lại hay không).
  • /var/log/ngins/error.log – Chứa các lỗi từ Nginx.

Tổng kết

Nginx khá dễ để sử dụng nhưng không thiếu phần mạnh mẽ, bạn chỉ cần một tên miền, một chút kiến thức, cho phép tường lửa là có một Web Server của mình rồi. Nếu có bất kỳ câu hỏi nào cứ tự nhiên đặt câu hỏi ở phía dưới nhé, chúc bạn may mắn.


Bạn có làm được theo hướng dẫn này không?

Bài liên quan

Hướng dẫn cài đặt và cấu hình LEMP Stack trên CentOS 7
Hướng dẫn cài đặt và cấu hình LEMP Stack trên CentOS 7
Hướng dẫn cài đặt phần mềm thống kê web Umami trên Ubuntu 20.04
Hướng dẫn cài đặt phần mềm thống kê web Umami trên Ubuntu 20.04
Hướng dẫn cài đặt phần mềm thống kê web Ackee trên Ubuntu 20.04
Hướng dẫn cài đặt phần mềm thống kê web Ackee trên Ubuntu 20.04

Object Storage

Chuẩn S3, không giới hạn băng thông

Object Storage

Thuê Server Riêng

Chi phí thấp, cấu hình cao

Thuê Server Riêng
Thông tin tác giả
1 Bình luận

Tính năng đang được phát triển

Đang tải bình luận