ReactJS: Cách cài đặt Nginx trên Ubuntu

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Giới thiệu

Nginx là một trong những máy chủ web phổ biến nhất trên thế giới và chịu trách nhiệm lưu trữ một số lượng trang web lớn nhất và có lưu lượng truy cập cao nhất trên internet. Nó là một lựa chọn nhẹ có thể được sử dụng như một máy chủ web hoặc proxy ngược.

Trong bài hướng dẫn này, chúng tôi sẽ thảo luận về cách cài đặt Nginx trên máy chủ Ubuntu của bạn, điều chỉnh tường lửa, quản lý quy trình Nginx và thiết lập khối máy chủ để lưu trữ nhiều miền từ một máy chủ duy nhất.

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

Trước khi bắt đầu hướng dẫn này, bạn nên có một người dùng thông thường, không phải root có đặc quyền sudo được định cấu hình trên máy chủ của bạn. Bạn có thể tìm hiểu cách định cấu hình tài khoản người dùng thông thường bằng cách làm theo Hướng dẫn thiết lập máy chủ ban đầu cho Ubuntu của chúng tôi.

Khi bạn có sẵn tài khoản, hãy đăng nhập với tư cách là người dùng 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 kho lưu trữ mặc định của Ubuntu, nên có thể cài đặt nó từ các kho này bằng cách sử dụng hệ thống đóng gói apt.

Vì đây là lần tương tác đầu tiên của chúng tôi với hệ thống đóng gói apt trong phiên này, chúng tôi sẽ cập nhật chỉ mục gói cục bộ của mình để chúng tôi có quyền truy cập vào danh sách gói gần đây nhất. Sau đó, chúng 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à bất kỳ phụ thuộc bắt buộc nào vào máy chủ của bạn.

Bước 2 - Điều chỉnh tường lửa

Trước khi thử nghiệm Nginx, phần mềm tường lửa 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ụ ufw khi cài đặt, giúp dễ dàng cho phép truy cập Nginx.

Liệt kê các cấu hình ứng dụng mà ufw biết cách hoạt động bằng cách nhập:

sudo ufw app list

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

Output

Available applications:

  Nginx Full

  Nginx HTTP

  Nginx HTTPS

  OpenSSH

Như được chứng minh trong đầu ra, có ba cấu hình có sẵn cho Nginx:

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

Bạn nên bật cấu hình hạn chế nhất vẫn cho phép lưu lượng bạn đã định cấu hình. Ngay bây giờ, chúng tôi 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 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

Output sẽ cho biết lưu lượng 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 Máy chủ Web của bạn

Khi kết thúc quá trình cài đặt, Ubuntu khởi động Nginx. Máy chủ web đã được thiết lập và đang chạy.

Chúng tôi có thể kiểm tra bằng hệ thống khởi tạo systemd để đảm bảo dịch vụ đang chạy bằng cách nhập:

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ư đã xác nhận điều này, dịch vụ đã bắt đầu thành công. Tuy nhiên, cách tốt nhất để kiểm tra điều này là thực sự yêu cầu một trang từ Nginx.

Bạn có thể truy cập trang đích Nginx mặc định để xác nhận rằng phần mềm đang chạy đúng cách bằng cách điều hướng đến địa chỉ IP của máy chủ của bạn. Nếu bạn không biết địa chỉ IP của máy chủ của mình, bạn có thể tìm nó 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 máy chủ, 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, thì máy chủ của bạn đang chạy chính xác và sẵn sàng được quản lý.

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

Bây giờ bạn đã thiết lập và chạy máy chủ web của mình, hãy xem lại một số lệnh quản lý cơ bản.

Để dừng máy chủ web của bạn, hãy nhập:

sudo systemctl stop nginx

Để khởi động máy chủ web 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 rớ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 định cấu hình để khởi động tự động khi máy chủ khởi động. Nếu đây không phải là những gì bạn muốn, bạn có thể vô hiệu hóa hành vi này bằng cách nhập:

sudo systemctl disable nginx

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

sudo systemctl enable nginx

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

Bước 5 - Thiết lập khối máy chủ (Khuyến nghị)

Khi sử dụng máy chủ web Nginx, các khối máy chủ (tương tự như máy chủ ảo trong Apache) có thể được sử dụng để đóng gói chi tiết cấu hình và lưu trữ nhiều miền từ một máy chủ duy nhất. Chúng ta sẽ thiết lập một miền có tên your_domain, nhưng bạn nên thay thế miền này bằng tên miền của riêng bạn .

Nginx trên Ubuntu có một khối máy chủ được bật theo mặc định được định cấu hình để cung cấp tài liệu ra khỏi một thư mục tại /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 thư mục bên trong /var/www cho trang your_domain của chúng ta, giữ nguyên /var/www/html làm thư mục mặc định sẽ được phục vụ nếu yêu cầu của khách hàng không khớp với bất kỳ trang web nào khác.

Tạo thư mục cho your_domain như sau, sử dụng cờ -p để tạo bất kỳ thư mục mẹ nào cần thiết:

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

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

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

Các quyền của gốc web của bạn phải chính xác nếu bạn chưa sửa đổi giá trị umask của mình, điều này sẽ đặt các quyền tệp mặc định. Để đảm bảo rằng 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 tệp trong khi chỉ cấp quyền đọc và thực thi cho các nhóm 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 mẫu index.html bằng cách sử dụng nano hoặc trình chỉnh sửa yêu thích của bạn:

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

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

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

