Thứ ba, 04/09/2018 | 00:00 GMT+7

Cách cài đặt Nginx trên Debian 9

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. Nó thân thiện với tài nguyên hơn Apache trong hầu hết các trường hợp và đượ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 cách cài đặt Nginx trên server Debian 9 của bạn.

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 , không phải root với các quyền sudo được cấu hình trên server của bạn và một firewall đang hoạt động. Bạn có thể tìm hiểu cách cài đặt những điều này theo hướng dẫn cài đặt server ban đầu của ta cho Debian 9 .

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 repository lưu trữ mặc định của Debian, nên có thể cài đặt nó từ các kho này bằng cách sử dụng trình cài đặt gói apt .

Vì đây là lần tương tác đầu tiên của ta với trình cài đặt gói apt trong phiên này, hãy cũng cập nhật index gói local của ta để 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 của bạn.

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ụ.

Liệt kê các cấu hình ứng dụng mà ufw biết cách làm việc 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 ...

Như bạn thấy , 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 . Vì ta chưa cấu hình SSL cho server của bạn trong hướng dẫn này, 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ể kiểm tra thay đổi bằng lệnh :

  • sudo ufw status

Bạn sẽ thấy truy cập HTTP được phép trong kết quả được hiển thị:

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, Debian 9 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 Tue 2018-09-04 18:15:57 UTC; 3min 28s ago Docs: man:nginx(8) Process: 2402 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 2399 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 2404 (nginx) Tasks: 2 (limit: 4915) CGroup: /system.slice/nginx.service ├─2404 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2405 nginx: worker process

Như bạn thấy ở trên, dịch vụ có vẻ chạy thành công . Tuy nhiên, cách tốt nhất để kiểm tra là thực sự 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 của bạn. Nếu bạn không biết địa chỉ IP của server của bạn , hãy thử nhập địa chỉ này vào dấu nhắc lệnh của server :

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Bạn sẽ nhận lại được một vài dòng. Bạn có thể thử từng cái trong trình duyệt web của bạn để xem chúng có hoạt động không.

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ẽ thấy trang đích Nginx mặc định:

Trang mặc định của Nginx

Trang này được bao gồm với Nginx để cho bạn biết rằng server đang chạy chính xác.

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

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

Để dừng web server của bạn, 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 có thể reload 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ể tắt 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

Bước 5 - Cài đặt khối server

Khi sử dụng web server Nginx, các khối server (tương tự như server ảo 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 một domain có tên là example.com , nhưng bạn nên thay thế domain này bằng domain của bạn . Để tìm hiểu thêm về cách cài đặt domain với DigitalOcean, hãy xem phần giới thiệu của ta về DigitalOcean DNS .

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

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

  • sudo mkdir -p /var/www/example.com/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/example.com/html

Các quyền của root 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 bạn , nhưng bạn có thể đảm bảo bằng lệnh :

  • sudo chmod -R 755 /var/www/example.com

Tiếp theo, tạo một trang index.html mẫu bằng nano hoặc trình soạn thảo yêu thích của bạn :

  • nano /var/www/example.com/html/index.html

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

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

Lưu file 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 khối server với các lệnh chính xác. 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/ example.com :

  • sudo nano /etc/nginx/sites-available/example.com

Dán vào đoạn 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 của ta :

/etc/nginx/sites-available/example.com
server {         listen 80;         listen [::]:80;          root /var/www/example.com/html;         index index.html index.htm index.nginx-debian.html;          server_name example.com www.example.com;          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 của ta .

Tiếp theo, hãy kích hoạt file bằng cách tạo một 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/example.com /etc/nginx/sites-enabled/

Hai khối server 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 ):

  • example.com : Sẽ phản hồi các yêu cầu cho example.comwww.example.com .
  • 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.

Để tránh sự cố bộ nhớ group băm có thể phát sinh 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 :

/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 rằng không có lỗi cú pháp nào trong các file Nginx nào của bạn:

  • sudo nginx -t

Nếu không có sự cố nào , bạn sẽ thấy kết quả sau:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Sau khi kiểm tra cấu hình của bạn vượt qua, 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:// example.com , nơi bạn sẽ thấy thông tin như sau:

Khối  server  đầ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 tự 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 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 từ folder /var/www/html . Điều này có thể được thay đổi bằng cách thay đổi các file cấu hình Nginx.

Cấu hình server

  • /etc/nginx : Thư mục cấu hình Nginx. Tất cả các file 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 để áp dụng các thay đổi đối với cấu hình global của Nginx.
  • /etc/nginx/sites-available/ : Thư mục nơi có thể lưu trữ các khối server 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 khối server đượ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.
  • /etc/nginx/sites-enabled/ : Thư mục lưu trữ các khối server 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 : 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à thành phần tốt để cấu trúc lại thành các đoạn mã.

Nhật ký server

  • /var/log/nginx/access.log : Mọi yêu cầu đến web server của bạn đều được ghi lại trong file log này trừ khi Nginx được 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 log này.

Kết luận

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


Tags:

Các tin liên quan

Cách cài đặt Nginx trên Ubuntu 18.04 [Quickstart]
2018-07-23
Cách cung cấp các ứng dụng Flask với Gunicorn và Nginx trên Ubuntu 18.04
2018-07-13
Cách di chuyển web root Nginx đến vị trí mới trên Ubuntu 18.04
2018-07-12
Cách cấu hình Jenkins với SSL bằng Nginx Reverse Proxy trên Ubuntu 18.04
2018-07-10
Cách thiết lập Django với Postgres, Nginx và Gunicorn trên Ubuntu 18.04
2018-07-09
Cách tạo chứng chỉ SSL tự ký cho Nginx trong Ubuntu 18.04
2018-07-05
Cách bảo mật Nginx bằng Let's Encrypt trên FreeBSD
2018-07-02
Cách bảo mật Nginx bằng Let's Encrypt trên Ubuntu 18.04
2018-04-27
Cách cài đặt và bảo mật phpMyAdmin với Nginx trên Ubuntu 16.04
2018-04-12
Cách lưu trữ trang web bằng Cloudflare và Nginx trên Ubuntu 16.04
2018-03-15