Lưu và đóng tệp bằng cách nhấn Ctrl+X để thoát, sau đó khi được nhắc lưu, điền Y rồi nhấn Enter.

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

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

Dán 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 thư mục và tên miền mới của chúng ta:

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 ý rằng chúng ta đã cập nhật cấu hình root vào thư mục mới và server_name làm tên miền của chúng ta.

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

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

Lưu ý: Nginx sử dụng một phương pháp phổ biến được gọi là liên kết tượng trưng (hay symlinks) để theo dõi khối máy chủ nào của bạn được kích hoạt. Tạo một liên kết tượng trưng cũng giống như tạo một lối tắt trên đĩa, để sau này bạn có thể xóa lối tắt khỏi thư mục sites-enabled trong khi vẫn giữ khối máy chủ sites-available nếu bạn muốn bật nó.

Hai khối máy chủ hiện đã được kích hoạt và định cấu hình để phản hồi các yêu cầu dựa trên các chỉ thị listen và chỉ thị server_name của chúng (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ẽ trả lời các yêu cầu cho your_domain và www.your_domain.
  • default: Sẽ phản hồi bất kỳ yêu cầu nào trên cổng 80 không khớp với hai khối còn lại.

Để tránh sự cố bộ nhớ thùng băm có thể xảy ra khi thêm tên máy chủ 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 biểu tượng # để bỏ ghi chú dòng. Nếu bạn đang sử dụng nano, bạn có thể nhanh chóng tìm kiếm các từ trong tệp bằng cách nhấn CTRL và w.

Lưu ý: Nhận xét về các dòng mã - thường bằng cách đặt # ở đầu dòng - là một cách khác để tắt chúng mà không cần thực sự xóa chúng. Nhiều tệp cấu hình được cung cấp với nhiều tùy chọn được chú thích để chúng có thể được bật hoặc tắt, bằng cách chuyển đổi chúng giữa mã hoạt động và tài liệu.

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

Lưu và đóng tệp khi bạn hoàn tất.

Tiếp theo, hãy kiểm tra để đảm bảo rằng không có lỗi cú pháp nào trong bất kỳ tệp Nginx nào của bạn:

sudo nginx -t

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

sudo systemctl restart nginx

Nginx bây giờ sẽ cung cấp tên miền của bạn. Bạn có thể kiểm tra điều này bằng cách điều hướng đến http://your_domain, nơi bạn sẽ thấy một cái gì đó dạng như sau:

Khối máy chủ đầu tiên của Nginx

Bước 6 - Làm quen với các tệp và thư mục Nginx quan trọng

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

Nội dung

  • /var/www/html: Nội dung web thực tế, theo mặc định chỉ bao gồm trang Nginx mặc định mà bạn đã xem trước đó, được cung cấp ra khỏi thư mục /var/www/html. Điều này có thể được thay đổi bằng cách thay đổi các tệp cấu hình Nginx.

Cấu hình máy chủ

  • /etc/nginx: Thư mục cấu hình Nginx. Tất cả các tệp cấu hình Nginx đều nằm ở đây.
  • /etc/nginx/nginx.conf: Tệp 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 toàn cầu của Nginx.
  • /etc/nginx/sites-available/: Thư mục nơi có thể lưu trữ các khối máy chủ trên mỗi trang web. Nginx sẽ không sử dụng các tệp cấu hình được tìm thấy trong thư mục này trừ khi chúng được liên kết với thư mục sites-enabled. Thông thường, tất cả cấu hình khối máy chủ được thực hiện trong thư mục này, sau đó được kích hoạt bằng cách liên kết đến thư mục khác.
  • /etc/nginx/sites-enabled/: Thư mục lưu trữ các khối máy chủ cho mỗi trang web được kích hoạt. Thông thường, chúng được tạo bằng cách liên kết đến các tệp cấu hình được tìm thấy trong thư mục sites-available.
  • /etc/nginx/snippets: Thư mục này chứa các đoạn cấu hình có thể được đưa vào ở những nơi khác trong cấu hình Nginx. Các phân đoạn cấu hình có thể lặp lại tiềm năng là những ứng cử viên tốt để cấu trúc lại thành các đoạn mã.

Nhật ký máy chủ

  • /var/log/nginx/access.log: Mọi yêu cầu đến máy chủ web của bạn đều được ghi lại trong tệp nhật ký này trừ khi Nginx được định cấu hình để làm theo cách khác.
  • /var/log/nginx/error.log: Mọi lỗi Nginx sẽ được ghi lại trong nhật ký này.

Phần kết luận

Bây giờ bạn đã cài đặt xong máy chủ web của mình, bạn có nhiều tùy chọn về loại nội dung để phân phát 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ăn xếp ứ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 (ngăn xếp LEMP) trên Ubuntu.

Để thiết lập HTTPS cho tên miền của bạn với chứng chỉ SSL miễn phí bằng Let's Encrypt, bạn nên chuyển sang Cách bảo mật Nginx với Let's Encrypt trên Ubuntu.

» Tiếp: Hiểu về máy chủ Nginx và các thuật toán lựa chọn khối vị trí
« Trước: Cách thiết lập khóa SSH trên Ubuntu
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!